diff --git a/src/de/dhbwstuttgart/core/JavaTXCompiler.java b/src/de/dhbwstuttgart/core/JavaTXCompiler.java index 43f56d51..0fdcbb77 100644 --- a/src/de/dhbwstuttgart/core/JavaTXCompiler.java +++ b/src/de/dhbwstuttgart/core/JavaTXCompiler.java @@ -1,14 +1,19 @@ package de.dhbwstuttgart.core; +import de.dhbwstuttgart.exceptions.DebugException; +import de.dhbwstuttgart.parser.ClassNotFoundException; import de.dhbwstuttgart.parser.JavaTXParser; import de.dhbwstuttgart.syntaxtree.ClassOrInterface; import de.dhbwstuttgart.syntaxtree.SourceFile; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; import de.dhbwstuttgart.syntaxtree.factory.UnifyTypeFactory; +import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; +import de.dhbwstuttgart.typedeployment.TypeInsertFactory; import de.dhbwstuttgart.typedeployment.TypeInsertPoint; import de.dhbwstuttgart.typeinference.ResultSet; import de.dhbwstuttgart.typeinference.constraints.Constraint; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; +import de.dhbwstuttgart.typeinference.constraints.Pair; import de.dhbwstuttgart.typeinference.unify.TypeUnify; import de.dhbwstuttgart.typeinference.unify.interfaces.IFiniteClosure; import de.dhbwstuttgart.typeinference.unify.model.FiniteClosure; @@ -23,12 +28,18 @@ public class JavaTXCompiler { private List sourceFiles = new ArrayList<>(); - public List getTypeInserts(File forSourceFile){ - return null; + public List getTypeInserts(File forFile){ + ResultSet result = typeInference(); + for(SourceFile sf : sourceFiles){ + if(sf.getFile().equals(forFile)){ + return TypeInsertFactory.createTypeInsertPoints(sf, result); + } + } + throw new DebugException("Die Datei "+forFile+" wurde nicht geparst"); } public ResultSet typeInference(){ - ConstraintSet cons = new ConstraintSet(); + ConstraintSet cons = new ConstraintSet<>(); List allClasses = new ArrayList<>(); for(SourceFile sf : sourceFiles){ allClasses.addAll(sf.getClasses()); @@ -49,10 +60,24 @@ public class JavaTXCompiler { System.out.println(xConsSet); Set> result = unify.unify(xConsSet, finiteClosure); - System.out.println(result); + System.out.println("RESULT: " + result); results.addAll(result); } - return new ResultSet(results); + return new ResultSet(UnifyTypeFactory.convert(results, generateTPHMap(cons))); + } + + private Map generateTPHMap(ConstraintSet constraints){ + HashMap ret = new HashMap<>(); + constraints.map((Pair p)->{ + if(p.TA1 instanceof TypePlaceholder){ + ret.put(((TypePlaceholder)p.TA1).getName(), (TypePlaceholder) p.TA1); + } + if(p.TA2 instanceof TypePlaceholder){ + ret.put(((TypePlaceholder)p.TA2).getName(), (TypePlaceholder) p.TA2); + } + return null; + }); + return ret; } public void parse(File sourceFile) throws IOException, ClassNotFoundException { diff --git a/src/de/dhbwstuttgart/parser/JavaTXParser.java b/src/de/dhbwstuttgart/parser/JavaTXParser.java index 2acd90ae..8d320ecb 100644 --- a/src/de/dhbwstuttgart/parser/JavaTXParser.java +++ b/src/de/dhbwstuttgart/parser/JavaTXParser.java @@ -22,7 +22,7 @@ public class JavaTXParser { Java8Parser.CompilationUnitContext tree = parser.compilationUnit(); SyntaxTreeGenerator generator = new SyntaxTreeGenerator(new JavaClassRegistry(generateJavaLangNames())); - return generator.convert(tree); + return generator.convert(tree, sourceFile); } private List generateJavaLangNames() throws IOException, ClassNotFoundException { @@ -33,6 +33,7 @@ public class JavaTXParser { } //TODO: Wieso muss man das händisch anhängen? ret.add("java.lang.Object"); + return ret; } } diff --git a/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator/StatementGenerator.java b/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator/StatementGenerator.java index c75f6166..e671fde9 100644 --- a/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator/StatementGenerator.java +++ b/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator/StatementGenerator.java @@ -17,15 +17,12 @@ import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.tree.TerminalNode; import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; public class StatementGenerator { private JavaClassRegistry reg; - private Set localVars = new HashSet<>(); + private Map localVars = new HashMap<>(); private GenericsRegistry generics; public StatementGenerator(JavaClassRegistry reg, GenericsRegistry generics){ @@ -33,40 +30,7 @@ public class StatementGenerator { this.generics = generics; } - public Method convert(Java8Parser.MethodDeclarationContext methodDeclarationContext, JavaClassName parentClass) { - Java8Parser.MethodHeaderContext header = methodDeclarationContext.methodHeader(); - String name = header.methodDeclarator().Identifier().getText(); - GenericDeclarationList gtvDeclarations = new GenericDeclarationList(new ArrayList<>(), methodDeclarationContext.methodHeader().getStart()); - if(methodDeclarationContext.methodHeader().typeParameters() != null){ - gtvDeclarations = TypeGenerator.convert(methodDeclarationContext.methodHeader().typeParameters(), parentClass, name,reg, generics); - } - RefTypeOrTPHOrWildcardOrGeneric retType; - if(header.result() != null){ - if(header.result().unannType() != null){ - retType = TypeGenerator.convert(header.result().unannType(), reg, generics); - } - else retType = new de.dhbwstuttgart.syntaxtree.type.Void(header.result().getStart()); - }else{ - retType = TypePlaceholder.fresh(header.getStart()); - } - int modifiers = SyntaxTreeGenerator.convert(methodDeclarationContext.methodModifier()); - ParameterList parameterList = convert(header.methodDeclarator().formalParameterList()); - Block block = null; - if(methodDeclarationContext.methodBody().block() == null){ - if(! Modifier.isAbstract(modifiers)){ - //TODO: Error! Abstrakte Methode ohne abstrakt Keyword - } - }else{ - block = this.convert(methodDeclarationContext.methodBody().block()); - } - if(parentClass.equals(new JavaClassName(name))){ - return new Constructor(name, retType, modifiers, parameterList, block, gtvDeclarations, methodDeclarationContext.getStart()); - }else{ - return new Method(name, retType, modifiers, parameterList,block, gtvDeclarations, methodDeclarationContext.getStart()); - } - } - - private ParameterList convert(Java8Parser.FormalParameterListContext formalParameterListContext) { + public ParameterList convert(Java8Parser.FormalParameterListContext formalParameterListContext) { List ret = new ArrayList<>(); List fps = new ArrayList<>(); if(formalParameterListContext == null || formalParameterListContext.lastFormalParameter() == null) @@ -89,7 +53,7 @@ public class StatementGenerator { type = TypePlaceholder.fresh(fp.getStart()); } ret.add(new FormalParameter(paramName, type, fp.getStart())); - localVars.add(paramName); + localVars.put(paramName, type); } return new ParameterList(ret, ret.get(0).getOffset()); } @@ -160,26 +124,24 @@ public class StatementGenerator { List statements = new ArrayList<>(); if(block.blockStatements() != null) for(Java8Parser.BlockStatementContext statementContext : block.blockStatements().blockStatement()){ - Statement stmt = convert(statementContext); - statements.add(stmt); + List stmt = convert(statementContext); + statements.addAll(stmt); } statements = SyntacticSugar.addTrailingReturn(statements); return new Block(statements, block.getStart()); } - private de.dhbwstuttgart.syntaxtree.statement.Statement convert(Java8Parser.BlockStatementContext statementContext) { - List ret = new ArrayList<>(); + private List convert(Java8Parser.BlockStatementContext statementContext) { if(statementContext.localVariableDeclarationStatement() != null){ return convert(statementContext.localVariableDeclarationStatement()); }else if(statementContext.classDeclaration() != null){ throw new NotImplementedException(); }else{ - Java8Parser.StatementContext stmt = statementContext.statement(); - return convert(stmt); + return Arrays.asList(convert(statementContext.statement())); } } - private Statement convert(Java8Parser.LocalVariableDeclarationStatementContext stmt) { + private List convert(Java8Parser.LocalVariableDeclarationStatementContext stmt) { Java8Parser.LocalVariableDeclarationContext declaration = stmt.localVariableDeclaration(); return convert(declaration); } @@ -265,11 +227,11 @@ public class StatementGenerator { String[] parts = expression.split("\\."); if(parts.length < 2){ //Check for localVar: - if(localVars.contains(expression)){ - return new LocalVar(expression, offset); + if(localVars.get(expression) != null){ + return new LocalVar(expression, localVars.get(expression), offset); }else{ - //throw new NotImplementedException(); //Dann Muss es ein Feld sein! + return new FieldVar(new This(offset), expression, TypePlaceholder.fresh(offset), offset); } } return generateFieldVarOrClassname(expression, offset); @@ -328,12 +290,12 @@ public class StatementGenerator { } private Statement convert(Java8Parser.AssignmentContext stmt) { - LocalVar leftHandSide = convert(stmt.leftHandSide()); + Expression leftHandSide = convert(stmt.leftHandSide()); return new Assign(leftHandSide, convert(stmt.expression()), stmt.getStart()); } - private LocalVar convert(Java8Parser.LeftHandSideContext leftHandSide) { - return new LocalVar(leftHandSide.toString(), leftHandSide.getStart()); + private Expression convert(Java8Parser.LeftHandSideContext leftHandSide) { + return generateLocalOrFieldVarOrClassName(leftHandSide.getText(), leftHandSide.getStart()); } private Statement convert(Java8Parser.IfThenStatementContext stmt){ @@ -412,32 +374,42 @@ public class StatementGenerator { throw new NotImplementedException(); } - private Statement convert(Java8Parser.ForInitContext stmt){ + private List convert(Java8Parser.ForInitContext stmt){ if(stmt.statementExpressionList() != null){ - return convert(stmt.statementExpressionList()); + return Arrays.asList(convert(stmt.statementExpressionList())); }else if(stmt.localVariableDeclaration() != null){ return convert(stmt.localVariableDeclaration()); }else throw new NotImplementedException(); } - private Statement convert(Java8Parser.LocalVariableDeclarationContext declaration) { - List declarations = new ArrayList<>(); + private List convert(Java8Parser.LocalVariableDeclarationContext declaration) { + List ret = new ArrayList<>(); if(declaration.variableModifier() != null && declaration.variableModifier().size() > 0){ //TODO + throw new NotImplementedException(); } RefTypeOrTPHOrWildcardOrGeneric type; - if(declaration.unannType()==null){ + if(declaration.unannTypeOrAuto().unannType()==null){ type = TypePlaceholder.fresh(declaration.getStart()); }else{ - type = TypeGenerator.convert(declaration.unannType(), reg, generics); + type = TypeGenerator.convert(declaration.unannTypeOrAuto().unannType(), reg, generics); } for(Java8Parser.VariableDeclaratorContext varDecl : declaration.variableDeclaratorList().variableDeclarator()){ TerminalNode name = varDecl.variableDeclaratorId().Identifier(); - declarations.add(new LocalVarDecl(name.getText(), type, name.getSymbol())); - this.localVars.add(name.getText()); + + ret.add(new LocalVarDecl(name.getText(), type, name.getSymbol())); + this.localVars.put(name.getText(), type); + if(varDecl.variableInitializer() != null){ + Expression initValue; + if(varDecl.variableInitializer().arrayInitializer() != null){ + throw new NotImplementedException(); + }else{ + initValue = convert(varDecl.variableInitializer().expression()); + } + ret.add(new Assign(new LocalVar(name.getText(), type, name.getSymbol()), initValue, name.getSymbol())); + } } - if(declarations.size()==1)return declarations.get(0); - return new LocalVarBunchDeclaration(declarations, declaration.getStart()); + return ret; } private Statement convert(Java8Parser.ForUpdateContext stmt){ @@ -740,12 +712,19 @@ public class StatementGenerator { } private Expression convert(Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext newExpression) { + Java8Parser.TypeArgumentsContext genericArgs = null; if(newExpression.expressionName()!= null)throw new NotImplementedException(); - if(newExpression.typeArgumentsOrDiamond()!= null)throw new NotImplementedException(); + if(newExpression.typeArgumentsOrDiamond()!= null){ + if(newExpression.typeArgumentsOrDiamond().typeArguments()!=null){ + genericArgs = newExpression.typeArgumentsOrDiamond().typeArguments(); + }else { + throw new NotImplementedException(); + } + } if(newExpression.typeArguments()!= null)throw new NotImplementedException(); TerminalNode identifier = newExpression.Identifier(0); - RefType newClass = (RefType) TypeGenerator.convertTypeName(identifier.getText(),identifier.getSymbol(),reg,generics); + RefType newClass = (RefType) TypeGenerator.convertTypeName(identifier.getText(),genericArgs,identifier.getSymbol(),reg,generics); ArgumentList args = convert(newExpression.argumentList()); return new NewClass(newClass, args, newExpression.getStart()); @@ -832,9 +811,9 @@ public class StatementGenerator { funNParams.add(TypePlaceholder.fresh(expression.getStart()));//ret-Type params.getFormalparalist().forEach(formalParameter -> //Für jeden Parameter einen TPH anfügen: funNParams.add(TypePlaceholder.fresh(expression.getStart()))); - RefType lambdaType = new RefType(reg.getName("Fun"+params.getFormalparalist().size()), - funNParams, expression.getStart()); + RefTypeOrTPHOrWildcardOrGeneric lambdaType = TypePlaceholder.fresh(expression.getStart()); + //RefType lambdaType = new RefType(reg.getName("Fun"+params.getFormalparalist().size()), + //funNParams, expression.getStart()); return new LambdaExpression(lambdaType, params, block, expression.getStart()); } - } diff --git a/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator/SyntaxTreeGenerator.java b/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator/SyntaxTreeGenerator.java index 5976d9e6..7234cc2b 100644 --- a/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator/SyntaxTreeGenerator.java +++ b/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator/SyntaxTreeGenerator.java @@ -12,11 +12,13 @@ import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; import de.dhbwstuttgart.typecheck.*; +import java.io.File; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import jdk.internal.dynalink.support.TypeConverterFactory; import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.tree.TerminalNode; @@ -24,7 +26,6 @@ public class SyntaxTreeGenerator{ private JavaClassRegistry reg; private String pkgName = ""; List imports = new ArrayList(); - private GenericsRegistry generics = new GenericsRegistry(); public SyntaxTreeGenerator(JavaClassRegistry reg){ this.reg = reg; @@ -52,11 +53,13 @@ public class SyntaxTreeGenerator{ nameString = typeDecl.interfaceDeclaration().normalInterfaceDeclaration().Identifier().toString(); } //Die Generic TypeParameter Definitionen Nicht! an die JavaClassName-Registry anfügen: + /* //Diese gelängen dadurch in den globalen Scope, was sie schließlich nicht sind if(typeDecl.classDeclaration().normalClassDeclaration().typeParameters() != null){ for(Java8Parser.TypeParameterContext tp : typeDecl.classDeclaration().normalClassDeclaration().typeParameters().typeParameterList().typeParameter()){ //this.reg.add(tp.Identifier().toString()); } } + */ this.reg.add(nameString); } } @@ -68,12 +71,14 @@ public class SyntaxTreeGenerator{ else{ nameString = typeDecl.classDeclaration().normalClassDeclaration().Identifier().toString(); } - //Die Generic TypeParameter Definitionen ebenfalls an die JavaClassName-Registry anfügen: + //Die Generic TypeParameter Definitionen Nicht! an die JavaClassName-Registry anfügen: + /* //Diese gelängen dadurch in den globalen Scope, was sie schließlich nicht sind if(typeDecl.classDeclaration().normalClassDeclaration().typeParameters() != null){ for(Java8Parser.TypeParameterContext tp : typeDecl.classDeclaration().normalClassDeclaration().typeParameters().typeParameterList().typeParameter()){ this.reg.add(tp.Identifier().toString()); } } + */ this.reg.add(nameString); } } @@ -163,7 +168,7 @@ public class SyntaxTreeGenerator{ return ret; } - public SourceFile convert(Java8Parser.CompilationUnitContext ctx) throws ClassNotFoundException{ + public SourceFile convert(Java8Parser.CompilationUnitContext ctx, File parsedFile) throws ClassNotFoundException{ List classes = new ArrayList<>(); this.getNames(ctx); this.setImports(ctx); @@ -177,7 +182,61 @@ public class SyntaxTreeGenerator{ } classes.add(newClass); } - return new SourceFile(this.pkgName, classes, this.imports); + return new SourceFile(parsedFile, this.pkgName, classes, this.imports); + } + + public Method convert(Java8Parser.MethodDeclarationContext methodDeclarationContext, JavaClassName parentClass, GenericsRegistry generics) { + Java8Parser.MethodHeaderContext header = methodDeclarationContext.methodHeader(); + int modifiers = SyntaxTreeGenerator.convert(methodDeclarationContext.methodModifier()); + GenericsRegistry localGenerics = createGenerics(methodDeclarationContext.methodHeader().typeParameters(), + parentClass, header.methodDeclarator().Identifier().getText()); + localGenerics.putAll(generics); + return convert(modifiers, header, methodDeclarationContext.methodBody(),parentClass, localGenerics); + } + + public Method convert(Java8Parser.InterfaceMethodDeclarationContext ctx, JavaClassName parentClass, GenericsRegistry generics) { + Java8Parser.MethodHeaderContext header = ctx.methodHeader(); + int modifiers = SyntaxTreeGenerator.convertInterfaceModifier(ctx.interfaceMethodModifier()); + + GenericsRegistry localGenerics = createGenerics(header.typeParameters(), parentClass, header.methodDeclarator().Identifier().getText()); + localGenerics.putAll(generics); + + return convert(modifiers, header, ctx.methodBody(),parentClass, localGenerics); + } + + private Method convert(int modifiers, Java8Parser.MethodHeaderContext header, Java8Parser.MethodBodyContext body, + JavaClassName parentClass, GenericsRegistry localGenerics) { + + StatementGenerator stmtGen = new StatementGenerator(reg, localGenerics); + + String name = header.methodDeclarator().Identifier().getText(); + GenericDeclarationList gtvDeclarations = new GenericDeclarationList(new ArrayList<>(), header.getStart()); + if(header.typeParameters() != null){ + gtvDeclarations = TypeGenerator.convert(header.typeParameters(), parentClass, name,reg, localGenerics); + } + RefTypeOrTPHOrWildcardOrGeneric retType; + if(header.result() != null){ + if(header.result().unannType() != null){ + retType = TypeGenerator.convert(header.result().unannType(), reg, localGenerics); + } + else retType = new de.dhbwstuttgart.syntaxtree.type.Void(header.result().getStart()); + }else{ + retType = TypePlaceholder.fresh(header.getStart()); + } + ParameterList parameterList = stmtGen.convert(header.methodDeclarator().formalParameterList()); + Block block = null; + if(body.block() == null){ + if(! Modifier.isAbstract(modifiers)){ + //TODO: Error! Abstrakte Methode ohne abstrakt Keyword + } + }else{ + block = stmtGen.convert(body.block()); + } + if(parentClass.equals(new JavaClassName(name))){ + return new Constructor(name, retType, modifiers, parameterList, block, gtvDeclarations, header.getStart()); + }else{ + return new Method(name, retType, modifiers, parameterList,block, gtvDeclarations, header.getStart()); + } } private ClassOrInterface convertClass(Java8Parser.ClassDeclarationContext ctx) { @@ -200,10 +259,11 @@ public class SyntaxTreeGenerator{ } } JavaClassName name = reg.getName(ctx.Identifier().getText()); + GenericsRegistry generics = createGenerics(ctx.typeParameters(), name, ""); Token offset = ctx.getStart(); GenericDeclarationList genericClassParameters = TypeGenerator.convert(ctx.typeParameters(), name, "",reg, generics); - List fielddecl = convertFields(ctx.classBody()); - List methods = convertMethods(ctx.classBody(), name); + List fielddecl = convertFields(ctx.classBody(), generics); + List methods = convertMethods(ctx.classBody(), name, generics); List konstruktoren = new ArrayList<>(); for(int i = 0; i implementedInterfaces = null; - return new ClassOrInterface(modifiers, name, fielddecl, methods, konstruktoren, genericClassParameters, superClass, isInterface, implementedInterfaces, offset); + List implementedInterfaces = convert(ctx.superinterfaces(), generics); + return new ClassOrInterface(modifiers, name, fielddecl, methods, konstruktoren, genericClassParameters, superClass, + isInterface, implementedInterfaces, offset); + } + + private List convert(Java8Parser.SuperinterfacesContext ctx, GenericsRegistry generics) { + if(ctx == null)return new ArrayList<>(); + return convert(ctx.interfaceTypeList(), generics); + } + + private List convert(Java8Parser.InterfaceTypeListContext ctx, GenericsRegistry generics) { + List ret = new ArrayList<>(); + for(Java8Parser.InterfaceTypeContext interfaceType : ctx.interfaceType()){ + ret.add(TypeGenerator.convert(interfaceType.classType(), reg, generics)); + } + return ret; } private Constructor generateStandardConstructor(String className, GenericDeclarationList classGenerics, Token offset){ @@ -245,7 +319,8 @@ public class SyntaxTreeGenerator{ throw new NotImplementedException(); } - private List convertMethods(Java8Parser.ClassBodyContext classBodyContext, JavaClassName parentClass) { + private List convertMethods(Java8Parser.ClassBodyContext classBodyContext, + JavaClassName parentClass, GenericsRegistry generics) { List ret = new ArrayList<>(); for(Java8Parser.ClassBodyDeclarationContext classMember : classBodyContext.classBodyDeclaration()){ if(classMember.classMemberDeclaration() != null){ @@ -253,21 +328,21 @@ public class SyntaxTreeGenerator{ if(classMemberDeclarationContext.fieldDeclaration() != null){ //Do nothing! }else if(classMemberDeclarationContext.methodDeclaration()!= null){ - StatementGenerator stmtGen = new StatementGenerator(reg, generics); - ret.add(stmtGen.convert(classMemberDeclarationContext.methodDeclaration(), parentClass)); + + ret.add(this.convert(classMemberDeclarationContext.methodDeclaration(), parentClass, generics)); } } } return ret; } - private List convertFields(Java8Parser.ClassBodyContext classBodyContext) { + private List convertFields(Java8Parser.ClassBodyContext classBodyContext, GenericsRegistry generics) { List ret = new ArrayList<>(); for(Java8Parser.ClassBodyDeclarationContext classMember : classBodyContext.classBodyDeclaration()){ if(classMember.classMemberDeclaration() != null){ Java8Parser.ClassMemberDeclarationContext classMemberDeclarationContext = classMember.classMemberDeclaration(); if(classMemberDeclarationContext.fieldDeclaration() != null){ - ret.addAll(convert(classMember.classMemberDeclaration().fieldDeclaration())); + ret.addAll(convert(classMember.classMemberDeclaration().fieldDeclaration(), generics)); }else if(classMemberDeclarationContext.methodDeclaration()!= null){ //Do nothing! } @@ -284,7 +359,15 @@ public class SyntaxTreeGenerator{ return ret; } - private List convert(Java8Parser.FieldDeclarationContext fieldDeclarationContext) { + public static int convertInterfaceModifier(List methodModifierContexts) { + int ret = 0; + for(Java8Parser.InterfaceMethodModifierContext mod : methodModifierContexts){ + if(mod.annotation() == null)convertModifier(mod.getText()); + } + return ret; + } + + private List convert(Java8Parser.FieldDeclarationContext fieldDeclarationContext, GenericsRegistry generics) { List ret = new ArrayList<>(); int modifiers = 0; for(Java8Parser.FieldModifierContext fieldModifierContext : fieldDeclarationContext.fieldModifier()){ @@ -334,7 +417,7 @@ public class SyntaxTreeGenerator{ modifiers.put(Modifier.toString(Modifier.INTERFACE), Modifier.INTERFACE); int ret = 0; for(String m : modifiers.keySet()){ - if(modifier.startsWith(m))ret+=modifiers.get(m); + if(modifier.contains(m))ret+=modifiers.get(m); } return ret; } @@ -348,13 +431,86 @@ public class SyntaxTreeGenerator{ if(ctx.annotation() != null)return 0; return convertModifier(ctx.getText()); } + + private int convert(Java8Parser.InterfaceModifierContext ctx) { + if(ctx.annotation() != null)return 0; + return convertModifier(ctx.getText()); + } private ClassOrInterface convertEnum(Java8Parser.EnumDeclarationContext ctx){ return null; } private ClassOrInterface convertInterface(Java8Parser.InterfaceDeclarationContext ctx){ - return null; + if(ctx.normalInterfaceDeclaration() != null){ + return convertNormal(ctx.normalInterfaceDeclaration()); + }else{ + throw new NotImplementedException(); + } } + private ClassOrInterface convertNormal(Java8Parser.NormalInterfaceDeclarationContext ctx) { + int modifiers = 0; + if(ctx.interfaceModifier() != null){ + for( Java8Parser.InterfaceModifierContext mod : ctx.interfaceModifier()){ + int newModifier = convert(mod); + modifiers += newModifier; + } + } + JavaClassName name = reg.getName(ctx.Identifier().getText()); + + GenericsRegistry generics = createGenerics(ctx.typeParameters(), name, ""); + + List fields = convertFields(ctx.interfaceBody()); + List methods = convertMethods(ctx.interfaceBody(), name, generics); + + GenericDeclarationList genericParams = TypeGenerator.convert(ctx.typeParameters(), name, "",reg, generics); + RefType superClass = new ASTFactory(reg).createObjectClass().getType(); + + List extendedInterfaces = convert(ctx.extendsInterfaces(), generics); + + return new ClassOrInterface(modifiers, name, fields, methods, new ArrayList<>(), + genericParams, superClass, true, extendedInterfaces, ctx.getStart()); + } + + private GenericsRegistry createGenerics(Java8Parser.TypeParametersContext ctx, JavaClassName parentClass, String parentMethod) { + GenericsRegistry ret = new GenericsRegistry(); + if(ctx == null || ctx.typeParameterList() == null)return ret; + for(Java8Parser.TypeParameterContext tp : ctx.typeParameterList().typeParameter()){ + TypeGenerator.convert(tp, parentClass, parentMethod, reg, ret); + } + return ret; + } + + private List convert(Java8Parser.ExtendsInterfacesContext extendsInterfacesContext, GenericsRegistry generics) { + if(extendsInterfacesContext == null)return new ArrayList<>(); + return convert(extendsInterfacesContext.interfaceTypeList(), generics); + } + + private List convertMethods(Java8Parser.InterfaceBodyContext interfaceBodyContext, + JavaClassName parentClass, GenericsRegistry generics) { + List ret = new ArrayList<>(); + for(Java8Parser.InterfaceMemberDeclarationContext member : interfaceBodyContext.interfaceMemberDeclaration()){ + if(member.interfaceMethodDeclaration() != null){ + ret.add(this.convert(member.interfaceMethodDeclaration(), parentClass, generics)); + //new Method(name, type, modifier, params, null, genericDecls, member.interfaceMethodDeclaration().getStart()); + }else{ + throw new NotImplementedException(); + } + } + return ret; + } + + private List convertFields(Java8Parser.InterfaceBodyContext interfaceBodyContext) { + List ret = new ArrayList<>(); + for(Java8Parser.InterfaceMemberDeclarationContext member : interfaceBodyContext.interfaceMemberDeclaration()){ + if(member.constantDeclaration() != null){ + //TODO: Erstelle hier ein Feld! + throw new NotImplementedException(); + } + } + return ret; + } + + } diff --git a/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator/TypeGenerator.java b/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator/TypeGenerator.java index 0d30132e..124f5eeb 100644 --- a/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator/TypeGenerator.java +++ b/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator/TypeGenerator.java @@ -36,11 +36,7 @@ public class TypeGenerator { name = unannClassOrInterfaceTypeContext.unannInterfaceType_lfno_unannClassOrInterfaceType().unannClassType_lfno_unannClassOrInterfaceType().getText(); arguments = unannClassOrInterfaceTypeContext.unannInterfaceType_lfno_unannClassOrInterfaceType().unannClassType_lfno_unannClassOrInterfaceType().typeArguments(); } - if(arguments == null){ - return convertTypeName(name,unannClassOrInterfaceTypeContext.getStart(), reg, generics); - }else{ - return null; - } + return convertTypeName(name, arguments, unannClassOrInterfaceTypeContext.getStart(), reg, generics); } public static RefTypeOrTPHOrWildcardOrGeneric convert(Java8Parser.UnannTypeContext unannTypeContext, JavaClassRegistry reg, GenericsRegistry genericsRegistry) { @@ -48,6 +44,7 @@ public class TypeGenerator { throw new NotImplementedException(); }else if(unannTypeContext.unannReferenceType().unannArrayType()!=null){ + System.out.println(unannTypeContext.getText()); throw new NotImplementedException(); }else if(unannTypeContext.unannReferenceType().unannTypeVariable()!=null){ @@ -125,4 +122,9 @@ public class TypeGenerator { } return ret; } + + public static RefTypeOrTPHOrWildcardOrGeneric convert(Java8Parser.ClassTypeContext ctx, JavaClassRegistry reg, GenericsRegistry generics) { + if(ctx.classOrInterfaceType() != null)throw new NotImplementedException(); + return convertTypeName(ctx.Identifier().getText(), ctx.typeArguments(), ctx.getStart(), reg, generics); + } } diff --git a/src/de/dhbwstuttgart/parser/antlr/Java8.g4 b/src/de/dhbwstuttgart/parser/antlr/Java8.g4 index fc8783f0..14891bac 100644 --- a/src/de/dhbwstuttgart/parser/antlr/Java8.g4 +++ b/src/de/dhbwstuttgart/parser/antlr/Java8.g4 @@ -730,8 +730,13 @@ localVariableDeclarationStatement : localVariableDeclaration ';' ; +unannTypeOrAuto + : unannType + | 'auto' + ; + localVariableDeclaration - : variableModifier* unannType variableDeclaratorList + : variableModifier* unannTypeOrAuto variableDeclaratorList ; statement diff --git a/src/de/dhbwstuttgart/parser/antlr/Java8.tokens b/src/de/dhbwstuttgart/parser/antlr/Java8.tokens index 52ef1eee..82895a50 100644 --- a/src/de/dhbwstuttgart/parser/antlr/Java8.tokens +++ b/src/de/dhbwstuttgart/parser/antlr/Java8.tokens @@ -1,205 +1,207 @@ -ABSTRACT=1 -ASSERT=2 -BOOLEAN=3 -BREAK=4 -BYTE=5 -CASE=6 -CATCH=7 -CHAR=8 -CLASS=9 -CONST=10 -CONTINUE=11 -DEFAULT=12 -DO=13 -DOUBLE=14 -ELSE=15 -ENUM=16 -EXTENDS=17 -FINAL=18 -FINALLY=19 -FLOAT=20 -FOR=21 -IF=22 -GOTO=23 -IMPLEMENTS=24 -IMPORT=25 -INSTANCEOF=26 -INT=27 -INTERFACE=28 -LONG=29 -NATIVE=30 -NEW=31 -PACKAGE=32 -PRIVATE=33 -PROTECTED=34 -PUBLIC=35 -RETURN=36 -SHORT=37 -STATIC=38 -STRICTFP=39 -SUPER=40 -SWITCH=41 -SYNCHRONIZED=42 -THIS=43 -THROW=44 -THROWS=45 -TRANSIENT=46 -TRY=47 -VOID=48 -VOLATILE=49 -WHILE=50 -IntegerLiteral=51 -FloatingPointLiteral=52 -BooleanLiteral=53 -CharacterLiteral=54 -StringLiteral=55 -NullLiteral=56 -LPAREN=57 -RPAREN=58 -LBRACE=59 -RBRACE=60 -LBRACK=61 -RBRACK=62 -SEMI=63 -COMMA=64 -DOT=65 -ASSIGN=66 -GT=67 -LT=68 -BANG=69 -TILDE=70 -QUESTION=71 -COLON=72 -EQUAL=73 -LE=74 -GE=75 -NOTEQUAL=76 -AND=77 -OR=78 -INC=79 -DEC=80 -ADD=81 -SUB=82 -MUL=83 -DIV=84 -BITAND=85 -BITOR=86 -CARET=87 -MOD=88 -ARROW=89 -COLONCOLON=90 -ADD_ASSIGN=91 -SUB_ASSIGN=92 -MUL_ASSIGN=93 -DIV_ASSIGN=94 -AND_ASSIGN=95 -OR_ASSIGN=96 -XOR_ASSIGN=97 -MOD_ASSIGN=98 -LSHIFT_ASSIGN=99 -RSHIFT_ASSIGN=100 -URSHIFT_ASSIGN=101 -Identifier=102 -AT=103 -ELLIPSIS=104 -WS=105 -COMMENT=106 -LINE_COMMENT=107 -'abstract'=1 -'assert'=2 -'boolean'=3 -'break'=4 -'byte'=5 -'case'=6 -'catch'=7 -'char'=8 -'class'=9 -'const'=10 -'continue'=11 -'default'=12 -'do'=13 -'double'=14 -'else'=15 -'enum'=16 -'extends'=17 -'final'=18 -'finally'=19 -'float'=20 -'for'=21 -'if'=22 -'goto'=23 -'implements'=24 -'import'=25 -'instanceof'=26 -'int'=27 -'interface'=28 -'long'=29 -'native'=30 -'new'=31 -'package'=32 -'private'=33 -'protected'=34 -'public'=35 -'return'=36 -'short'=37 -'static'=38 -'strictfp'=39 -'super'=40 -'switch'=41 -'synchronized'=42 -'this'=43 -'throw'=44 -'throws'=45 -'transient'=46 -'try'=47 -'void'=48 -'volatile'=49 -'while'=50 -'null'=56 -'('=57 -')'=58 -'{'=59 -'}'=60 -'['=61 -']'=62 -';'=63 -','=64 -'.'=65 -'='=66 -'>'=67 -'<'=68 -'!'=69 -'~'=70 -'?'=71 -':'=72 -'=='=73 -'<='=74 -'>='=75 -'!='=76 -'&&'=77 -'||'=78 -'++'=79 -'--'=80 -'+'=81 -'-'=82 -'*'=83 -'/'=84 -'&'=85 -'|'=86 -'^'=87 -'%'=88 -'->'=89 -'::'=90 -'+='=91 -'-='=92 -'*='=93 -'/='=94 -'&='=95 -'|='=96 -'^='=97 -'%='=98 -'<<='=99 -'>>='=100 -'>>>='=101 -'@'=103 -'...'=104 +T__0=1 +ABSTRACT=2 +ASSERT=3 +BOOLEAN=4 +BREAK=5 +BYTE=6 +CASE=7 +CATCH=8 +CHAR=9 +CLASS=10 +CONST=11 +CONTINUE=12 +DEFAULT=13 +DO=14 +DOUBLE=15 +ELSE=16 +ENUM=17 +EXTENDS=18 +FINAL=19 +FINALLY=20 +FLOAT=21 +FOR=22 +IF=23 +GOTO=24 +IMPLEMENTS=25 +IMPORT=26 +INSTANCEOF=27 +INT=28 +INTERFACE=29 +LONG=30 +NATIVE=31 +NEW=32 +PACKAGE=33 +PRIVATE=34 +PROTECTED=35 +PUBLIC=36 +RETURN=37 +SHORT=38 +STATIC=39 +STRICTFP=40 +SUPER=41 +SWITCH=42 +SYNCHRONIZED=43 +THIS=44 +THROW=45 +THROWS=46 +TRANSIENT=47 +TRY=48 +VOID=49 +VOLATILE=50 +WHILE=51 +IntegerLiteral=52 +FloatingPointLiteral=53 +BooleanLiteral=54 +CharacterLiteral=55 +StringLiteral=56 +NullLiteral=57 +LPAREN=58 +RPAREN=59 +LBRACE=60 +RBRACE=61 +LBRACK=62 +RBRACK=63 +SEMI=64 +COMMA=65 +DOT=66 +ASSIGN=67 +GT=68 +LT=69 +BANG=70 +TILDE=71 +QUESTION=72 +COLON=73 +EQUAL=74 +LE=75 +GE=76 +NOTEQUAL=77 +AND=78 +OR=79 +INC=80 +DEC=81 +ADD=82 +SUB=83 +MUL=84 +DIV=85 +BITAND=86 +BITOR=87 +CARET=88 +MOD=89 +ARROW=90 +COLONCOLON=91 +ADD_ASSIGN=92 +SUB_ASSIGN=93 +MUL_ASSIGN=94 +DIV_ASSIGN=95 +AND_ASSIGN=96 +OR_ASSIGN=97 +XOR_ASSIGN=98 +MOD_ASSIGN=99 +LSHIFT_ASSIGN=100 +RSHIFT_ASSIGN=101 +URSHIFT_ASSIGN=102 +Identifier=103 +AT=104 +ELLIPSIS=105 +WS=106 +COMMENT=107 +LINE_COMMENT=108 +'auto'=1 +'abstract'=2 +'assert'=3 +'boolean'=4 +'break'=5 +'byte'=6 +'case'=7 +'catch'=8 +'char'=9 +'class'=10 +'const'=11 +'continue'=12 +'default'=13 +'do'=14 +'double'=15 +'else'=16 +'enum'=17 +'extends'=18 +'final'=19 +'finally'=20 +'float'=21 +'for'=22 +'if'=23 +'goto'=24 +'implements'=25 +'import'=26 +'instanceof'=27 +'int'=28 +'interface'=29 +'long'=30 +'native'=31 +'new'=32 +'package'=33 +'private'=34 +'protected'=35 +'public'=36 +'return'=37 +'short'=38 +'static'=39 +'strictfp'=40 +'super'=41 +'switch'=42 +'synchronized'=43 +'this'=44 +'throw'=45 +'throws'=46 +'transient'=47 +'try'=48 +'void'=49 +'volatile'=50 +'while'=51 +'null'=57 +'('=58 +')'=59 +'{'=60 +'}'=61 +'['=62 +']'=63 +';'=64 +','=65 +'.'=66 +'='=67 +'>'=68 +'<'=69 +'!'=70 +'~'=71 +'?'=72 +':'=73 +'=='=74 +'<='=75 +'>='=76 +'!='=77 +'&&'=78 +'||'=79 +'++'=80 +'--'=81 +'+'=82 +'-'=83 +'*'=84 +'/'=85 +'&'=86 +'|'=87 +'^'=88 +'%'=89 +'->'=90 +'::'=91 +'+='=92 +'-='=93 +'*='=94 +'/='=95 +'&='=96 +'|='=97 +'^='=98 +'%='=99 +'<<='=100 +'>>='=101 +'>>>='=102 +'@'=104 +'...'=105 diff --git a/src/de/dhbwstuttgart/parser/antlr/Java8Lexer.java b/src/de/dhbwstuttgart/parser/antlr/Java8Lexer.java index ed02b587..5d545ba3 100644 --- a/src/de/dhbwstuttgart/parser/antlr/Java8Lexer.java +++ b/src/de/dhbwstuttgart/parser/antlr/Java8Lexer.java @@ -17,31 +17,31 @@ public class Java8Lexer extends Lexer { protected static final PredictionContextCache _sharedContextCache = new PredictionContextCache(); public static final int - ABSTRACT=1, ASSERT=2, BOOLEAN=3, BREAK=4, BYTE=5, CASE=6, CATCH=7, CHAR=8, - CLASS=9, CONST=10, CONTINUE=11, DEFAULT=12, DO=13, DOUBLE=14, ELSE=15, - ENUM=16, EXTENDS=17, FINAL=18, FINALLY=19, FLOAT=20, FOR=21, IF=22, GOTO=23, - IMPLEMENTS=24, IMPORT=25, INSTANCEOF=26, INT=27, INTERFACE=28, LONG=29, - NATIVE=30, NEW=31, PACKAGE=32, PRIVATE=33, PROTECTED=34, PUBLIC=35, RETURN=36, - SHORT=37, STATIC=38, STRICTFP=39, SUPER=40, SWITCH=41, SYNCHRONIZED=42, - THIS=43, THROW=44, THROWS=45, TRANSIENT=46, TRY=47, VOID=48, VOLATILE=49, - WHILE=50, IntegerLiteral=51, FloatingPointLiteral=52, BooleanLiteral=53, - CharacterLiteral=54, StringLiteral=55, NullLiteral=56, LPAREN=57, RPAREN=58, - LBRACE=59, RBRACE=60, LBRACK=61, RBRACK=62, SEMI=63, COMMA=64, DOT=65, - ASSIGN=66, GT=67, LT=68, BANG=69, TILDE=70, QUESTION=71, COLON=72, EQUAL=73, - LE=74, GE=75, NOTEQUAL=76, AND=77, OR=78, INC=79, DEC=80, ADD=81, SUB=82, - MUL=83, DIV=84, BITAND=85, BITOR=86, CARET=87, MOD=88, ARROW=89, COLONCOLON=90, - ADD_ASSIGN=91, SUB_ASSIGN=92, MUL_ASSIGN=93, DIV_ASSIGN=94, AND_ASSIGN=95, - OR_ASSIGN=96, XOR_ASSIGN=97, MOD_ASSIGN=98, LSHIFT_ASSIGN=99, RSHIFT_ASSIGN=100, - URSHIFT_ASSIGN=101, Identifier=102, AT=103, ELLIPSIS=104, WS=105, COMMENT=106, - LINE_COMMENT=107; + T__0=1, ABSTRACT=2, ASSERT=3, BOOLEAN=4, BREAK=5, BYTE=6, CASE=7, CATCH=8, + CHAR=9, CLASS=10, CONST=11, CONTINUE=12, DEFAULT=13, DO=14, DOUBLE=15, + ELSE=16, ENUM=17, EXTENDS=18, FINAL=19, FINALLY=20, FLOAT=21, FOR=22, + IF=23, GOTO=24, IMPLEMENTS=25, IMPORT=26, INSTANCEOF=27, INT=28, INTERFACE=29, + LONG=30, NATIVE=31, NEW=32, PACKAGE=33, PRIVATE=34, PROTECTED=35, PUBLIC=36, + RETURN=37, SHORT=38, STATIC=39, STRICTFP=40, SUPER=41, SWITCH=42, SYNCHRONIZED=43, + THIS=44, THROW=45, THROWS=46, TRANSIENT=47, TRY=48, VOID=49, VOLATILE=50, + WHILE=51, IntegerLiteral=52, FloatingPointLiteral=53, BooleanLiteral=54, + CharacterLiteral=55, StringLiteral=56, NullLiteral=57, LPAREN=58, RPAREN=59, + LBRACE=60, RBRACE=61, LBRACK=62, RBRACK=63, SEMI=64, COMMA=65, DOT=66, + ASSIGN=67, GT=68, LT=69, BANG=70, TILDE=71, QUESTION=72, COLON=73, EQUAL=74, + LE=75, GE=76, NOTEQUAL=77, AND=78, OR=79, INC=80, DEC=81, ADD=82, SUB=83, + MUL=84, DIV=85, BITAND=86, BITOR=87, CARET=88, MOD=89, ARROW=90, COLONCOLON=91, + ADD_ASSIGN=92, SUB_ASSIGN=93, MUL_ASSIGN=94, DIV_ASSIGN=95, AND_ASSIGN=96, + OR_ASSIGN=97, XOR_ASSIGN=98, MOD_ASSIGN=99, LSHIFT_ASSIGN=100, RSHIFT_ASSIGN=101, + URSHIFT_ASSIGN=102, Identifier=103, AT=104, ELLIPSIS=105, WS=106, COMMENT=107, + LINE_COMMENT=108; public static String[] modeNames = { "DEFAULT_MODE" }; public static final String[] ruleNames = { - "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", "CHAR", - "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "ENUM", - "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS", + "T__0", "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", + "CHAR", "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", + "ENUM", "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS", "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", "NEW", "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT", "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW", "THROWS", "TRANSIENT", @@ -68,8 +68,8 @@ public class Java8Lexer extends Lexer { }; private static final String[] _LITERAL_NAMES = { - null, "'abstract'", "'assert'", "'boolean'", "'break'", "'byte'", "'case'", - "'catch'", "'char'", "'class'", "'const'", "'continue'", "'default'", + null, "'auto'", "'abstract'", "'assert'", "'boolean'", "'break'", "'byte'", + "'case'", "'catch'", "'char'", "'class'", "'const'", "'continue'", "'default'", "'do'", "'double'", "'else'", "'enum'", "'extends'", "'final'", "'finally'", "'float'", "'for'", "'if'", "'goto'", "'implements'", "'import'", "'instanceof'", "'int'", "'interface'", "'long'", "'native'", "'new'", "'package'", "'private'", @@ -84,21 +84,21 @@ public class Java8Lexer extends Lexer { "'>>>='", null, "'@'", "'...'" }; private static final String[] _SYMBOLIC_NAMES = { - null, "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", - "CHAR", "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", - "ENUM", "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS", - "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", "NEW", "PACKAGE", - "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT", "STATIC", "STRICTFP", - "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW", "THROWS", "TRANSIENT", - "TRY", "VOID", "VOLATILE", "WHILE", "IntegerLiteral", "FloatingPointLiteral", - "BooleanLiteral", "CharacterLiteral", "StringLiteral", "NullLiteral", - "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", "SEMI", "COMMA", - "DOT", "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION", "COLON", "EQUAL", - "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", "DEC", "ADD", "SUB", "MUL", - "DIV", "BITAND", "BITOR", "CARET", "MOD", "ARROW", "COLONCOLON", "ADD_ASSIGN", - "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", - "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "Identifier", - "AT", "ELLIPSIS", "WS", "COMMENT", "LINE_COMMENT" + null, null, "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", + "CATCH", "CHAR", "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", + "ELSE", "ENUM", "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO", + "IMPLEMENTS", "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", + "NEW", "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT", + "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW", + "THROWS", "TRANSIENT", "TRY", "VOID", "VOLATILE", "WHILE", "IntegerLiteral", + "FloatingPointLiteral", "BooleanLiteral", "CharacterLiteral", "StringLiteral", + "NullLiteral", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", + "SEMI", "COMMA", "DOT", "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION", + "COLON", "EQUAL", "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", "DEC", "ADD", + "SUB", "MUL", "DIV", "BITAND", "BITOR", "CARET", "MOD", "ARROW", "COLONCOLON", + "ADD_ASSIGN", "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", + "OR_ASSIGN", "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", + "URSHIFT_ASSIGN", "Identifier", "AT", "ELLIPSIS", "WS", "COMMENT", "LINE_COMMENT" }; public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); @@ -157,9 +157,9 @@ public class Java8Lexer extends Lexer { @Override public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { switch (ruleIndex) { - case 146: - return JavaLetter_sempred((RuleContext)_localctx, predIndex); case 147: + return JavaLetter_sempred((RuleContext)_localctx, predIndex); + case 148: return JavaLetterOrDigit_sempred((RuleContext)_localctx, predIndex); } return true; @@ -184,7 +184,7 @@ public class Java8Lexer extends Lexer { } public static final String _serializedATN = - "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2m\u0448\b\1\4\2\t"+ + "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2n\u044f\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"+ @@ -203,376 +203,378 @@ public class Java8Lexer extends Lexer { "\4\u008a\t\u008a\4\u008b\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e"+ "\t\u008e\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091\4\u0092\t\u0092"+ "\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095\t\u0095\4\u0096\t\u0096\4\u0097"+ - "\t\u0097\4\u0098\t\u0098\4\u0099\t\u0099\4\u009a\t\u009a\3\2\3\2\3\2\3"+ - "\2\3\2\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\4"+ - "\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\7\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\n\3\n\3\n\3\n\3\n"+ - "\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\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\r\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3"+ - "\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\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\27\3\27\3\27\3\30\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3"+ - "\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3"+ - "\32\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3"+ - "\34\3\34\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\36\3\36\3"+ - "\36\3\36\3\36\3\37\3\37\3\37\3\37\3\37\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%\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+\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\60\3\60\3\61\3\61\3\61\3\61\3\61\3\62\3\62\3\62\3"+ - "\62\3\62\3\62\3\62\3\62\3\62\3\63\3\63\3\63\3\63\3\63\3\63\3\64\3\64\3"+ - "\64\3\64\5\64\u028d\n\64\3\65\3\65\5\65\u0291\n\65\3\66\3\66\5\66\u0295"+ - "\n\66\3\67\3\67\5\67\u0299\n\67\38\38\58\u029d\n8\39\39\3:\3:\3:\5:\u02a4"+ - "\n:\3:\3:\3:\5:\u02a9\n:\5:\u02ab\n:\3;\3;\5;\u02af\n;\3;\5;\u02b2\n;"+ - "\3<\3<\5<\u02b6\n<\3=\3=\3>\6>\u02bb\n>\r>\16>\u02bc\3?\3?\5?\u02c1\n"+ - "?\3@\6@\u02c4\n@\r@\16@\u02c5\3A\3A\3A\3A\3B\3B\5B\u02ce\nB\3B\5B\u02d1"+ - "\nB\3C\3C\3D\6D\u02d6\nD\rD\16D\u02d7\3E\3E\5E\u02dc\nE\3F\3F\5F\u02e0"+ - "\nF\3F\3F\3G\3G\5G\u02e6\nG\3G\5G\u02e9\nG\3H\3H\3I\6I\u02ee\nI\rI\16"+ - "I\u02ef\3J\3J\5J\u02f4\nJ\3K\3K\3K\3K\3L\3L\5L\u02fc\nL\3L\5L\u02ff\n"+ - "L\3M\3M\3N\6N\u0304\nN\rN\16N\u0305\3O\3O\5O\u030a\nO\3P\3P\5P\u030e\n"+ - "P\3Q\3Q\3Q\5Q\u0313\nQ\3Q\5Q\u0316\nQ\3Q\5Q\u0319\nQ\3Q\3Q\3Q\5Q\u031e"+ - "\nQ\3Q\5Q\u0321\nQ\3Q\3Q\3Q\5Q\u0326\nQ\3Q\3Q\3Q\5Q\u032b\nQ\3R\3R\3R"+ - "\3S\3S\3T\5T\u0333\nT\3T\3T\3U\3U\3V\3V\3W\3W\3W\5W\u033e\nW\3X\3X\5X"+ - "\u0342\nX\3X\3X\3X\5X\u0347\nX\3X\3X\5X\u034b\nX\3Y\3Y\3Y\3Z\3Z\3[\3["+ - "\3[\3[\3[\3[\3[\3[\3[\5[\u035b\n[\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\5\\"+ - "\u0365\n\\\3]\3]\3^\3^\5^\u036b\n^\3^\3^\3_\6_\u0370\n_\r_\16_\u0371\3"+ - "`\3`\5`\u0376\n`\3a\3a\3a\3a\5a\u037c\na\3b\3b\3b\3b\3b\3b\3b\3b\3b\3"+ - "b\3b\5b\u0389\nb\3c\3c\3d\3d\3d\3d\3d\3d\3d\3e\3e\3e\3e\3e\3f\3f\3g\3"+ - "g\3h\3h\3i\3i\3j\3j\3k\3k\3l\3l\3m\3m\3n\3n\3o\3o\3p\3p\3q\3q\3r\3r\3"+ - "s\3s\3t\3t\3u\3u\3v\3v\3v\3w\3w\3w\3x\3x\3x\3y\3y\3y\3z\3z\3z\3{\3{\3"+ - "{\3|\3|\3|\3}\3}\3}\3~\3~\3\177\3\177\3\u0080\3\u0080\3\u0081\3\u0081"+ - "\3\u0082\3\u0082\3\u0083\3\u0083\3\u0084\3\u0084\3\u0085\3\u0085\3\u0086"+ - "\3\u0086\3\u0086\3\u0087\3\u0087\3\u0087\3\u0088\3\u0088\3\u0088\3\u0089"+ - "\3\u0089\3\u0089\3\u008a\3\u008a\3\u008a\3\u008b\3\u008b\3\u008b\3\u008c"+ - "\3\u008c\3\u008c\3\u008d\3\u008d\3\u008d\3\u008e\3\u008e\3\u008e\3\u008f"+ - "\3\u008f\3\u008f\3\u0090\3\u0090\3\u0090\3\u0090\3\u0091\3\u0091\3\u0091"+ - "\3\u0091\3\u0092\3\u0092\3\u0092\3\u0092\3\u0092\3\u0093\3\u0093\7\u0093"+ - "\u040e\n\u0093\f\u0093\16\u0093\u0411\13\u0093\3\u0094\3\u0094\3\u0094"+ - "\3\u0094\3\u0094\3\u0094\5\u0094\u0419\n\u0094\3\u0095\3\u0095\3\u0095"+ - "\3\u0095\3\u0095\3\u0095\5\u0095\u0421\n\u0095\3\u0096\3\u0096\3\u0097"+ - "\3\u0097\3\u0097\3\u0097\3\u0098\6\u0098\u042a\n\u0098\r\u0098\16\u0098"+ - "\u042b\3\u0098\3\u0098\3\u0099\3\u0099\3\u0099\3\u0099\7\u0099\u0434\n"+ - "\u0099\f\u0099\16\u0099\u0437\13\u0099\3\u0099\3\u0099\3\u0099\3\u0099"+ - "\3\u0099\3\u009a\3\u009a\3\u009a\3\u009a\7\u009a\u0442\n\u009a\f\u009a"+ - "\16\u009a\u0445\13\u009a\3\u009a\3\u009a\3\u0435\2\u009b\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\2k\2m\2o\2q\2s\2u\2w\2"+ - "y\2{\2}\2\177\2\u0081\2\u0083\2\u0085\2\u0087\2\u0089\2\u008b\2\u008d"+ - "\2\u008f\2\u0091\2\u0093\2\u0095\2\u0097\2\u0099\2\u009b\2\u009d\2\u009f"+ - "\66\u00a1\2\u00a3\2\u00a5\2\u00a7\2\u00a9\2\u00ab\2\u00ad\2\u00af\2\u00b1"+ - "\2\u00b3\2\u00b5\67\u00b78\u00b9\2\u00bb9\u00bd\2\u00bf\2\u00c1\2\u00c3"+ - "\2\u00c5\2\u00c7\2\u00c9:\u00cb;\u00cd<\u00cf=\u00d1>\u00d3?\u00d5@\u00d7"+ - "A\u00d9B\u00dbC\u00ddD\u00dfE\u00e1F\u00e3G\u00e5H\u00e7I\u00e9J\u00eb"+ - "K\u00edL\u00efM\u00f1N\u00f3O\u00f5P\u00f7Q\u00f9R\u00fbS\u00fdT\u00ff"+ - "U\u0101V\u0103W\u0105X\u0107Y\u0109Z\u010b[\u010d\\\u010f]\u0111^\u0113"+ - "_\u0115`\u0117a\u0119b\u011bc\u011dd\u011fe\u0121f\u0123g\u0125h\u0127"+ - "\2\u0129\2\u012bi\u012dj\u012fk\u0131l\u0133m\3\2\30\4\2NNnn\3\2\63;\4"+ - "\2ZZzz\5\2\62;CHch\3\2\629\4\2DDdd\3\2\62\63\4\2GGgg\4\2--//\6\2FFHHf"+ - "fhh\4\2RRrr\4\2))^^\4\2$$^^\n\2$$))^^ddhhppttvv\3\2\62\65\6\2&&C\\aac"+ - "|\4\2\2\u0081\ud802\udc01\3\2\ud802\udc01\3\2\udc02\ue001\7\2&&\62;C\\"+ - "aac|\5\2\13\f\16\17\"\"\4\2\f\f\17\17\u0456\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\2"+ - "M\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\2\u009f\3\2\2\2\2\u00b5\3\2\2\2\2\u00b7\3\2\2\2\2\u00bb"+ - "\3\2\2\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\2\u00cd\3\2\2\2\2\u00cf\3\2\2"+ - "\2\2\u00d1\3\2\2\2\2\u00d3\3\2\2\2\2\u00d5\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9"+ - "\3\2\2\2\2\u00db\3\2\2\2\2\u00dd\3\2\2\2\2\u00df\3\2\2\2\2\u00e1\3\2\2"+ - "\2\2\u00e3\3\2\2\2\2\u00e5\3\2\2\2\2\u00e7\3\2\2\2\2\u00e9\3\2\2\2\2\u00eb"+ - "\3\2\2\2\2\u00ed\3\2\2\2\2\u00ef\3\2\2\2\2\u00f1\3\2\2\2\2\u00f3\3\2\2"+ - "\2\2\u00f5\3\2\2\2\2\u00f7\3\2\2\2\2\u00f9\3\2\2\2\2\u00fb\3\2\2\2\2\u00fd"+ - "\3\2\2\2\2\u00ff\3\2\2\2\2\u0101\3\2\2\2\2\u0103\3\2\2\2\2\u0105\3\2\2"+ - "\2\2\u0107\3\2\2\2\2\u0109\3\2\2\2\2\u010b\3\2\2\2\2\u010d\3\2\2\2\2\u010f"+ - "\3\2\2\2\2\u0111\3\2\2\2\2\u0113\3\2\2\2\2\u0115\3\2\2\2\2\u0117\3\2\2"+ - "\2\2\u0119\3\2\2\2\2\u011b\3\2\2\2\2\u011d\3\2\2\2\2\u011f\3\2\2\2\2\u0121"+ - "\3\2\2\2\2\u0123\3\2\2\2\2\u0125\3\2\2\2\2\u012b\3\2\2\2\2\u012d\3\2\2"+ - "\2\2\u012f\3\2\2\2\2\u0131\3\2\2\2\2\u0133\3\2\2\2\3\u0135\3\2\2\2\5\u013e"+ - "\3\2\2\2\7\u0145\3\2\2\2\t\u014d\3\2\2\2\13\u0153\3\2\2\2\r\u0158\3\2"+ - "\2\2\17\u015d\3\2\2\2\21\u0163\3\2\2\2\23\u0168\3\2\2\2\25\u016e\3\2\2"+ - "\2\27\u0174\3\2\2\2\31\u017d\3\2\2\2\33\u0185\3\2\2\2\35\u0188\3\2\2\2"+ - "\37\u018f\3\2\2\2!\u0194\3\2\2\2#\u0199\3\2\2\2%\u01a1\3\2\2\2\'\u01a7"+ - "\3\2\2\2)\u01af\3\2\2\2+\u01b5\3\2\2\2-\u01b9\3\2\2\2/\u01bc\3\2\2\2\61"+ - "\u01c1\3\2\2\2\63\u01cc\3\2\2\2\65\u01d3\3\2\2\2\67\u01de\3\2\2\29\u01e2"+ - "\3\2\2\2;\u01ec\3\2\2\2=\u01f1\3\2\2\2?\u01f8\3\2\2\2A\u01fc\3\2\2\2C"+ - "\u0204\3\2\2\2E\u020c\3\2\2\2G\u0216\3\2\2\2I\u021d\3\2\2\2K\u0224\3\2"+ - "\2\2M\u022a\3\2\2\2O\u0231\3\2\2\2Q\u023a\3\2\2\2S\u0240\3\2\2\2U\u0247"+ - "\3\2\2\2W\u0254\3\2\2\2Y\u0259\3\2\2\2[\u025f\3\2\2\2]\u0266\3\2\2\2_"+ - "\u0270\3\2\2\2a\u0274\3\2\2\2c\u0279\3\2\2\2e\u0282\3\2\2\2g\u028c\3\2"+ - "\2\2i\u028e\3\2\2\2k\u0292\3\2\2\2m\u0296\3\2\2\2o\u029a\3\2\2\2q\u029e"+ - "\3\2\2\2s\u02aa\3\2\2\2u\u02ac\3\2\2\2w\u02b5\3\2\2\2y\u02b7\3\2\2\2{"+ - "\u02ba\3\2\2\2}\u02c0\3\2\2\2\177\u02c3\3\2\2\2\u0081\u02c7\3\2\2\2\u0083"+ - "\u02cb\3\2\2\2\u0085\u02d2\3\2\2\2\u0087\u02d5\3\2\2\2\u0089\u02db\3\2"+ - "\2\2\u008b\u02dd\3\2\2\2\u008d\u02e3\3\2\2\2\u008f\u02ea\3\2\2\2\u0091"+ - "\u02ed\3\2\2\2\u0093\u02f3\3\2\2\2\u0095\u02f5\3\2\2\2\u0097\u02f9\3\2"+ - "\2\2\u0099\u0300\3\2\2\2\u009b\u0303\3\2\2\2\u009d\u0309\3\2\2\2\u009f"+ - "\u030d\3\2\2\2\u00a1\u032a\3\2\2\2\u00a3\u032c\3\2\2\2\u00a5\u032f\3\2"+ - "\2\2\u00a7\u0332\3\2\2\2\u00a9\u0336\3\2\2\2\u00ab\u0338\3\2\2\2\u00ad"+ - "\u033a\3\2\2\2\u00af\u034a\3\2\2\2\u00b1\u034c\3\2\2\2\u00b3\u034f\3\2"+ - "\2\2\u00b5\u035a\3\2\2\2\u00b7\u0364\3\2\2\2\u00b9\u0366\3\2\2\2\u00bb"+ - "\u0368\3\2\2\2\u00bd\u036f\3\2\2\2\u00bf\u0375\3\2\2\2\u00c1\u037b\3\2"+ - "\2\2\u00c3\u0388\3\2\2\2\u00c5\u038a\3\2\2\2\u00c7\u038c\3\2\2\2\u00c9"+ - "\u0393\3\2\2\2\u00cb\u0398\3\2\2\2\u00cd\u039a\3\2\2\2\u00cf\u039c\3\2"+ - "\2\2\u00d1\u039e\3\2\2\2\u00d3\u03a0\3\2\2\2\u00d5\u03a2\3\2\2\2\u00d7"+ - "\u03a4\3\2\2\2\u00d9\u03a6\3\2\2\2\u00db\u03a8\3\2\2\2\u00dd\u03aa\3\2"+ - "\2\2\u00df\u03ac\3\2\2\2\u00e1\u03ae\3\2\2\2\u00e3\u03b0\3\2\2\2\u00e5"+ - "\u03b2\3\2\2\2\u00e7\u03b4\3\2\2\2\u00e9\u03b6\3\2\2\2\u00eb\u03b8\3\2"+ - "\2\2\u00ed\u03bb\3\2\2\2\u00ef\u03be\3\2\2\2\u00f1\u03c1\3\2\2\2\u00f3"+ - "\u03c4\3\2\2\2\u00f5\u03c7\3\2\2\2\u00f7\u03ca\3\2\2\2\u00f9\u03cd\3\2"+ - "\2\2\u00fb\u03d0\3\2\2\2\u00fd\u03d2\3\2\2\2\u00ff\u03d4\3\2\2\2\u0101"+ - "\u03d6\3\2\2\2\u0103\u03d8\3\2\2\2\u0105\u03da\3\2\2\2\u0107\u03dc\3\2"+ - "\2\2\u0109\u03de\3\2\2\2\u010b\u03e0\3\2\2\2\u010d\u03e3\3\2\2\2\u010f"+ - "\u03e6\3\2\2\2\u0111\u03e9\3\2\2\2\u0113\u03ec\3\2\2\2\u0115\u03ef\3\2"+ - "\2\2\u0117\u03f2\3\2\2\2\u0119\u03f5\3\2\2\2\u011b\u03f8\3\2\2\2\u011d"+ - "\u03fb\3\2\2\2\u011f\u03fe\3\2\2\2\u0121\u0402\3\2\2\2\u0123\u0406\3\2"+ - "\2\2\u0125\u040b\3\2\2\2\u0127\u0418\3\2\2\2\u0129\u0420\3\2\2\2\u012b"+ - "\u0422\3\2\2\2\u012d\u0424\3\2\2\2\u012f\u0429\3\2\2\2\u0131\u042f\3\2"+ - "\2\2\u0133\u043d\3\2\2\2\u0135\u0136\7c\2\2\u0136\u0137\7d\2\2\u0137\u0138"+ - "\7u\2\2\u0138\u0139\7v\2\2\u0139\u013a\7t\2\2\u013a\u013b\7c\2\2\u013b"+ - "\u013c\7e\2\2\u013c\u013d\7v\2\2\u013d\4\3\2\2\2\u013e\u013f\7c\2\2\u013f"+ - "\u0140\7u\2\2\u0140\u0141\7u\2\2\u0141\u0142\7g\2\2\u0142\u0143\7t\2\2"+ - "\u0143\u0144\7v\2\2\u0144\6\3\2\2\2\u0145\u0146\7d\2\2\u0146\u0147\7q"+ - "\2\2\u0147\u0148\7q\2\2\u0148\u0149\7n\2\2\u0149\u014a\7g\2\2\u014a\u014b"+ - "\7c\2\2\u014b\u014c\7p\2\2\u014c\b\3\2\2\2\u014d\u014e\7d\2\2\u014e\u014f"+ - "\7t\2\2\u014f\u0150\7g\2\2\u0150\u0151\7c\2\2\u0151\u0152\7m\2\2\u0152"+ - "\n\3\2\2\2\u0153\u0154\7d\2\2\u0154\u0155\7{\2\2\u0155\u0156\7v\2\2\u0156"+ - "\u0157\7g\2\2\u0157\f\3\2\2\2\u0158\u0159\7e\2\2\u0159\u015a\7c\2\2\u015a"+ - "\u015b\7u\2\2\u015b\u015c\7g\2\2\u015c\16\3\2\2\2\u015d\u015e\7e\2\2\u015e"+ - "\u015f\7c\2\2\u015f\u0160\7v\2\2\u0160\u0161\7e\2\2\u0161\u0162\7j\2\2"+ - "\u0162\20\3\2\2\2\u0163\u0164\7e\2\2\u0164\u0165\7j\2\2\u0165\u0166\7"+ - "c\2\2\u0166\u0167\7t\2\2\u0167\22\3\2\2\2\u0168\u0169\7e\2\2\u0169\u016a"+ - "\7n\2\2\u016a\u016b\7c\2\2\u016b\u016c\7u\2\2\u016c\u016d\7u\2\2\u016d"+ - "\24\3\2\2\2\u016e\u016f\7e\2\2\u016f\u0170\7q\2\2\u0170\u0171\7p\2\2\u0171"+ - "\u0172\7u\2\2\u0172\u0173\7v\2\2\u0173\26\3\2\2\2\u0174\u0175\7e\2\2\u0175"+ - "\u0176\7q\2\2\u0176\u0177\7p\2\2\u0177\u0178\7v\2\2\u0178\u0179\7k\2\2"+ - "\u0179\u017a\7p\2\2\u017a\u017b\7w\2\2\u017b\u017c\7g\2\2\u017c\30\3\2"+ - "\2\2\u017d\u017e\7f\2\2\u017e\u017f\7g\2\2\u017f\u0180\7h\2\2\u0180\u0181"+ - "\7c\2\2\u0181\u0182\7w\2\2\u0182\u0183\7n\2\2\u0183\u0184\7v\2\2\u0184"+ - "\32\3\2\2\2\u0185\u0186\7f\2\2\u0186\u0187\7q\2\2\u0187\34\3\2\2\2\u0188"+ - "\u0189\7f\2\2\u0189\u018a\7q\2\2\u018a\u018b\7w\2\2\u018b\u018c\7d\2\2"+ - "\u018c\u018d\7n\2\2\u018d\u018e\7g\2\2\u018e\36\3\2\2\2\u018f\u0190\7"+ - "g\2\2\u0190\u0191\7n\2\2\u0191\u0192\7u\2\2\u0192\u0193\7g\2\2\u0193 "+ - "\3\2\2\2\u0194\u0195\7g\2\2\u0195\u0196\7p\2\2\u0196\u0197\7w\2\2\u0197"+ - "\u0198\7o\2\2\u0198\"\3\2\2\2\u0199\u019a\7g\2\2\u019a\u019b\7z\2\2\u019b"+ - "\u019c\7v\2\2\u019c\u019d\7g\2\2\u019d\u019e\7p\2\2\u019e\u019f\7f\2\2"+ - "\u019f\u01a0\7u\2\2\u01a0$\3\2\2\2\u01a1\u01a2\7h\2\2\u01a2\u01a3\7k\2"+ - "\2\u01a3\u01a4\7p\2\2\u01a4\u01a5\7c\2\2\u01a5\u01a6\7n\2\2\u01a6&\3\2"+ - "\2\2\u01a7\u01a8\7h\2\2\u01a8\u01a9\7k\2\2\u01a9\u01aa\7p\2\2\u01aa\u01ab"+ - "\7c\2\2\u01ab\u01ac\7n\2\2\u01ac\u01ad\7n\2\2\u01ad\u01ae\7{\2\2\u01ae"+ - "(\3\2\2\2\u01af\u01b0\7h\2\2\u01b0\u01b1\7n\2\2\u01b1\u01b2\7q\2\2\u01b2"+ - "\u01b3\7c\2\2\u01b3\u01b4\7v\2\2\u01b4*\3\2\2\2\u01b5\u01b6\7h\2\2\u01b6"+ - "\u01b7\7q\2\2\u01b7\u01b8\7t\2\2\u01b8,\3\2\2\2\u01b9\u01ba\7k\2\2\u01ba"+ - "\u01bb\7h\2\2\u01bb.\3\2\2\2\u01bc\u01bd\7i\2\2\u01bd\u01be\7q\2\2\u01be"+ - "\u01bf\7v\2\2\u01bf\u01c0\7q\2\2\u01c0\60\3\2\2\2\u01c1\u01c2\7k\2\2\u01c2"+ - "\u01c3\7o\2\2\u01c3\u01c4\7r\2\2\u01c4\u01c5\7n\2\2\u01c5\u01c6\7g\2\2"+ - "\u01c6\u01c7\7o\2\2\u01c7\u01c8\7g\2\2\u01c8\u01c9\7p\2\2\u01c9\u01ca"+ - "\7v\2\2\u01ca\u01cb\7u\2\2\u01cb\62\3\2\2\2\u01cc\u01cd\7k\2\2\u01cd\u01ce"+ - "\7o\2\2\u01ce\u01cf\7r\2\2\u01cf\u01d0\7q\2\2\u01d0\u01d1\7t\2\2\u01d1"+ - "\u01d2\7v\2\2\u01d2\64\3\2\2\2\u01d3\u01d4\7k\2\2\u01d4\u01d5\7p\2\2\u01d5"+ - "\u01d6\7u\2\2\u01d6\u01d7\7v\2\2\u01d7\u01d8\7c\2\2\u01d8\u01d9\7p\2\2"+ - "\u01d9\u01da\7e\2\2\u01da\u01db\7g\2\2\u01db\u01dc\7q\2\2\u01dc\u01dd"+ - "\7h\2\2\u01dd\66\3\2\2\2\u01de\u01df\7k\2\2\u01df\u01e0\7p\2\2\u01e0\u01e1"+ - "\7v\2\2\u01e18\3\2\2\2\u01e2\u01e3\7k\2\2\u01e3\u01e4\7p\2\2\u01e4\u01e5"+ - "\7v\2\2\u01e5\u01e6\7g\2\2\u01e6\u01e7\7t\2\2\u01e7\u01e8\7h\2\2\u01e8"+ - "\u01e9\7c\2\2\u01e9\u01ea\7e\2\2\u01ea\u01eb\7g\2\2\u01eb:\3\2\2\2\u01ec"+ - "\u01ed\7n\2\2\u01ed\u01ee\7q\2\2\u01ee\u01ef\7p\2\2\u01ef\u01f0\7i\2\2"+ - "\u01f0<\3\2\2\2\u01f1\u01f2\7p\2\2\u01f2\u01f3\7c\2\2\u01f3\u01f4\7v\2"+ - "\2\u01f4\u01f5\7k\2\2\u01f5\u01f6\7x\2\2\u01f6\u01f7\7g\2\2\u01f7>\3\2"+ - "\2\2\u01f8\u01f9\7p\2\2\u01f9\u01fa\7g\2\2\u01fa\u01fb\7y\2\2\u01fb@\3"+ - "\2\2\2\u01fc\u01fd\7r\2\2\u01fd\u01fe\7c\2\2\u01fe\u01ff\7e\2\2\u01ff"+ - "\u0200\7m\2\2\u0200\u0201\7c\2\2\u0201\u0202\7i\2\2\u0202\u0203\7g\2\2"+ - "\u0203B\3\2\2\2\u0204\u0205\7r\2\2\u0205\u0206\7t\2\2\u0206\u0207\7k\2"+ - "\2\u0207\u0208\7x\2\2\u0208\u0209\7c\2\2\u0209\u020a\7v\2\2\u020a\u020b"+ - "\7g\2\2\u020bD\3\2\2\2\u020c\u020d\7r\2\2\u020d\u020e\7t\2\2\u020e\u020f"+ - "\7q\2\2\u020f\u0210\7v\2\2\u0210\u0211\7g\2\2\u0211\u0212\7e\2\2\u0212"+ - "\u0213\7v\2\2\u0213\u0214\7g\2\2\u0214\u0215\7f\2\2\u0215F\3\2\2\2\u0216"+ - "\u0217\7r\2\2\u0217\u0218\7w\2\2\u0218\u0219\7d\2\2\u0219\u021a\7n\2\2"+ - "\u021a\u021b\7k\2\2\u021b\u021c\7e\2\2\u021cH\3\2\2\2\u021d\u021e\7t\2"+ - "\2\u021e\u021f\7g\2\2\u021f\u0220\7v\2\2\u0220\u0221\7w\2\2\u0221\u0222"+ - "\7t\2\2\u0222\u0223\7p\2\2\u0223J\3\2\2\2\u0224\u0225\7u\2\2\u0225\u0226"+ - "\7j\2\2\u0226\u0227\7q\2\2\u0227\u0228\7t\2\2\u0228\u0229\7v\2\2\u0229"+ - "L\3\2\2\2\u022a\u022b\7u\2\2\u022b\u022c\7v\2\2\u022c\u022d\7c\2\2\u022d"+ - "\u022e\7v\2\2\u022e\u022f\7k\2\2\u022f\u0230\7e\2\2\u0230N\3\2\2\2\u0231"+ - "\u0232\7u\2\2\u0232\u0233\7v\2\2\u0233\u0234\7t\2\2\u0234\u0235\7k\2\2"+ - "\u0235\u0236\7e\2\2\u0236\u0237\7v\2\2\u0237\u0238\7h\2\2\u0238\u0239"+ - "\7r\2\2\u0239P\3\2\2\2\u023a\u023b\7u\2\2\u023b\u023c\7w\2\2\u023c\u023d"+ - "\7r\2\2\u023d\u023e\7g\2\2\u023e\u023f\7t\2\2\u023fR\3\2\2\2\u0240\u0241"+ - "\7u\2\2\u0241\u0242\7y\2\2\u0242\u0243\7k\2\2\u0243\u0244\7v\2\2\u0244"+ - "\u0245\7e\2\2\u0245\u0246\7j\2\2\u0246T\3\2\2\2\u0247\u0248\7u\2\2\u0248"+ - "\u0249\7{\2\2\u0249\u024a\7p\2\2\u024a\u024b\7e\2\2\u024b\u024c\7j\2\2"+ - "\u024c\u024d\7t\2\2\u024d\u024e\7q\2\2\u024e\u024f\7p\2\2\u024f\u0250"+ - "\7k\2\2\u0250\u0251\7|\2\2\u0251\u0252\7g\2\2\u0252\u0253\7f\2\2\u0253"+ - "V\3\2\2\2\u0254\u0255\7v\2\2\u0255\u0256\7j\2\2\u0256\u0257\7k\2\2\u0257"+ - "\u0258\7u\2\2\u0258X\3\2\2\2\u0259\u025a\7v\2\2\u025a\u025b\7j\2\2\u025b"+ - "\u025c\7t\2\2\u025c\u025d\7q\2\2\u025d\u025e\7y\2\2\u025eZ\3\2\2\2\u025f"+ - "\u0260\7v\2\2\u0260\u0261\7j\2\2\u0261\u0262\7t\2\2\u0262\u0263\7q\2\2"+ - "\u0263\u0264\7y\2\2\u0264\u0265\7u\2\2\u0265\\\3\2\2\2\u0266\u0267\7v"+ - "\2\2\u0267\u0268\7t\2\2\u0268\u0269\7c\2\2\u0269\u026a\7p\2\2\u026a\u026b"+ - "\7u\2\2\u026b\u026c\7k\2\2\u026c\u026d\7g\2\2\u026d\u026e\7p\2\2\u026e"+ - "\u026f\7v\2\2\u026f^\3\2\2\2\u0270\u0271\7v\2\2\u0271\u0272\7t\2\2\u0272"+ - "\u0273\7{\2\2\u0273`\3\2\2\2\u0274\u0275\7x\2\2\u0275\u0276\7q\2\2\u0276"+ - "\u0277\7k\2\2\u0277\u0278\7f\2\2\u0278b\3\2\2\2\u0279\u027a\7x\2\2\u027a"+ - "\u027b\7q\2\2\u027b\u027c\7n\2\2\u027c\u027d\7c\2\2\u027d\u027e\7v\2\2"+ - "\u027e\u027f\7k\2\2\u027f\u0280\7n\2\2\u0280\u0281\7g\2\2\u0281d\3\2\2"+ - "\2\u0282\u0283\7y\2\2\u0283\u0284\7j\2\2\u0284\u0285\7k\2\2\u0285\u0286"+ - "\7n\2\2\u0286\u0287\7g\2\2\u0287f\3\2\2\2\u0288\u028d\5i\65\2\u0289\u028d"+ - "\5k\66\2\u028a\u028d\5m\67\2\u028b\u028d\5o8\2\u028c\u0288\3\2\2\2\u028c"+ - "\u0289\3\2\2\2\u028c\u028a\3\2\2\2\u028c\u028b\3\2\2\2\u028dh\3\2\2\2"+ - "\u028e\u0290\5s:\2\u028f\u0291\5q9\2\u0290\u028f\3\2\2\2\u0290\u0291\3"+ - "\2\2\2\u0291j\3\2\2\2\u0292\u0294\5\u0081A\2\u0293\u0295\5q9\2\u0294\u0293"+ - "\3\2\2\2\u0294\u0295\3\2\2\2\u0295l\3\2\2\2\u0296\u0298\5\u008bF\2\u0297"+ - "\u0299\5q9\2\u0298\u0297\3\2\2\2\u0298\u0299\3\2\2\2\u0299n\3\2\2\2\u029a"+ - "\u029c\5\u0095K\2\u029b\u029d\5q9\2\u029c\u029b\3\2\2\2\u029c\u029d\3"+ - "\2\2\2\u029dp\3\2\2\2\u029e\u029f\t\2\2\2\u029fr\3\2\2\2\u02a0\u02ab\7"+ - "\62\2\2\u02a1\u02a8\5y=\2\u02a2\u02a4\5u;\2\u02a3\u02a2\3\2\2\2\u02a3"+ - "\u02a4\3\2\2\2\u02a4\u02a9\3\2\2\2\u02a5\u02a6\5\177@\2\u02a6\u02a7\5"+ - "u;\2\u02a7\u02a9\3\2\2\2\u02a8\u02a3\3\2\2\2\u02a8\u02a5\3\2\2\2\u02a9"+ - "\u02ab\3\2\2\2\u02aa\u02a0\3\2\2\2\u02aa\u02a1\3\2\2\2\u02abt\3\2\2\2"+ - "\u02ac\u02b1\5w<\2\u02ad\u02af\5{>\2\u02ae\u02ad\3\2\2\2\u02ae\u02af\3"+ - "\2\2\2\u02af\u02b0\3\2\2\2\u02b0\u02b2\5w<\2\u02b1\u02ae\3\2\2\2\u02b1"+ - "\u02b2\3\2\2\2\u02b2v\3\2\2\2\u02b3\u02b6\7\62\2\2\u02b4\u02b6\5y=\2\u02b5"+ - "\u02b3\3\2\2\2\u02b5\u02b4\3\2\2\2\u02b6x\3\2\2\2\u02b7\u02b8\t\3\2\2"+ - "\u02b8z\3\2\2\2\u02b9\u02bb\5}?\2\u02ba\u02b9\3\2\2\2\u02bb\u02bc\3\2"+ - "\2\2\u02bc\u02ba\3\2\2\2\u02bc\u02bd\3\2\2\2\u02bd|\3\2\2\2\u02be\u02c1"+ - "\5w<\2\u02bf\u02c1\7a\2\2\u02c0\u02be\3\2\2\2\u02c0\u02bf\3\2\2\2\u02c1"+ - "~\3\2\2\2\u02c2\u02c4\7a\2\2\u02c3\u02c2\3\2\2\2\u02c4\u02c5\3\2\2\2\u02c5"+ - "\u02c3\3\2\2\2\u02c5\u02c6\3\2\2\2\u02c6\u0080\3\2\2\2\u02c7\u02c8\7\62"+ - "\2\2\u02c8\u02c9\t\4\2\2\u02c9\u02ca\5\u0083B\2\u02ca\u0082\3\2\2\2\u02cb"+ - "\u02d0\5\u0085C\2\u02cc\u02ce\5\u0087D\2\u02cd\u02cc\3\2\2\2\u02cd\u02ce"+ - "\3\2\2\2\u02ce\u02cf\3\2\2\2\u02cf\u02d1\5\u0085C\2\u02d0\u02cd\3\2\2"+ - "\2\u02d0\u02d1\3\2\2\2\u02d1\u0084\3\2\2\2\u02d2\u02d3\t\5\2\2\u02d3\u0086"+ - "\3\2\2\2\u02d4\u02d6\5\u0089E\2\u02d5\u02d4\3\2\2\2\u02d6\u02d7\3\2\2"+ - "\2\u02d7\u02d5\3\2\2\2\u02d7\u02d8\3\2\2\2\u02d8\u0088\3\2\2\2\u02d9\u02dc"+ - "\5\u0085C\2\u02da\u02dc\7a\2\2\u02db\u02d9\3\2\2\2\u02db\u02da\3\2\2\2"+ - "\u02dc\u008a\3\2\2\2\u02dd\u02df\7\62\2\2\u02de\u02e0\5\177@\2\u02df\u02de"+ - "\3\2\2\2\u02df\u02e0\3\2\2\2\u02e0\u02e1\3\2\2\2\u02e1\u02e2\5\u008dG"+ - "\2\u02e2\u008c\3\2\2\2\u02e3\u02e8\5\u008fH\2\u02e4\u02e6\5\u0091I\2\u02e5"+ - "\u02e4\3\2\2\2\u02e5\u02e6\3\2\2\2\u02e6\u02e7\3\2\2\2\u02e7\u02e9\5\u008f"+ - "H\2\u02e8\u02e5\3\2\2\2\u02e8\u02e9\3\2\2\2\u02e9\u008e\3\2\2\2\u02ea"+ - "\u02eb\t\6\2\2\u02eb\u0090\3\2\2\2\u02ec\u02ee\5\u0093J\2\u02ed\u02ec"+ - "\3\2\2\2\u02ee\u02ef\3\2\2\2\u02ef\u02ed\3\2\2\2\u02ef\u02f0\3\2\2\2\u02f0"+ - "\u0092\3\2\2\2\u02f1\u02f4\5\u008fH\2\u02f2\u02f4\7a\2\2\u02f3\u02f1\3"+ - "\2\2\2\u02f3\u02f2\3\2\2\2\u02f4\u0094\3\2\2\2\u02f5\u02f6\7\62\2\2\u02f6"+ - "\u02f7\t\7\2\2\u02f7\u02f8\5\u0097L\2\u02f8\u0096\3\2\2\2\u02f9\u02fe"+ - "\5\u0099M\2\u02fa\u02fc\5\u009bN\2\u02fb\u02fa\3\2\2\2\u02fb\u02fc\3\2"+ - "\2\2\u02fc\u02fd\3\2\2\2\u02fd\u02ff\5\u0099M\2\u02fe\u02fb\3\2\2\2\u02fe"+ - "\u02ff\3\2\2\2\u02ff\u0098\3\2\2\2\u0300\u0301\t\b\2\2\u0301\u009a\3\2"+ - "\2\2\u0302\u0304\5\u009dO\2\u0303\u0302\3\2\2\2\u0304\u0305\3\2\2\2\u0305"+ - "\u0303\3\2\2\2\u0305\u0306\3\2\2\2\u0306\u009c\3\2\2\2\u0307\u030a\5\u0099"+ - "M\2\u0308\u030a\7a\2\2\u0309\u0307\3\2\2\2\u0309\u0308\3\2\2\2\u030a\u009e"+ - "\3\2\2\2\u030b\u030e\5\u00a1Q\2\u030c\u030e\5\u00adW\2\u030d\u030b\3\2"+ - "\2\2\u030d\u030c\3\2\2\2\u030e\u00a0\3\2\2\2\u030f\u0310\5u;\2\u0310\u0312"+ - "\7\60\2\2\u0311\u0313\5u;\2\u0312\u0311\3\2\2\2\u0312\u0313\3\2\2\2\u0313"+ - "\u0315\3\2\2\2\u0314\u0316\5\u00a3R\2\u0315\u0314\3\2\2\2\u0315\u0316"+ - "\3\2\2\2\u0316\u0318\3\2\2\2\u0317\u0319\5\u00abV\2\u0318\u0317\3\2\2"+ - "\2\u0318\u0319\3\2\2\2\u0319\u032b\3\2\2\2\u031a\u031b\7\60\2\2\u031b"+ - "\u031d\5u;\2\u031c\u031e\5\u00a3R\2\u031d\u031c\3\2\2\2\u031d\u031e\3"+ - "\2\2\2\u031e\u0320\3\2\2\2\u031f\u0321\5\u00abV\2\u0320\u031f\3\2\2\2"+ - "\u0320\u0321\3\2\2\2\u0321\u032b\3\2\2\2\u0322\u0323\5u;\2\u0323\u0325"+ - "\5\u00a3R\2\u0324\u0326\5\u00abV\2\u0325\u0324\3\2\2\2\u0325\u0326\3\2"+ - "\2\2\u0326\u032b\3\2\2\2\u0327\u0328\5u;\2\u0328\u0329\5\u00abV\2\u0329"+ - "\u032b\3\2\2\2\u032a\u030f\3\2\2\2\u032a\u031a\3\2\2\2\u032a\u0322\3\2"+ - "\2\2\u032a\u0327\3\2\2\2\u032b\u00a2\3\2\2\2\u032c\u032d\5\u00a5S\2\u032d"+ - "\u032e\5\u00a7T\2\u032e\u00a4\3\2\2\2\u032f\u0330\t\t\2\2\u0330\u00a6"+ - "\3\2\2\2\u0331\u0333\5\u00a9U\2\u0332\u0331\3\2\2\2\u0332\u0333\3\2\2"+ - "\2\u0333\u0334\3\2\2\2\u0334\u0335\5u;\2\u0335\u00a8\3\2\2\2\u0336\u0337"+ - "\t\n\2\2\u0337\u00aa\3\2\2\2\u0338\u0339\t\13\2\2\u0339\u00ac\3\2\2\2"+ - "\u033a\u033b\5\u00afX\2\u033b\u033d\5\u00b1Y\2\u033c\u033e\5\u00abV\2"+ - "\u033d\u033c\3\2\2\2\u033d\u033e\3\2\2\2\u033e\u00ae\3\2\2\2\u033f\u0341"+ - "\5\u0081A\2\u0340\u0342\7\60\2\2\u0341\u0340\3\2\2\2\u0341\u0342\3\2\2"+ - "\2\u0342\u034b\3\2\2\2\u0343\u0344\7\62\2\2\u0344\u0346\t\4\2\2\u0345"+ - "\u0347\5\u0083B\2\u0346\u0345\3\2\2\2\u0346\u0347\3\2\2\2\u0347\u0348"+ - "\3\2\2\2\u0348\u0349\7\60\2\2\u0349\u034b\5\u0083B\2\u034a\u033f\3\2\2"+ - "\2\u034a\u0343\3\2\2\2\u034b\u00b0\3\2\2\2\u034c\u034d\5\u00b3Z\2\u034d"+ - "\u034e\5\u00a7T\2\u034e\u00b2\3\2\2\2\u034f\u0350\t\f\2\2\u0350\u00b4"+ - "\3\2\2\2\u0351\u0352\7v\2\2\u0352\u0353\7t\2\2\u0353\u0354\7w\2\2\u0354"+ - "\u035b\7g\2\2\u0355\u0356\7h\2\2\u0356\u0357\7c\2\2\u0357\u0358\7n\2\2"+ - "\u0358\u0359\7u\2\2\u0359\u035b\7g\2\2\u035a\u0351\3\2\2\2\u035a\u0355"+ - "\3\2\2\2\u035b\u00b6\3\2\2\2\u035c\u035d\7)\2\2\u035d\u035e\5\u00b9]\2"+ - "\u035e\u035f\7)\2\2\u035f\u0365\3\2\2\2\u0360\u0361\7)\2\2\u0361\u0362"+ - "\5\u00c1a\2\u0362\u0363\7)\2\2\u0363\u0365\3\2\2\2\u0364\u035c\3\2\2\2"+ - "\u0364\u0360\3\2\2\2\u0365\u00b8\3\2\2\2\u0366\u0367\n\r\2\2\u0367\u00ba"+ - "\3\2\2\2\u0368\u036a\7$\2\2\u0369\u036b\5\u00bd_\2\u036a\u0369\3\2\2\2"+ - "\u036a\u036b\3\2\2\2\u036b\u036c\3\2\2\2\u036c\u036d\7$\2\2\u036d\u00bc"+ - "\3\2\2\2\u036e\u0370\5\u00bf`\2\u036f\u036e\3\2\2\2\u0370\u0371\3\2\2"+ - "\2\u0371\u036f\3\2\2\2\u0371\u0372\3\2\2\2\u0372\u00be\3\2\2\2\u0373\u0376"+ - "\n\16\2\2\u0374\u0376\5\u00c1a\2\u0375\u0373\3\2\2\2\u0375\u0374\3\2\2"+ - "\2\u0376\u00c0\3\2\2\2\u0377\u0378\7^\2\2\u0378\u037c\t\17\2\2\u0379\u037c"+ - "\5\u00c3b\2\u037a\u037c\5\u00c7d\2\u037b\u0377\3\2\2\2\u037b\u0379\3\2"+ - "\2\2\u037b\u037a\3\2\2\2\u037c\u00c2\3\2\2\2\u037d\u037e\7^\2\2\u037e"+ - "\u0389\5\u008fH\2\u037f\u0380\7^\2\2\u0380\u0381\5\u008fH\2\u0381\u0382"+ - "\5\u008fH\2\u0382\u0389\3\2\2\2\u0383\u0384\7^\2\2\u0384\u0385\5\u00c5"+ - "c\2\u0385\u0386\5\u008fH\2\u0386\u0387\5\u008fH\2\u0387\u0389\3\2\2\2"+ - "\u0388\u037d\3\2\2\2\u0388\u037f\3\2\2\2\u0388\u0383\3\2\2\2\u0389\u00c4"+ - "\3\2\2\2\u038a\u038b\t\20\2\2\u038b\u00c6\3\2\2\2\u038c\u038d\7^\2\2\u038d"+ - "\u038e\7w\2\2\u038e\u038f\5\u0085C\2\u038f\u0390\5\u0085C\2\u0390\u0391"+ - "\5\u0085C\2\u0391\u0392\5\u0085C\2\u0392\u00c8\3\2\2\2\u0393\u0394\7p"+ - "\2\2\u0394\u0395\7w\2\2\u0395\u0396\7n\2\2\u0396\u0397\7n\2\2\u0397\u00ca"+ - "\3\2\2\2\u0398\u0399\7*\2\2\u0399\u00cc\3\2\2\2\u039a\u039b\7+\2\2\u039b"+ - "\u00ce\3\2\2\2\u039c\u039d\7}\2\2\u039d\u00d0\3\2\2\2\u039e\u039f\7\177"+ - "\2\2\u039f\u00d2\3\2\2\2\u03a0\u03a1\7]\2\2\u03a1\u00d4\3\2\2\2\u03a2"+ - "\u03a3\7_\2\2\u03a3\u00d6\3\2\2\2\u03a4\u03a5\7=\2\2\u03a5\u00d8\3\2\2"+ - "\2\u03a6\u03a7\7.\2\2\u03a7\u00da\3\2\2\2\u03a8\u03a9\7\60\2\2\u03a9\u00dc"+ - "\3\2\2\2\u03aa\u03ab\7?\2\2\u03ab\u00de\3\2\2\2\u03ac\u03ad\7@\2\2\u03ad"+ - "\u00e0\3\2\2\2\u03ae\u03af\7>\2\2\u03af\u00e2\3\2\2\2\u03b0\u03b1\7#\2"+ - "\2\u03b1\u00e4\3\2\2\2\u03b2\u03b3\7\u0080\2\2\u03b3\u00e6\3\2\2\2\u03b4"+ - "\u03b5\7A\2\2\u03b5\u00e8\3\2\2\2\u03b6\u03b7\7<\2\2\u03b7\u00ea\3\2\2"+ - "\2\u03b8\u03b9\7?\2\2\u03b9\u03ba\7?\2\2\u03ba\u00ec\3\2\2\2\u03bb\u03bc"+ - "\7>\2\2\u03bc\u03bd\7?\2\2\u03bd\u00ee\3\2\2\2\u03be\u03bf\7@\2\2\u03bf"+ - "\u03c0\7?\2\2\u03c0\u00f0\3\2\2\2\u03c1\u03c2\7#\2\2\u03c2\u03c3\7?\2"+ - "\2\u03c3\u00f2\3\2\2\2\u03c4\u03c5\7(\2\2\u03c5\u03c6\7(\2\2\u03c6\u00f4"+ - "\3\2\2\2\u03c7\u03c8\7~\2\2\u03c8\u03c9\7~\2\2\u03c9\u00f6\3\2\2\2\u03ca"+ - "\u03cb\7-\2\2\u03cb\u03cc\7-\2\2\u03cc\u00f8\3\2\2\2\u03cd\u03ce\7/\2"+ - "\2\u03ce\u03cf\7/\2\2\u03cf\u00fa\3\2\2\2\u03d0\u03d1\7-\2\2\u03d1\u00fc"+ - "\3\2\2\2\u03d2\u03d3\7/\2\2\u03d3\u00fe\3\2\2\2\u03d4\u03d5\7,\2\2\u03d5"+ - "\u0100\3\2\2\2\u03d6\u03d7\7\61\2\2\u03d7\u0102\3\2\2\2\u03d8\u03d9\7"+ - "(\2\2\u03d9\u0104\3\2\2\2\u03da\u03db\7~\2\2\u03db\u0106\3\2\2\2\u03dc"+ - "\u03dd\7`\2\2\u03dd\u0108\3\2\2\2\u03de\u03df\7\'\2\2\u03df\u010a\3\2"+ - "\2\2\u03e0\u03e1\7/\2\2\u03e1\u03e2\7@\2\2\u03e2\u010c\3\2\2\2\u03e3\u03e4"+ - "\7<\2\2\u03e4\u03e5\7<\2\2\u03e5\u010e\3\2\2\2\u03e6\u03e7\7-\2\2\u03e7"+ - "\u03e8\7?\2\2\u03e8\u0110\3\2\2\2\u03e9\u03ea\7/\2\2\u03ea\u03eb\7?\2"+ - "\2\u03eb\u0112\3\2\2\2\u03ec\u03ed\7,\2\2\u03ed\u03ee\7?\2\2\u03ee\u0114"+ - "\3\2\2\2\u03ef\u03f0\7\61\2\2\u03f0\u03f1\7?\2\2\u03f1\u0116\3\2\2\2\u03f2"+ - "\u03f3\7(\2\2\u03f3\u03f4\7?\2\2\u03f4\u0118\3\2\2\2\u03f5\u03f6\7~\2"+ - "\2\u03f6\u03f7\7?\2\2\u03f7\u011a\3\2\2\2\u03f8\u03f9\7`\2\2\u03f9\u03fa"+ - "\7?\2\2\u03fa\u011c\3\2\2\2\u03fb\u03fc\7\'\2\2\u03fc\u03fd\7?\2\2\u03fd"+ - "\u011e\3\2\2\2\u03fe\u03ff\7>\2\2\u03ff\u0400\7>\2\2\u0400\u0401\7?\2"+ - "\2\u0401\u0120\3\2\2\2\u0402\u0403\7@\2\2\u0403\u0404\7@\2\2\u0404\u0405"+ - "\7?\2\2\u0405\u0122\3\2\2\2\u0406\u0407\7@\2\2\u0407\u0408\7@\2\2\u0408"+ - "\u0409\7@\2\2\u0409\u040a\7?\2\2\u040a\u0124\3\2\2\2\u040b\u040f\5\u0127"+ - "\u0094\2\u040c\u040e\5\u0129\u0095\2\u040d\u040c\3\2\2\2\u040e\u0411\3"+ - "\2\2\2\u040f\u040d\3\2\2\2\u040f\u0410\3\2\2\2\u0410\u0126\3\2\2\2\u0411"+ - "\u040f\3\2\2\2\u0412\u0419\t\21\2\2\u0413\u0414\n\22\2\2\u0414\u0419\6"+ - "\u0094\2\2\u0415\u0416\t\23\2\2\u0416\u0417\t\24\2\2\u0417\u0419\6\u0094"+ - "\3\2\u0418\u0412\3\2\2\2\u0418\u0413\3\2\2\2\u0418\u0415\3\2\2\2\u0419"+ - "\u0128\3\2\2\2\u041a\u0421\t\25\2\2\u041b\u041c\n\22\2\2\u041c\u0421\6"+ - "\u0095\4\2\u041d\u041e\t\23\2\2\u041e\u041f\t\24\2\2\u041f\u0421\6\u0095"+ - "\5\2\u0420\u041a\3\2\2\2\u0420\u041b\3\2\2\2\u0420\u041d\3\2\2\2\u0421"+ - "\u012a\3\2\2\2\u0422\u0423\7B\2\2\u0423\u012c\3\2\2\2\u0424\u0425\7\60"+ - "\2\2\u0425\u0426\7\60\2\2\u0426\u0427\7\60\2\2\u0427\u012e\3\2\2\2\u0428"+ - "\u042a\t\26\2\2\u0429\u0428\3\2\2\2\u042a\u042b\3\2\2\2\u042b\u0429\3"+ - "\2\2\2\u042b\u042c\3\2\2\2\u042c\u042d\3\2\2\2\u042d\u042e\b\u0098\2\2"+ - "\u042e\u0130\3\2\2\2\u042f\u0430\7\61\2\2\u0430\u0431\7,\2\2\u0431\u0435"+ - "\3\2\2\2\u0432\u0434\13\2\2\2\u0433\u0432\3\2\2\2\u0434\u0437\3\2\2\2"+ - "\u0435\u0436\3\2\2\2\u0435\u0433\3\2\2\2\u0436\u0438\3\2\2\2\u0437\u0435"+ - "\3\2\2\2\u0438\u0439\7,\2\2\u0439\u043a\7\61\2\2\u043a\u043b\3\2\2\2\u043b"+ - "\u043c\b\u0099\2\2\u043c\u0132\3\2\2\2\u043d\u043e\7\61\2\2\u043e\u043f"+ - "\7\61\2\2\u043f\u0443\3\2\2\2\u0440\u0442\n\27\2\2\u0441\u0440\3\2\2\2"+ - "\u0442\u0445\3\2\2\2\u0443\u0441\3\2\2\2\u0443\u0444\3\2\2\2\u0444\u0446"+ - "\3\2\2\2\u0445\u0443\3\2\2\2\u0446\u0447\b\u009a\2\2\u0447\u0134\3\2\2"+ - "\28\2\u028c\u0290\u0294\u0298\u029c\u02a3\u02a8\u02aa\u02ae\u02b1\u02b5"+ - "\u02bc\u02c0\u02c5\u02cd\u02d0\u02d7\u02db\u02df\u02e5\u02e8\u02ef\u02f3"+ - "\u02fb\u02fe\u0305\u0309\u030d\u0312\u0315\u0318\u031d\u0320\u0325\u032a"+ - "\u0332\u033d\u0341\u0346\u034a\u035a\u0364\u036a\u0371\u0375\u037b\u0388"+ - "\u040f\u0418\u0420\u042b\u0435\u0443\3\b\2\2"; + "\t\u0097\4\u0098\t\u0098\4\u0099\t\u0099\4\u009a\t\u009a\4\u009b\t\u009b"+ + "\3\2\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3"+ + "\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\6"+ + "\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3\t\3\n\3"+ + "\n\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3\f\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\r\3\r\3\16\3\16\3\16\3\16\3\16\3\16\3\16"+ + "\3\16\3\17\3\17\3\17\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\22\3\22\3\22\3\22\3\22\3\23\3\23\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\25\3\25\3\25\3\25\3\25\3\25\3\25"+ + "\3\25\3\26\3\26\3\26\3\26\3\26\3\26\3\27\3\27\3\27\3\27\3\30\3\30\3\30"+ + "\3\31\3\31\3\31\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32"+ + "\3\32\3\32\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3\34\3\34\3\34"+ + "\3\34\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\36\3\36\3\36\3\36"+ + "\3\36\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37\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%\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+\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\60\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\62\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\64\3\64\3\64\3\65\3\65\3\65\3\65\5\65\u0294\n\65"+ + "\3\66\3\66\5\66\u0298\n\66\3\67\3\67\5\67\u029c\n\67\38\38\58\u02a0\n"+ + "8\39\39\59\u02a4\n9\3:\3:\3;\3;\3;\5;\u02ab\n;\3;\3;\3;\5;\u02b0\n;\5"+ + ";\u02b2\n;\3<\3<\5<\u02b6\n<\3<\5<\u02b9\n<\3=\3=\5=\u02bd\n=\3>\3>\3"+ + "?\6?\u02c2\n?\r?\16?\u02c3\3@\3@\5@\u02c8\n@\3A\6A\u02cb\nA\rA\16A\u02cc"+ + "\3B\3B\3B\3B\3C\3C\5C\u02d5\nC\3C\5C\u02d8\nC\3D\3D\3E\6E\u02dd\nE\rE"+ + "\16E\u02de\3F\3F\5F\u02e3\nF\3G\3G\5G\u02e7\nG\3G\3G\3H\3H\5H\u02ed\n"+ + "H\3H\5H\u02f0\nH\3I\3I\3J\6J\u02f5\nJ\rJ\16J\u02f6\3K\3K\5K\u02fb\nK\3"+ + "L\3L\3L\3L\3M\3M\5M\u0303\nM\3M\5M\u0306\nM\3N\3N\3O\6O\u030b\nO\rO\16"+ + "O\u030c\3P\3P\5P\u0311\nP\3Q\3Q\5Q\u0315\nQ\3R\3R\3R\5R\u031a\nR\3R\5"+ + "R\u031d\nR\3R\5R\u0320\nR\3R\3R\3R\5R\u0325\nR\3R\5R\u0328\nR\3R\3R\3"+ + "R\5R\u032d\nR\3R\3R\3R\5R\u0332\nR\3S\3S\3S\3T\3T\3U\5U\u033a\nU\3U\3"+ + "U\3V\3V\3W\3W\3X\3X\3X\5X\u0345\nX\3Y\3Y\5Y\u0349\nY\3Y\3Y\3Y\5Y\u034e"+ + "\nY\3Y\3Y\5Y\u0352\nY\3Z\3Z\3Z\3[\3[\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3"+ + "\\\5\\\u0362\n\\\3]\3]\3]\3]\3]\3]\3]\3]\5]\u036c\n]\3^\3^\3_\3_\5_\u0372"+ + "\n_\3_\3_\3`\6`\u0377\n`\r`\16`\u0378\3a\3a\5a\u037d\na\3b\3b\3b\3b\5"+ + "b\u0383\nb\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\5c\u0390\nc\3d\3d\3e\3e\3"+ + "e\3e\3e\3e\3e\3f\3f\3f\3f\3f\3g\3g\3h\3h\3i\3i\3j\3j\3k\3k\3l\3l\3m\3"+ + "m\3n\3n\3o\3o\3p\3p\3q\3q\3r\3r\3s\3s\3t\3t\3u\3u\3v\3v\3w\3w\3w\3x\3"+ + "x\3x\3y\3y\3y\3z\3z\3z\3{\3{\3{\3|\3|\3|\3}\3}\3}\3~\3~\3~\3\177\3\177"+ + "\3\u0080\3\u0080\3\u0081\3\u0081\3\u0082\3\u0082\3\u0083\3\u0083\3\u0084"+ + "\3\u0084\3\u0085\3\u0085\3\u0086\3\u0086\3\u0087\3\u0087\3\u0087\3\u0088"+ + "\3\u0088\3\u0088\3\u0089\3\u0089\3\u0089\3\u008a\3\u008a\3\u008a\3\u008b"+ + "\3\u008b\3\u008b\3\u008c\3\u008c\3\u008c\3\u008d\3\u008d\3\u008d\3\u008e"+ + "\3\u008e\3\u008e\3\u008f\3\u008f\3\u008f\3\u0090\3\u0090\3\u0090\3\u0091"+ + "\3\u0091\3\u0091\3\u0091\3\u0092\3\u0092\3\u0092\3\u0092\3\u0093\3\u0093"+ + "\3\u0093\3\u0093\3\u0093\3\u0094\3\u0094\7\u0094\u0415\n\u0094\f\u0094"+ + "\16\u0094\u0418\13\u0094\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095"+ + "\5\u0095\u0420\n\u0095\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096"+ + "\5\u0096\u0428\n\u0096\3\u0097\3\u0097\3\u0098\3\u0098\3\u0098\3\u0098"+ + "\3\u0099\6\u0099\u0431\n\u0099\r\u0099\16\u0099\u0432\3\u0099\3\u0099"+ + "\3\u009a\3\u009a\3\u009a\3\u009a\7\u009a\u043b\n\u009a\f\u009a\16\u009a"+ + "\u043e\13\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009b\3\u009b"+ + "\3\u009b\3\u009b\7\u009b\u0449\n\u009b\f\u009b\16\u009b\u044c\13\u009b"+ + "\3\u009b\3\u009b\3\u043c\2\u009c\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\2m\2o\2q\2s\2u\2w\2y\2{\2}\2\177\2\u0081\2\u0083"+ + "\2\u0085\2\u0087\2\u0089\2\u008b\2\u008d\2\u008f\2\u0091\2\u0093\2\u0095"+ + "\2\u0097\2\u0099\2\u009b\2\u009d\2\u009f\2\u00a1\67\u00a3\2\u00a5\2\u00a7"+ + "\2\u00a9\2\u00ab\2\u00ad\2\u00af\2\u00b1\2\u00b3\2\u00b5\2\u00b78\u00b9"+ + "9\u00bb\2\u00bd:\u00bf\2\u00c1\2\u00c3\2\u00c5\2\u00c7\2\u00c9\2\u00cb"+ + ";\u00cd<\u00cf=\u00d1>\u00d3?\u00d5@\u00d7A\u00d9B\u00dbC\u00ddD\u00df"+ + "E\u00e1F\u00e3G\u00e5H\u00e7I\u00e9J\u00ebK\u00edL\u00efM\u00f1N\u00f3"+ + "O\u00f5P\u00f7Q\u00f9R\u00fbS\u00fdT\u00ffU\u0101V\u0103W\u0105X\u0107"+ + "Y\u0109Z\u010b[\u010d\\\u010f]\u0111^\u0113_\u0115`\u0117a\u0119b\u011b"+ + "c\u011dd\u011fe\u0121f\u0123g\u0125h\u0127i\u0129\2\u012b\2\u012dj\u012f"+ + "k\u0131l\u0133m\u0135n\3\2\30\4\2NNnn\3\2\63;\4\2ZZzz\5\2\62;CHch\3\2"+ + "\629\4\2DDdd\3\2\62\63\4\2GGgg\4\2--//\6\2FFHHffhh\4\2RRrr\4\2))^^\4\2"+ + "$$^^\n\2$$))^^ddhhppttvv\3\2\62\65\6\2&&C\\aac|\4\2\2\u0081\ud802\udc01"+ + "\3\2\ud802\udc01\3\2\udc02\ue001\7\2&&\62;C\\aac|\5\2\13\f\16\17\"\"\4"+ + "\2\f\f\17\17\u045d\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\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\2\u00a1"+ + "\3\2\2\2\2\u00b7\3\2\2\2\2\u00b9\3\2\2\2\2\u00bd\3\2\2\2\2\u00cb\3\2\2"+ + "\2\2\u00cd\3\2\2\2\2\u00cf\3\2\2\2\2\u00d1\3\2\2\2\2\u00d3\3\2\2\2\2\u00d5"+ + "\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9\3\2\2\2\2\u00db\3\2\2\2\2\u00dd\3\2\2"+ + "\2\2\u00df\3\2\2\2\2\u00e1\3\2\2\2\2\u00e3\3\2\2\2\2\u00e5\3\2\2\2\2\u00e7"+ + "\3\2\2\2\2\u00e9\3\2\2\2\2\u00eb\3\2\2\2\2\u00ed\3\2\2\2\2\u00ef\3\2\2"+ + "\2\2\u00f1\3\2\2\2\2\u00f3\3\2\2\2\2\u00f5\3\2\2\2\2\u00f7\3\2\2\2\2\u00f9"+ + "\3\2\2\2\2\u00fb\3\2\2\2\2\u00fd\3\2\2\2\2\u00ff\3\2\2\2\2\u0101\3\2\2"+ + "\2\2\u0103\3\2\2\2\2\u0105\3\2\2\2\2\u0107\3\2\2\2\2\u0109\3\2\2\2\2\u010b"+ + "\3\2\2\2\2\u010d\3\2\2\2\2\u010f\3\2\2\2\2\u0111\3\2\2\2\2\u0113\3\2\2"+ + "\2\2\u0115\3\2\2\2\2\u0117\3\2\2\2\2\u0119\3\2\2\2\2\u011b\3\2\2\2\2\u011d"+ + "\3\2\2\2\2\u011f\3\2\2\2\2\u0121\3\2\2\2\2\u0123\3\2\2\2\2\u0125\3\2\2"+ + "\2\2\u0127\3\2\2\2\2\u012d\3\2\2\2\2\u012f\3\2\2\2\2\u0131\3\2\2\2\2\u0133"+ + "\3\2\2\2\2\u0135\3\2\2\2\3\u0137\3\2\2\2\5\u013c\3\2\2\2\7\u0145\3\2\2"+ + "\2\t\u014c\3\2\2\2\13\u0154\3\2\2\2\r\u015a\3\2\2\2\17\u015f\3\2\2\2\21"+ + "\u0164\3\2\2\2\23\u016a\3\2\2\2\25\u016f\3\2\2\2\27\u0175\3\2\2\2\31\u017b"+ + "\3\2\2\2\33\u0184\3\2\2\2\35\u018c\3\2\2\2\37\u018f\3\2\2\2!\u0196\3\2"+ + "\2\2#\u019b\3\2\2\2%\u01a0\3\2\2\2\'\u01a8\3\2\2\2)\u01ae\3\2\2\2+\u01b6"+ + "\3\2\2\2-\u01bc\3\2\2\2/\u01c0\3\2\2\2\61\u01c3\3\2\2\2\63\u01c8\3\2\2"+ + "\2\65\u01d3\3\2\2\2\67\u01da\3\2\2\29\u01e5\3\2\2\2;\u01e9\3\2\2\2=\u01f3"+ + "\3\2\2\2?\u01f8\3\2\2\2A\u01ff\3\2\2\2C\u0203\3\2\2\2E\u020b\3\2\2\2G"+ + "\u0213\3\2\2\2I\u021d\3\2\2\2K\u0224\3\2\2\2M\u022b\3\2\2\2O\u0231\3\2"+ + "\2\2Q\u0238\3\2\2\2S\u0241\3\2\2\2U\u0247\3\2\2\2W\u024e\3\2\2\2Y\u025b"+ + "\3\2\2\2[\u0260\3\2\2\2]\u0266\3\2\2\2_\u026d\3\2\2\2a\u0277\3\2\2\2c"+ + "\u027b\3\2\2\2e\u0280\3\2\2\2g\u0289\3\2\2\2i\u0293\3\2\2\2k\u0295\3\2"+ + "\2\2m\u0299\3\2\2\2o\u029d\3\2\2\2q\u02a1\3\2\2\2s\u02a5\3\2\2\2u\u02b1"+ + "\3\2\2\2w\u02b3\3\2\2\2y\u02bc\3\2\2\2{\u02be\3\2\2\2}\u02c1\3\2\2\2\177"+ + "\u02c7\3\2\2\2\u0081\u02ca\3\2\2\2\u0083\u02ce\3\2\2\2\u0085\u02d2\3\2"+ + "\2\2\u0087\u02d9\3\2\2\2\u0089\u02dc\3\2\2\2\u008b\u02e2\3\2\2\2\u008d"+ + "\u02e4\3\2\2\2\u008f\u02ea\3\2\2\2\u0091\u02f1\3\2\2\2\u0093\u02f4\3\2"+ + "\2\2\u0095\u02fa\3\2\2\2\u0097\u02fc\3\2\2\2\u0099\u0300\3\2\2\2\u009b"+ + "\u0307\3\2\2\2\u009d\u030a\3\2\2\2\u009f\u0310\3\2\2\2\u00a1\u0314\3\2"+ + "\2\2\u00a3\u0331\3\2\2\2\u00a5\u0333\3\2\2\2\u00a7\u0336\3\2\2\2\u00a9"+ + "\u0339\3\2\2\2\u00ab\u033d\3\2\2\2\u00ad\u033f\3\2\2\2\u00af\u0341\3\2"+ + "\2\2\u00b1\u0351\3\2\2\2\u00b3\u0353\3\2\2\2\u00b5\u0356\3\2\2\2\u00b7"+ + "\u0361\3\2\2\2\u00b9\u036b\3\2\2\2\u00bb\u036d\3\2\2\2\u00bd\u036f\3\2"+ + "\2\2\u00bf\u0376\3\2\2\2\u00c1\u037c\3\2\2\2\u00c3\u0382\3\2\2\2\u00c5"+ + "\u038f\3\2\2\2\u00c7\u0391\3\2\2\2\u00c9\u0393\3\2\2\2\u00cb\u039a\3\2"+ + "\2\2\u00cd\u039f\3\2\2\2\u00cf\u03a1\3\2\2\2\u00d1\u03a3\3\2\2\2\u00d3"+ + "\u03a5\3\2\2\2\u00d5\u03a7\3\2\2\2\u00d7\u03a9\3\2\2\2\u00d9\u03ab\3\2"+ + "\2\2\u00db\u03ad\3\2\2\2\u00dd\u03af\3\2\2\2\u00df\u03b1\3\2\2\2\u00e1"+ + "\u03b3\3\2\2\2\u00e3\u03b5\3\2\2\2\u00e5\u03b7\3\2\2\2\u00e7\u03b9\3\2"+ + "\2\2\u00e9\u03bb\3\2\2\2\u00eb\u03bd\3\2\2\2\u00ed\u03bf\3\2\2\2\u00ef"+ + "\u03c2\3\2\2\2\u00f1\u03c5\3\2\2\2\u00f3\u03c8\3\2\2\2\u00f5\u03cb\3\2"+ + "\2\2\u00f7\u03ce\3\2\2\2\u00f9\u03d1\3\2\2\2\u00fb\u03d4\3\2\2\2\u00fd"+ + "\u03d7\3\2\2\2\u00ff\u03d9\3\2\2\2\u0101\u03db\3\2\2\2\u0103\u03dd\3\2"+ + "\2\2\u0105\u03df\3\2\2\2\u0107\u03e1\3\2\2\2\u0109\u03e3\3\2\2\2\u010b"+ + "\u03e5\3\2\2\2\u010d\u03e7\3\2\2\2\u010f\u03ea\3\2\2\2\u0111\u03ed\3\2"+ + "\2\2\u0113\u03f0\3\2\2\2\u0115\u03f3\3\2\2\2\u0117\u03f6\3\2\2\2\u0119"+ + "\u03f9\3\2\2\2\u011b\u03fc\3\2\2\2\u011d\u03ff\3\2\2\2\u011f\u0402\3\2"+ + "\2\2\u0121\u0405\3\2\2\2\u0123\u0409\3\2\2\2\u0125\u040d\3\2\2\2\u0127"+ + "\u0412\3\2\2\2\u0129\u041f\3\2\2\2\u012b\u0427\3\2\2\2\u012d\u0429\3\2"+ + "\2\2\u012f\u042b\3\2\2\2\u0131\u0430\3\2\2\2\u0133\u0436\3\2\2\2\u0135"+ + "\u0444\3\2\2\2\u0137\u0138\7c\2\2\u0138\u0139\7w\2\2\u0139\u013a\7v\2"+ + "\2\u013a\u013b\7q\2\2\u013b\4\3\2\2\2\u013c\u013d\7c\2\2\u013d\u013e\7"+ + "d\2\2\u013e\u013f\7u\2\2\u013f\u0140\7v\2\2\u0140\u0141\7t\2\2\u0141\u0142"+ + "\7c\2\2\u0142\u0143\7e\2\2\u0143\u0144\7v\2\2\u0144\6\3\2\2\2\u0145\u0146"+ + "\7c\2\2\u0146\u0147\7u\2\2\u0147\u0148\7u\2\2\u0148\u0149\7g\2\2\u0149"+ + "\u014a\7t\2\2\u014a\u014b\7v\2\2\u014b\b\3\2\2\2\u014c\u014d\7d\2\2\u014d"+ + "\u014e\7q\2\2\u014e\u014f\7q\2\2\u014f\u0150\7n\2\2\u0150\u0151\7g\2\2"+ + "\u0151\u0152\7c\2\2\u0152\u0153\7p\2\2\u0153\n\3\2\2\2\u0154\u0155\7d"+ + "\2\2\u0155\u0156\7t\2\2\u0156\u0157\7g\2\2\u0157\u0158\7c\2\2\u0158\u0159"+ + "\7m\2\2\u0159\f\3\2\2\2\u015a\u015b\7d\2\2\u015b\u015c\7{\2\2\u015c\u015d"+ + "\7v\2\2\u015d\u015e\7g\2\2\u015e\16\3\2\2\2\u015f\u0160\7e\2\2\u0160\u0161"+ + "\7c\2\2\u0161\u0162\7u\2\2\u0162\u0163\7g\2\2\u0163\20\3\2\2\2\u0164\u0165"+ + "\7e\2\2\u0165\u0166\7c\2\2\u0166\u0167\7v\2\2\u0167\u0168\7e\2\2\u0168"+ + "\u0169\7j\2\2\u0169\22\3\2\2\2\u016a\u016b\7e\2\2\u016b\u016c\7j\2\2\u016c"+ + "\u016d\7c\2\2\u016d\u016e\7t\2\2\u016e\24\3\2\2\2\u016f\u0170\7e\2\2\u0170"+ + "\u0171\7n\2\2\u0171\u0172\7c\2\2\u0172\u0173\7u\2\2\u0173\u0174\7u\2\2"+ + "\u0174\26\3\2\2\2\u0175\u0176\7e\2\2\u0176\u0177\7q\2\2\u0177\u0178\7"+ + "p\2\2\u0178\u0179\7u\2\2\u0179\u017a\7v\2\2\u017a\30\3\2\2\2\u017b\u017c"+ + "\7e\2\2\u017c\u017d\7q\2\2\u017d\u017e\7p\2\2\u017e\u017f\7v\2\2\u017f"+ + "\u0180\7k\2\2\u0180\u0181\7p\2\2\u0181\u0182\7w\2\2\u0182\u0183\7g\2\2"+ + "\u0183\32\3\2\2\2\u0184\u0185\7f\2\2\u0185\u0186\7g\2\2\u0186\u0187\7"+ + "h\2\2\u0187\u0188\7c\2\2\u0188\u0189\7w\2\2\u0189\u018a\7n\2\2\u018a\u018b"+ + "\7v\2\2\u018b\34\3\2\2\2\u018c\u018d\7f\2\2\u018d\u018e\7q\2\2\u018e\36"+ + "\3\2\2\2\u018f\u0190\7f\2\2\u0190\u0191\7q\2\2\u0191\u0192\7w\2\2\u0192"+ + "\u0193\7d\2\2\u0193\u0194\7n\2\2\u0194\u0195\7g\2\2\u0195 \3\2\2\2\u0196"+ + "\u0197\7g\2\2\u0197\u0198\7n\2\2\u0198\u0199\7u\2\2\u0199\u019a\7g\2\2"+ + "\u019a\"\3\2\2\2\u019b\u019c\7g\2\2\u019c\u019d\7p\2\2\u019d\u019e\7w"+ + "\2\2\u019e\u019f\7o\2\2\u019f$\3\2\2\2\u01a0\u01a1\7g\2\2\u01a1\u01a2"+ + "\7z\2\2\u01a2\u01a3\7v\2\2\u01a3\u01a4\7g\2\2\u01a4\u01a5\7p\2\2\u01a5"+ + "\u01a6\7f\2\2\u01a6\u01a7\7u\2\2\u01a7&\3\2\2\2\u01a8\u01a9\7h\2\2\u01a9"+ + "\u01aa\7k\2\2\u01aa\u01ab\7p\2\2\u01ab\u01ac\7c\2\2\u01ac\u01ad\7n\2\2"+ + "\u01ad(\3\2\2\2\u01ae\u01af\7h\2\2\u01af\u01b0\7k\2\2\u01b0\u01b1\7p\2"+ + "\2\u01b1\u01b2\7c\2\2\u01b2\u01b3\7n\2\2\u01b3\u01b4\7n\2\2\u01b4\u01b5"+ + "\7{\2\2\u01b5*\3\2\2\2\u01b6\u01b7\7h\2\2\u01b7\u01b8\7n\2\2\u01b8\u01b9"+ + "\7q\2\2\u01b9\u01ba\7c\2\2\u01ba\u01bb\7v\2\2\u01bb,\3\2\2\2\u01bc\u01bd"+ + "\7h\2\2\u01bd\u01be\7q\2\2\u01be\u01bf\7t\2\2\u01bf.\3\2\2\2\u01c0\u01c1"+ + "\7k\2\2\u01c1\u01c2\7h\2\2\u01c2\60\3\2\2\2\u01c3\u01c4\7i\2\2\u01c4\u01c5"+ + "\7q\2\2\u01c5\u01c6\7v\2\2\u01c6\u01c7\7q\2\2\u01c7\62\3\2\2\2\u01c8\u01c9"+ + "\7k\2\2\u01c9\u01ca\7o\2\2\u01ca\u01cb\7r\2\2\u01cb\u01cc\7n\2\2\u01cc"+ + "\u01cd\7g\2\2\u01cd\u01ce\7o\2\2\u01ce\u01cf\7g\2\2\u01cf\u01d0\7p\2\2"+ + "\u01d0\u01d1\7v\2\2\u01d1\u01d2\7u\2\2\u01d2\64\3\2\2\2\u01d3\u01d4\7"+ + "k\2\2\u01d4\u01d5\7o\2\2\u01d5\u01d6\7r\2\2\u01d6\u01d7\7q\2\2\u01d7\u01d8"+ + "\7t\2\2\u01d8\u01d9\7v\2\2\u01d9\66\3\2\2\2\u01da\u01db\7k\2\2\u01db\u01dc"+ + "\7p\2\2\u01dc\u01dd\7u\2\2\u01dd\u01de\7v\2\2\u01de\u01df\7c\2\2\u01df"+ + "\u01e0\7p\2\2\u01e0\u01e1\7e\2\2\u01e1\u01e2\7g\2\2\u01e2\u01e3\7q\2\2"+ + "\u01e3\u01e4\7h\2\2\u01e48\3\2\2\2\u01e5\u01e6\7k\2\2\u01e6\u01e7\7p\2"+ + "\2\u01e7\u01e8\7v\2\2\u01e8:\3\2\2\2\u01e9\u01ea\7k\2\2\u01ea\u01eb\7"+ + "p\2\2\u01eb\u01ec\7v\2\2\u01ec\u01ed\7g\2\2\u01ed\u01ee\7t\2\2\u01ee\u01ef"+ + "\7h\2\2\u01ef\u01f0\7c\2\2\u01f0\u01f1\7e\2\2\u01f1\u01f2\7g\2\2\u01f2"+ + "<\3\2\2\2\u01f3\u01f4\7n\2\2\u01f4\u01f5\7q\2\2\u01f5\u01f6\7p\2\2\u01f6"+ + "\u01f7\7i\2\2\u01f7>\3\2\2\2\u01f8\u01f9\7p\2\2\u01f9\u01fa\7c\2\2\u01fa"+ + "\u01fb\7v\2\2\u01fb\u01fc\7k\2\2\u01fc\u01fd\7x\2\2\u01fd\u01fe\7g\2\2"+ + "\u01fe@\3\2\2\2\u01ff\u0200\7p\2\2\u0200\u0201\7g\2\2\u0201\u0202\7y\2"+ + "\2\u0202B\3\2\2\2\u0203\u0204\7r\2\2\u0204\u0205\7c\2\2\u0205\u0206\7"+ + "e\2\2\u0206\u0207\7m\2\2\u0207\u0208\7c\2\2\u0208\u0209\7i\2\2\u0209\u020a"+ + "\7g\2\2\u020aD\3\2\2\2\u020b\u020c\7r\2\2\u020c\u020d\7t\2\2\u020d\u020e"+ + "\7k\2\2\u020e\u020f\7x\2\2\u020f\u0210\7c\2\2\u0210\u0211\7v\2\2\u0211"+ + "\u0212\7g\2\2\u0212F\3\2\2\2\u0213\u0214\7r\2\2\u0214\u0215\7t\2\2\u0215"+ + "\u0216\7q\2\2\u0216\u0217\7v\2\2\u0217\u0218\7g\2\2\u0218\u0219\7e\2\2"+ + "\u0219\u021a\7v\2\2\u021a\u021b\7g\2\2\u021b\u021c\7f\2\2\u021cH\3\2\2"+ + "\2\u021d\u021e\7r\2\2\u021e\u021f\7w\2\2\u021f\u0220\7d\2\2\u0220\u0221"+ + "\7n\2\2\u0221\u0222\7k\2\2\u0222\u0223\7e\2\2\u0223J\3\2\2\2\u0224\u0225"+ + "\7t\2\2\u0225\u0226\7g\2\2\u0226\u0227\7v\2\2\u0227\u0228\7w\2\2\u0228"+ + "\u0229\7t\2\2\u0229\u022a\7p\2\2\u022aL\3\2\2\2\u022b\u022c\7u\2\2\u022c"+ + "\u022d\7j\2\2\u022d\u022e\7q\2\2\u022e\u022f\7t\2\2\u022f\u0230\7v\2\2"+ + "\u0230N\3\2\2\2\u0231\u0232\7u\2\2\u0232\u0233\7v\2\2\u0233\u0234\7c\2"+ + "\2\u0234\u0235\7v\2\2\u0235\u0236\7k\2\2\u0236\u0237\7e\2\2\u0237P\3\2"+ + "\2\2\u0238\u0239\7u\2\2\u0239\u023a\7v\2\2\u023a\u023b\7t\2\2\u023b\u023c"+ + "\7k\2\2\u023c\u023d\7e\2\2\u023d\u023e\7v\2\2\u023e\u023f\7h\2\2\u023f"+ + "\u0240\7r\2\2\u0240R\3\2\2\2\u0241\u0242\7u\2\2\u0242\u0243\7w\2\2\u0243"+ + "\u0244\7r\2\2\u0244\u0245\7g\2\2\u0245\u0246\7t\2\2\u0246T\3\2\2\2\u0247"+ + "\u0248\7u\2\2\u0248\u0249\7y\2\2\u0249\u024a\7k\2\2\u024a\u024b\7v\2\2"+ + "\u024b\u024c\7e\2\2\u024c\u024d\7j\2\2\u024dV\3\2\2\2\u024e\u024f\7u\2"+ + "\2\u024f\u0250\7{\2\2\u0250\u0251\7p\2\2\u0251\u0252\7e\2\2\u0252\u0253"+ + "\7j\2\2\u0253\u0254\7t\2\2\u0254\u0255\7q\2\2\u0255\u0256\7p\2\2\u0256"+ + "\u0257\7k\2\2\u0257\u0258\7|\2\2\u0258\u0259\7g\2\2\u0259\u025a\7f\2\2"+ + "\u025aX\3\2\2\2\u025b\u025c\7v\2\2\u025c\u025d\7j\2\2\u025d\u025e\7k\2"+ + "\2\u025e\u025f\7u\2\2\u025fZ\3\2\2\2\u0260\u0261\7v\2\2\u0261\u0262\7"+ + "j\2\2\u0262\u0263\7t\2\2\u0263\u0264\7q\2\2\u0264\u0265\7y\2\2\u0265\\"+ + "\3\2\2\2\u0266\u0267\7v\2\2\u0267\u0268\7j\2\2\u0268\u0269\7t\2\2\u0269"+ + "\u026a\7q\2\2\u026a\u026b\7y\2\2\u026b\u026c\7u\2\2\u026c^\3\2\2\2\u026d"+ + "\u026e\7v\2\2\u026e\u026f\7t\2\2\u026f\u0270\7c\2\2\u0270\u0271\7p\2\2"+ + "\u0271\u0272\7u\2\2\u0272\u0273\7k\2\2\u0273\u0274\7g\2\2\u0274\u0275"+ + "\7p\2\2\u0275\u0276\7v\2\2\u0276`\3\2\2\2\u0277\u0278\7v\2\2\u0278\u0279"+ + "\7t\2\2\u0279\u027a\7{\2\2\u027ab\3\2\2\2\u027b\u027c\7x\2\2\u027c\u027d"+ + "\7q\2\2\u027d\u027e\7k\2\2\u027e\u027f\7f\2\2\u027fd\3\2\2\2\u0280\u0281"+ + "\7x\2\2\u0281\u0282\7q\2\2\u0282\u0283\7n\2\2\u0283\u0284\7c\2\2\u0284"+ + "\u0285\7v\2\2\u0285\u0286\7k\2\2\u0286\u0287\7n\2\2\u0287\u0288\7g\2\2"+ + "\u0288f\3\2\2\2\u0289\u028a\7y\2\2\u028a\u028b\7j\2\2\u028b\u028c\7k\2"+ + "\2\u028c\u028d\7n\2\2\u028d\u028e\7g\2\2\u028eh\3\2\2\2\u028f\u0294\5"+ + "k\66\2\u0290\u0294\5m\67\2\u0291\u0294\5o8\2\u0292\u0294\5q9\2\u0293\u028f"+ + "\3\2\2\2\u0293\u0290\3\2\2\2\u0293\u0291\3\2\2\2\u0293\u0292\3\2\2\2\u0294"+ + "j\3\2\2\2\u0295\u0297\5u;\2\u0296\u0298\5s:\2\u0297\u0296\3\2\2\2\u0297"+ + "\u0298\3\2\2\2\u0298l\3\2\2\2\u0299\u029b\5\u0083B\2\u029a\u029c\5s:\2"+ + "\u029b\u029a\3\2\2\2\u029b\u029c\3\2\2\2\u029cn\3\2\2\2\u029d\u029f\5"+ + "\u008dG\2\u029e\u02a0\5s:\2\u029f\u029e\3\2\2\2\u029f\u02a0\3\2\2\2\u02a0"+ + "p\3\2\2\2\u02a1\u02a3\5\u0097L\2\u02a2\u02a4\5s:\2\u02a3\u02a2\3\2\2\2"+ + "\u02a3\u02a4\3\2\2\2\u02a4r\3\2\2\2\u02a5\u02a6\t\2\2\2\u02a6t\3\2\2\2"+ + "\u02a7\u02b2\7\62\2\2\u02a8\u02af\5{>\2\u02a9\u02ab\5w<\2\u02aa\u02a9"+ + "\3\2\2\2\u02aa\u02ab\3\2\2\2\u02ab\u02b0\3\2\2\2\u02ac\u02ad\5\u0081A"+ + "\2\u02ad\u02ae\5w<\2\u02ae\u02b0\3\2\2\2\u02af\u02aa\3\2\2\2\u02af\u02ac"+ + "\3\2\2\2\u02b0\u02b2\3\2\2\2\u02b1\u02a7\3\2\2\2\u02b1\u02a8\3\2\2\2\u02b2"+ + "v\3\2\2\2\u02b3\u02b8\5y=\2\u02b4\u02b6\5}?\2\u02b5\u02b4\3\2\2\2\u02b5"+ + "\u02b6\3\2\2\2\u02b6\u02b7\3\2\2\2\u02b7\u02b9\5y=\2\u02b8\u02b5\3\2\2"+ + "\2\u02b8\u02b9\3\2\2\2\u02b9x\3\2\2\2\u02ba\u02bd\7\62\2\2\u02bb\u02bd"+ + "\5{>\2\u02bc\u02ba\3\2\2\2\u02bc\u02bb\3\2\2\2\u02bdz\3\2\2\2\u02be\u02bf"+ + "\t\3\2\2\u02bf|\3\2\2\2\u02c0\u02c2\5\177@\2\u02c1\u02c0\3\2\2\2\u02c2"+ + "\u02c3\3\2\2\2\u02c3\u02c1\3\2\2\2\u02c3\u02c4\3\2\2\2\u02c4~\3\2\2\2"+ + "\u02c5\u02c8\5y=\2\u02c6\u02c8\7a\2\2\u02c7\u02c5\3\2\2\2\u02c7\u02c6"+ + "\3\2\2\2\u02c8\u0080\3\2\2\2\u02c9\u02cb\7a\2\2\u02ca\u02c9\3\2\2\2\u02cb"+ + "\u02cc\3\2\2\2\u02cc\u02ca\3\2\2\2\u02cc\u02cd\3\2\2\2\u02cd\u0082\3\2"+ + "\2\2\u02ce\u02cf\7\62\2\2\u02cf\u02d0\t\4\2\2\u02d0\u02d1\5\u0085C\2\u02d1"+ + "\u0084\3\2\2\2\u02d2\u02d7\5\u0087D\2\u02d3\u02d5\5\u0089E\2\u02d4\u02d3"+ + "\3\2\2\2\u02d4\u02d5\3\2\2\2\u02d5\u02d6\3\2\2\2\u02d6\u02d8\5\u0087D"+ + "\2\u02d7\u02d4\3\2\2\2\u02d7\u02d8\3\2\2\2\u02d8\u0086\3\2\2\2\u02d9\u02da"+ + "\t\5\2\2\u02da\u0088\3\2\2\2\u02db\u02dd\5\u008bF\2\u02dc\u02db\3\2\2"+ + "\2\u02dd\u02de\3\2\2\2\u02de\u02dc\3\2\2\2\u02de\u02df\3\2\2\2\u02df\u008a"+ + "\3\2\2\2\u02e0\u02e3\5\u0087D\2\u02e1\u02e3\7a\2\2\u02e2\u02e0\3\2\2\2"+ + "\u02e2\u02e1\3\2\2\2\u02e3\u008c\3\2\2\2\u02e4\u02e6\7\62\2\2\u02e5\u02e7"+ + "\5\u0081A\2\u02e6\u02e5\3\2\2\2\u02e6\u02e7\3\2\2\2\u02e7\u02e8\3\2\2"+ + "\2\u02e8\u02e9\5\u008fH\2\u02e9\u008e\3\2\2\2\u02ea\u02ef\5\u0091I\2\u02eb"+ + "\u02ed\5\u0093J\2\u02ec\u02eb\3\2\2\2\u02ec\u02ed\3\2\2\2\u02ed\u02ee"+ + "\3\2\2\2\u02ee\u02f0\5\u0091I\2\u02ef\u02ec\3\2\2\2\u02ef\u02f0\3\2\2"+ + "\2\u02f0\u0090\3\2\2\2\u02f1\u02f2\t\6\2\2\u02f2\u0092\3\2\2\2\u02f3\u02f5"+ + "\5\u0095K\2\u02f4\u02f3\3\2\2\2\u02f5\u02f6\3\2\2\2\u02f6\u02f4\3\2\2"+ + "\2\u02f6\u02f7\3\2\2\2\u02f7\u0094\3\2\2\2\u02f8\u02fb\5\u0091I\2\u02f9"+ + "\u02fb\7a\2\2\u02fa\u02f8\3\2\2\2\u02fa\u02f9\3\2\2\2\u02fb\u0096\3\2"+ + "\2\2\u02fc\u02fd\7\62\2\2\u02fd\u02fe\t\7\2\2\u02fe\u02ff\5\u0099M\2\u02ff"+ + "\u0098\3\2\2\2\u0300\u0305\5\u009bN\2\u0301\u0303\5\u009dO\2\u0302\u0301"+ + "\3\2\2\2\u0302\u0303\3\2\2\2\u0303\u0304\3\2\2\2\u0304\u0306\5\u009bN"+ + "\2\u0305\u0302\3\2\2\2\u0305\u0306\3\2\2\2\u0306\u009a\3\2\2\2\u0307\u0308"+ + "\t\b\2\2\u0308\u009c\3\2\2\2\u0309\u030b\5\u009fP\2\u030a\u0309\3\2\2"+ + "\2\u030b\u030c\3\2\2\2\u030c\u030a\3\2\2\2\u030c\u030d\3\2\2\2\u030d\u009e"+ + "\3\2\2\2\u030e\u0311\5\u009bN\2\u030f\u0311\7a\2\2\u0310\u030e\3\2\2\2"+ + "\u0310\u030f\3\2\2\2\u0311\u00a0\3\2\2\2\u0312\u0315\5\u00a3R\2\u0313"+ + "\u0315\5\u00afX\2\u0314\u0312\3\2\2\2\u0314\u0313\3\2\2\2\u0315\u00a2"+ + "\3\2\2\2\u0316\u0317\5w<\2\u0317\u0319\7\60\2\2\u0318\u031a\5w<\2\u0319"+ + "\u0318\3\2\2\2\u0319\u031a\3\2\2\2\u031a\u031c\3\2\2\2\u031b\u031d\5\u00a5"+ + "S\2\u031c\u031b\3\2\2\2\u031c\u031d\3\2\2\2\u031d\u031f\3\2\2\2\u031e"+ + "\u0320\5\u00adW\2\u031f\u031e\3\2\2\2\u031f\u0320\3\2\2\2\u0320\u0332"+ + "\3\2\2\2\u0321\u0322\7\60\2\2\u0322\u0324\5w<\2\u0323\u0325\5\u00a5S\2"+ + "\u0324\u0323\3\2\2\2\u0324\u0325\3\2\2\2\u0325\u0327\3\2\2\2\u0326\u0328"+ + "\5\u00adW\2\u0327\u0326\3\2\2\2\u0327\u0328\3\2\2\2\u0328\u0332\3\2\2"+ + "\2\u0329\u032a\5w<\2\u032a\u032c\5\u00a5S\2\u032b\u032d\5\u00adW\2\u032c"+ + "\u032b\3\2\2\2\u032c\u032d\3\2\2\2\u032d\u0332\3\2\2\2\u032e\u032f\5w"+ + "<\2\u032f\u0330\5\u00adW\2\u0330\u0332\3\2\2\2\u0331\u0316\3\2\2\2\u0331"+ + "\u0321\3\2\2\2\u0331\u0329\3\2\2\2\u0331\u032e\3\2\2\2\u0332\u00a4\3\2"+ + "\2\2\u0333\u0334\5\u00a7T\2\u0334\u0335\5\u00a9U\2\u0335\u00a6\3\2\2\2"+ + "\u0336\u0337\t\t\2\2\u0337\u00a8\3\2\2\2\u0338\u033a\5\u00abV\2\u0339"+ + "\u0338\3\2\2\2\u0339\u033a\3\2\2\2\u033a\u033b\3\2\2\2\u033b\u033c\5w"+ + "<\2\u033c\u00aa\3\2\2\2\u033d\u033e\t\n\2\2\u033e\u00ac\3\2\2\2\u033f"+ + "\u0340\t\13\2\2\u0340\u00ae\3\2\2\2\u0341\u0342\5\u00b1Y\2\u0342\u0344"+ + "\5\u00b3Z\2\u0343\u0345\5\u00adW\2\u0344\u0343\3\2\2\2\u0344\u0345\3\2"+ + "\2\2\u0345\u00b0\3\2\2\2\u0346\u0348\5\u0083B\2\u0347\u0349\7\60\2\2\u0348"+ + "\u0347\3\2\2\2\u0348\u0349\3\2\2\2\u0349\u0352\3\2\2\2\u034a\u034b\7\62"+ + "\2\2\u034b\u034d\t\4\2\2\u034c\u034e\5\u0085C\2\u034d\u034c\3\2\2\2\u034d"+ + "\u034e\3\2\2\2\u034e\u034f\3\2\2\2\u034f\u0350\7\60\2\2\u0350\u0352\5"+ + "\u0085C\2\u0351\u0346\3\2\2\2\u0351\u034a\3\2\2\2\u0352\u00b2\3\2\2\2"+ + "\u0353\u0354\5\u00b5[\2\u0354\u0355\5\u00a9U\2\u0355\u00b4\3\2\2\2\u0356"+ + "\u0357\t\f\2\2\u0357\u00b6\3\2\2\2\u0358\u0359\7v\2\2\u0359\u035a\7t\2"+ + "\2\u035a\u035b\7w\2\2\u035b\u0362\7g\2\2\u035c\u035d\7h\2\2\u035d\u035e"+ + "\7c\2\2\u035e\u035f\7n\2\2\u035f\u0360\7u\2\2\u0360\u0362\7g\2\2\u0361"+ + "\u0358\3\2\2\2\u0361\u035c\3\2\2\2\u0362\u00b8\3\2\2\2\u0363\u0364\7)"+ + "\2\2\u0364\u0365\5\u00bb^\2\u0365\u0366\7)\2\2\u0366\u036c\3\2\2\2\u0367"+ + "\u0368\7)\2\2\u0368\u0369\5\u00c3b\2\u0369\u036a\7)\2\2\u036a\u036c\3"+ + "\2\2\2\u036b\u0363\3\2\2\2\u036b\u0367\3\2\2\2\u036c\u00ba\3\2\2\2\u036d"+ + "\u036e\n\r\2\2\u036e\u00bc\3\2\2\2\u036f\u0371\7$\2\2\u0370\u0372\5\u00bf"+ + "`\2\u0371\u0370\3\2\2\2\u0371\u0372\3\2\2\2\u0372\u0373\3\2\2\2\u0373"+ + "\u0374\7$\2\2\u0374\u00be\3\2\2\2\u0375\u0377\5\u00c1a\2\u0376\u0375\3"+ + "\2\2\2\u0377\u0378\3\2\2\2\u0378\u0376\3\2\2\2\u0378\u0379\3\2\2\2\u0379"+ + "\u00c0\3\2\2\2\u037a\u037d\n\16\2\2\u037b\u037d\5\u00c3b\2\u037c\u037a"+ + "\3\2\2\2\u037c\u037b\3\2\2\2\u037d\u00c2\3\2\2\2\u037e\u037f\7^\2\2\u037f"+ + "\u0383\t\17\2\2\u0380\u0383\5\u00c5c\2\u0381\u0383\5\u00c9e\2\u0382\u037e"+ + "\3\2\2\2\u0382\u0380\3\2\2\2\u0382\u0381\3\2\2\2\u0383\u00c4\3\2\2\2\u0384"+ + "\u0385\7^\2\2\u0385\u0390\5\u0091I\2\u0386\u0387\7^\2\2\u0387\u0388\5"+ + "\u0091I\2\u0388\u0389\5\u0091I\2\u0389\u0390\3\2\2\2\u038a\u038b\7^\2"+ + "\2\u038b\u038c\5\u00c7d\2\u038c\u038d\5\u0091I\2\u038d\u038e\5\u0091I"+ + "\2\u038e\u0390\3\2\2\2\u038f\u0384\3\2\2\2\u038f\u0386\3\2\2\2\u038f\u038a"+ + "\3\2\2\2\u0390\u00c6\3\2\2\2\u0391\u0392\t\20\2\2\u0392\u00c8\3\2\2\2"+ + "\u0393\u0394\7^\2\2\u0394\u0395\7w\2\2\u0395\u0396\5\u0087D\2\u0396\u0397"+ + "\5\u0087D\2\u0397\u0398\5\u0087D\2\u0398\u0399\5\u0087D\2\u0399\u00ca"+ + "\3\2\2\2\u039a\u039b\7p\2\2\u039b\u039c\7w\2\2\u039c\u039d\7n\2\2\u039d"+ + "\u039e\7n\2\2\u039e\u00cc\3\2\2\2\u039f\u03a0\7*\2\2\u03a0\u00ce\3\2\2"+ + "\2\u03a1\u03a2\7+\2\2\u03a2\u00d0\3\2\2\2\u03a3\u03a4\7}\2\2\u03a4\u00d2"+ + "\3\2\2\2\u03a5\u03a6\7\177\2\2\u03a6\u00d4\3\2\2\2\u03a7\u03a8\7]\2\2"+ + "\u03a8\u00d6\3\2\2\2\u03a9\u03aa\7_\2\2\u03aa\u00d8\3\2\2\2\u03ab\u03ac"+ + "\7=\2\2\u03ac\u00da\3\2\2\2\u03ad\u03ae\7.\2\2\u03ae\u00dc\3\2\2\2\u03af"+ + "\u03b0\7\60\2\2\u03b0\u00de\3\2\2\2\u03b1\u03b2\7?\2\2\u03b2\u00e0\3\2"+ + "\2\2\u03b3\u03b4\7@\2\2\u03b4\u00e2\3\2\2\2\u03b5\u03b6\7>\2\2\u03b6\u00e4"+ + "\3\2\2\2\u03b7\u03b8\7#\2\2\u03b8\u00e6\3\2\2\2\u03b9\u03ba\7\u0080\2"+ + "\2\u03ba\u00e8\3\2\2\2\u03bb\u03bc\7A\2\2\u03bc\u00ea\3\2\2\2\u03bd\u03be"+ + "\7<\2\2\u03be\u00ec\3\2\2\2\u03bf\u03c0\7?\2\2\u03c0\u03c1\7?\2\2\u03c1"+ + "\u00ee\3\2\2\2\u03c2\u03c3\7>\2\2\u03c3\u03c4\7?\2\2\u03c4\u00f0\3\2\2"+ + "\2\u03c5\u03c6\7@\2\2\u03c6\u03c7\7?\2\2\u03c7\u00f2\3\2\2\2\u03c8\u03c9"+ + "\7#\2\2\u03c9\u03ca\7?\2\2\u03ca\u00f4\3\2\2\2\u03cb\u03cc\7(\2\2\u03cc"+ + "\u03cd\7(\2\2\u03cd\u00f6\3\2\2\2\u03ce\u03cf\7~\2\2\u03cf\u03d0\7~\2"+ + "\2\u03d0\u00f8\3\2\2\2\u03d1\u03d2\7-\2\2\u03d2\u03d3\7-\2\2\u03d3\u00fa"+ + "\3\2\2\2\u03d4\u03d5\7/\2\2\u03d5\u03d6\7/\2\2\u03d6\u00fc\3\2\2\2\u03d7"+ + "\u03d8\7-\2\2\u03d8\u00fe\3\2\2\2\u03d9\u03da\7/\2\2\u03da\u0100\3\2\2"+ + "\2\u03db\u03dc\7,\2\2\u03dc\u0102\3\2\2\2\u03dd\u03de\7\61\2\2\u03de\u0104"+ + "\3\2\2\2\u03df\u03e0\7(\2\2\u03e0\u0106\3\2\2\2\u03e1\u03e2\7~\2\2\u03e2"+ + "\u0108\3\2\2\2\u03e3\u03e4\7`\2\2\u03e4\u010a\3\2\2\2\u03e5\u03e6\7\'"+ + "\2\2\u03e6\u010c\3\2\2\2\u03e7\u03e8\7/\2\2\u03e8\u03e9\7@\2\2\u03e9\u010e"+ + "\3\2\2\2\u03ea\u03eb\7<\2\2\u03eb\u03ec\7<\2\2\u03ec\u0110\3\2\2\2\u03ed"+ + "\u03ee\7-\2\2\u03ee\u03ef\7?\2\2\u03ef\u0112\3\2\2\2\u03f0\u03f1\7/\2"+ + "\2\u03f1\u03f2\7?\2\2\u03f2\u0114\3\2\2\2\u03f3\u03f4\7,\2\2\u03f4\u03f5"+ + "\7?\2\2\u03f5\u0116\3\2\2\2\u03f6\u03f7\7\61\2\2\u03f7\u03f8\7?\2\2\u03f8"+ + "\u0118\3\2\2\2\u03f9\u03fa\7(\2\2\u03fa\u03fb\7?\2\2\u03fb\u011a\3\2\2"+ + "\2\u03fc\u03fd\7~\2\2\u03fd\u03fe\7?\2\2\u03fe\u011c\3\2\2\2\u03ff\u0400"+ + "\7`\2\2\u0400\u0401\7?\2\2\u0401\u011e\3\2\2\2\u0402\u0403\7\'\2\2\u0403"+ + "\u0404\7?\2\2\u0404\u0120\3\2\2\2\u0405\u0406\7>\2\2\u0406\u0407\7>\2"+ + "\2\u0407\u0408\7?\2\2\u0408\u0122\3\2\2\2\u0409\u040a\7@\2\2\u040a\u040b"+ + "\7@\2\2\u040b\u040c\7?\2\2\u040c\u0124\3\2\2\2\u040d\u040e\7@\2\2\u040e"+ + "\u040f\7@\2\2\u040f\u0410\7@\2\2\u0410\u0411\7?\2\2\u0411\u0126\3\2\2"+ + "\2\u0412\u0416\5\u0129\u0095\2\u0413\u0415\5\u012b\u0096\2\u0414\u0413"+ + "\3\2\2\2\u0415\u0418\3\2\2\2\u0416\u0414\3\2\2\2\u0416\u0417\3\2\2\2\u0417"+ + "\u0128\3\2\2\2\u0418\u0416\3\2\2\2\u0419\u0420\t\21\2\2\u041a\u041b\n"+ + "\22\2\2\u041b\u0420\6\u0095\2\2\u041c\u041d\t\23\2\2\u041d\u041e\t\24"+ + "\2\2\u041e\u0420\6\u0095\3\2\u041f\u0419\3\2\2\2\u041f\u041a\3\2\2\2\u041f"+ + "\u041c\3\2\2\2\u0420\u012a\3\2\2\2\u0421\u0428\t\25\2\2\u0422\u0423\n"+ + "\22\2\2\u0423\u0428\6\u0096\4\2\u0424\u0425\t\23\2\2\u0425\u0426\t\24"+ + "\2\2\u0426\u0428\6\u0096\5\2\u0427\u0421\3\2\2\2\u0427\u0422\3\2\2\2\u0427"+ + "\u0424\3\2\2\2\u0428\u012c\3\2\2\2\u0429\u042a\7B\2\2\u042a\u012e\3\2"+ + "\2\2\u042b\u042c\7\60\2\2\u042c\u042d\7\60\2\2\u042d\u042e\7\60\2\2\u042e"+ + "\u0130\3\2\2\2\u042f\u0431\t\26\2\2\u0430\u042f\3\2\2\2\u0431\u0432\3"+ + "\2\2\2\u0432\u0430\3\2\2\2\u0432\u0433\3\2\2\2\u0433\u0434\3\2\2\2\u0434"+ + "\u0435\b\u0099\2\2\u0435\u0132\3\2\2\2\u0436\u0437\7\61\2\2\u0437\u0438"+ + "\7,\2\2\u0438\u043c\3\2\2\2\u0439\u043b\13\2\2\2\u043a\u0439\3\2\2\2\u043b"+ + "\u043e\3\2\2\2\u043c\u043d\3\2\2\2\u043c\u043a\3\2\2\2\u043d\u043f\3\2"+ + "\2\2\u043e\u043c\3\2\2\2\u043f\u0440\7,\2\2\u0440\u0441\7\61\2\2\u0441"+ + "\u0442\3\2\2\2\u0442\u0443\b\u009a\2\2\u0443\u0134\3\2\2\2\u0444\u0445"+ + "\7\61\2\2\u0445\u0446\7\61\2\2\u0446\u044a\3\2\2\2\u0447\u0449\n\27\2"+ + "\2\u0448\u0447\3\2\2\2\u0449\u044c\3\2\2\2\u044a\u0448\3\2\2\2\u044a\u044b"+ + "\3\2\2\2\u044b\u044d\3\2\2\2\u044c\u044a\3\2\2\2\u044d\u044e\b\u009b\2"+ + "\2\u044e\u0136\3\2\2\28\2\u0293\u0297\u029b\u029f\u02a3\u02aa\u02af\u02b1"+ + "\u02b5\u02b8\u02bc\u02c3\u02c7\u02cc\u02d4\u02d7\u02de\u02e2\u02e6\u02ec"+ + "\u02ef\u02f6\u02fa\u0302\u0305\u030c\u0310\u0314\u0319\u031c\u031f\u0324"+ + "\u0327\u032c\u0331\u0339\u0344\u0348\u034d\u0351\u0361\u036b\u0371\u0378"+ + "\u037c\u0382\u038f\u0416\u041f\u0427\u0432\u043c\u044a\3\b\2\2"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { diff --git a/src/de/dhbwstuttgart/parser/antlr/Java8Lexer.tokens b/src/de/dhbwstuttgart/parser/antlr/Java8Lexer.tokens index 52ef1eee..82895a50 100644 --- a/src/de/dhbwstuttgart/parser/antlr/Java8Lexer.tokens +++ b/src/de/dhbwstuttgart/parser/antlr/Java8Lexer.tokens @@ -1,205 +1,207 @@ -ABSTRACT=1 -ASSERT=2 -BOOLEAN=3 -BREAK=4 -BYTE=5 -CASE=6 -CATCH=7 -CHAR=8 -CLASS=9 -CONST=10 -CONTINUE=11 -DEFAULT=12 -DO=13 -DOUBLE=14 -ELSE=15 -ENUM=16 -EXTENDS=17 -FINAL=18 -FINALLY=19 -FLOAT=20 -FOR=21 -IF=22 -GOTO=23 -IMPLEMENTS=24 -IMPORT=25 -INSTANCEOF=26 -INT=27 -INTERFACE=28 -LONG=29 -NATIVE=30 -NEW=31 -PACKAGE=32 -PRIVATE=33 -PROTECTED=34 -PUBLIC=35 -RETURN=36 -SHORT=37 -STATIC=38 -STRICTFP=39 -SUPER=40 -SWITCH=41 -SYNCHRONIZED=42 -THIS=43 -THROW=44 -THROWS=45 -TRANSIENT=46 -TRY=47 -VOID=48 -VOLATILE=49 -WHILE=50 -IntegerLiteral=51 -FloatingPointLiteral=52 -BooleanLiteral=53 -CharacterLiteral=54 -StringLiteral=55 -NullLiteral=56 -LPAREN=57 -RPAREN=58 -LBRACE=59 -RBRACE=60 -LBRACK=61 -RBRACK=62 -SEMI=63 -COMMA=64 -DOT=65 -ASSIGN=66 -GT=67 -LT=68 -BANG=69 -TILDE=70 -QUESTION=71 -COLON=72 -EQUAL=73 -LE=74 -GE=75 -NOTEQUAL=76 -AND=77 -OR=78 -INC=79 -DEC=80 -ADD=81 -SUB=82 -MUL=83 -DIV=84 -BITAND=85 -BITOR=86 -CARET=87 -MOD=88 -ARROW=89 -COLONCOLON=90 -ADD_ASSIGN=91 -SUB_ASSIGN=92 -MUL_ASSIGN=93 -DIV_ASSIGN=94 -AND_ASSIGN=95 -OR_ASSIGN=96 -XOR_ASSIGN=97 -MOD_ASSIGN=98 -LSHIFT_ASSIGN=99 -RSHIFT_ASSIGN=100 -URSHIFT_ASSIGN=101 -Identifier=102 -AT=103 -ELLIPSIS=104 -WS=105 -COMMENT=106 -LINE_COMMENT=107 -'abstract'=1 -'assert'=2 -'boolean'=3 -'break'=4 -'byte'=5 -'case'=6 -'catch'=7 -'char'=8 -'class'=9 -'const'=10 -'continue'=11 -'default'=12 -'do'=13 -'double'=14 -'else'=15 -'enum'=16 -'extends'=17 -'final'=18 -'finally'=19 -'float'=20 -'for'=21 -'if'=22 -'goto'=23 -'implements'=24 -'import'=25 -'instanceof'=26 -'int'=27 -'interface'=28 -'long'=29 -'native'=30 -'new'=31 -'package'=32 -'private'=33 -'protected'=34 -'public'=35 -'return'=36 -'short'=37 -'static'=38 -'strictfp'=39 -'super'=40 -'switch'=41 -'synchronized'=42 -'this'=43 -'throw'=44 -'throws'=45 -'transient'=46 -'try'=47 -'void'=48 -'volatile'=49 -'while'=50 -'null'=56 -'('=57 -')'=58 -'{'=59 -'}'=60 -'['=61 -']'=62 -';'=63 -','=64 -'.'=65 -'='=66 -'>'=67 -'<'=68 -'!'=69 -'~'=70 -'?'=71 -':'=72 -'=='=73 -'<='=74 -'>='=75 -'!='=76 -'&&'=77 -'||'=78 -'++'=79 -'--'=80 -'+'=81 -'-'=82 -'*'=83 -'/'=84 -'&'=85 -'|'=86 -'^'=87 -'%'=88 -'->'=89 -'::'=90 -'+='=91 -'-='=92 -'*='=93 -'/='=94 -'&='=95 -'|='=96 -'^='=97 -'%='=98 -'<<='=99 -'>>='=100 -'>>>='=101 -'@'=103 -'...'=104 +T__0=1 +ABSTRACT=2 +ASSERT=3 +BOOLEAN=4 +BREAK=5 +BYTE=6 +CASE=7 +CATCH=8 +CHAR=9 +CLASS=10 +CONST=11 +CONTINUE=12 +DEFAULT=13 +DO=14 +DOUBLE=15 +ELSE=16 +ENUM=17 +EXTENDS=18 +FINAL=19 +FINALLY=20 +FLOAT=21 +FOR=22 +IF=23 +GOTO=24 +IMPLEMENTS=25 +IMPORT=26 +INSTANCEOF=27 +INT=28 +INTERFACE=29 +LONG=30 +NATIVE=31 +NEW=32 +PACKAGE=33 +PRIVATE=34 +PROTECTED=35 +PUBLIC=36 +RETURN=37 +SHORT=38 +STATIC=39 +STRICTFP=40 +SUPER=41 +SWITCH=42 +SYNCHRONIZED=43 +THIS=44 +THROW=45 +THROWS=46 +TRANSIENT=47 +TRY=48 +VOID=49 +VOLATILE=50 +WHILE=51 +IntegerLiteral=52 +FloatingPointLiteral=53 +BooleanLiteral=54 +CharacterLiteral=55 +StringLiteral=56 +NullLiteral=57 +LPAREN=58 +RPAREN=59 +LBRACE=60 +RBRACE=61 +LBRACK=62 +RBRACK=63 +SEMI=64 +COMMA=65 +DOT=66 +ASSIGN=67 +GT=68 +LT=69 +BANG=70 +TILDE=71 +QUESTION=72 +COLON=73 +EQUAL=74 +LE=75 +GE=76 +NOTEQUAL=77 +AND=78 +OR=79 +INC=80 +DEC=81 +ADD=82 +SUB=83 +MUL=84 +DIV=85 +BITAND=86 +BITOR=87 +CARET=88 +MOD=89 +ARROW=90 +COLONCOLON=91 +ADD_ASSIGN=92 +SUB_ASSIGN=93 +MUL_ASSIGN=94 +DIV_ASSIGN=95 +AND_ASSIGN=96 +OR_ASSIGN=97 +XOR_ASSIGN=98 +MOD_ASSIGN=99 +LSHIFT_ASSIGN=100 +RSHIFT_ASSIGN=101 +URSHIFT_ASSIGN=102 +Identifier=103 +AT=104 +ELLIPSIS=105 +WS=106 +COMMENT=107 +LINE_COMMENT=108 +'auto'=1 +'abstract'=2 +'assert'=3 +'boolean'=4 +'break'=5 +'byte'=6 +'case'=7 +'catch'=8 +'char'=9 +'class'=10 +'const'=11 +'continue'=12 +'default'=13 +'do'=14 +'double'=15 +'else'=16 +'enum'=17 +'extends'=18 +'final'=19 +'finally'=20 +'float'=21 +'for'=22 +'if'=23 +'goto'=24 +'implements'=25 +'import'=26 +'instanceof'=27 +'int'=28 +'interface'=29 +'long'=30 +'native'=31 +'new'=32 +'package'=33 +'private'=34 +'protected'=35 +'public'=36 +'return'=37 +'short'=38 +'static'=39 +'strictfp'=40 +'super'=41 +'switch'=42 +'synchronized'=43 +'this'=44 +'throw'=45 +'throws'=46 +'transient'=47 +'try'=48 +'void'=49 +'volatile'=50 +'while'=51 +'null'=57 +'('=58 +')'=59 +'{'=60 +'}'=61 +'['=62 +']'=63 +';'=64 +','=65 +'.'=66 +'='=67 +'>'=68 +'<'=69 +'!'=70 +'~'=71 +'?'=72 +':'=73 +'=='=74 +'<='=75 +'>='=76 +'!='=77 +'&&'=78 +'||'=79 +'++'=80 +'--'=81 +'+'=82 +'-'=83 +'*'=84 +'/'=85 +'&'=86 +'|'=87 +'^'=88 +'%'=89 +'->'=90 +'::'=91 +'+='=92 +'-='=93 +'*='=94 +'/='=95 +'&='=96 +'|='=97 +'^='=98 +'%='=99 +'<<='=100 +'>>='=101 +'>>>='=102 +'@'=104 +'...'=105 diff --git a/src/de/dhbwstuttgart/parser/antlr/Java8Parser.java b/src/de/dhbwstuttgart/parser/antlr/Java8Parser.java index 50a4c6f2..851e7ead 100644 --- a/src/de/dhbwstuttgart/parser/antlr/Java8Parser.java +++ b/src/de/dhbwstuttgart/parser/antlr/Java8Parser.java @@ -17,23 +17,23 @@ public class Java8Parser extends Parser { protected static final PredictionContextCache _sharedContextCache = new PredictionContextCache(); public static final int - ABSTRACT=1, ASSERT=2, BOOLEAN=3, BREAK=4, BYTE=5, CASE=6, CATCH=7, CHAR=8, - CLASS=9, CONST=10, CONTINUE=11, DEFAULT=12, DO=13, DOUBLE=14, ELSE=15, - ENUM=16, EXTENDS=17, FINAL=18, FINALLY=19, FLOAT=20, FOR=21, IF=22, GOTO=23, - IMPLEMENTS=24, IMPORT=25, INSTANCEOF=26, INT=27, INTERFACE=28, LONG=29, - NATIVE=30, NEW=31, PACKAGE=32, PRIVATE=33, PROTECTED=34, PUBLIC=35, RETURN=36, - SHORT=37, STATIC=38, STRICTFP=39, SUPER=40, SWITCH=41, SYNCHRONIZED=42, - THIS=43, THROW=44, THROWS=45, TRANSIENT=46, TRY=47, VOID=48, VOLATILE=49, - WHILE=50, IntegerLiteral=51, FloatingPointLiteral=52, BooleanLiteral=53, - CharacterLiteral=54, StringLiteral=55, NullLiteral=56, LPAREN=57, RPAREN=58, - LBRACE=59, RBRACE=60, LBRACK=61, RBRACK=62, SEMI=63, COMMA=64, DOT=65, - ASSIGN=66, GT=67, LT=68, BANG=69, TILDE=70, QUESTION=71, COLON=72, EQUAL=73, - LE=74, GE=75, NOTEQUAL=76, AND=77, OR=78, INC=79, DEC=80, ADD=81, SUB=82, - MUL=83, DIV=84, BITAND=85, BITOR=86, CARET=87, MOD=88, ARROW=89, COLONCOLON=90, - ADD_ASSIGN=91, SUB_ASSIGN=92, MUL_ASSIGN=93, DIV_ASSIGN=94, AND_ASSIGN=95, - OR_ASSIGN=96, XOR_ASSIGN=97, MOD_ASSIGN=98, LSHIFT_ASSIGN=99, RSHIFT_ASSIGN=100, - URSHIFT_ASSIGN=101, Identifier=102, AT=103, ELLIPSIS=104, WS=105, COMMENT=106, - LINE_COMMENT=107; + T__0=1, ABSTRACT=2, ASSERT=3, BOOLEAN=4, BREAK=5, BYTE=6, CASE=7, CATCH=8, + CHAR=9, CLASS=10, CONST=11, CONTINUE=12, DEFAULT=13, DO=14, DOUBLE=15, + ELSE=16, ENUM=17, EXTENDS=18, FINAL=19, FINALLY=20, FLOAT=21, FOR=22, + IF=23, GOTO=24, IMPLEMENTS=25, IMPORT=26, INSTANCEOF=27, INT=28, INTERFACE=29, + LONG=30, NATIVE=31, NEW=32, PACKAGE=33, PRIVATE=34, PROTECTED=35, PUBLIC=36, + RETURN=37, SHORT=38, STATIC=39, STRICTFP=40, SUPER=41, SWITCH=42, SYNCHRONIZED=43, + THIS=44, THROW=45, THROWS=46, TRANSIENT=47, TRY=48, VOID=49, VOLATILE=50, + WHILE=51, IntegerLiteral=52, FloatingPointLiteral=53, BooleanLiteral=54, + CharacterLiteral=55, StringLiteral=56, NullLiteral=57, LPAREN=58, RPAREN=59, + LBRACE=60, RBRACE=61, LBRACK=62, RBRACK=63, SEMI=64, COMMA=65, DOT=66, + ASSIGN=67, GT=68, LT=69, BANG=70, TILDE=71, QUESTION=72, COLON=73, EQUAL=74, + LE=75, GE=76, NOTEQUAL=77, AND=78, OR=79, INC=80, DEC=81, ADD=82, SUB=83, + MUL=84, DIV=85, BITAND=86, BITOR=87, CARET=88, MOD=89, ARROW=90, COLONCOLON=91, + ADD_ASSIGN=92, SUB_ASSIGN=93, MUL_ASSIGN=94, DIV_ASSIGN=95, AND_ASSIGN=96, + OR_ASSIGN=97, XOR_ASSIGN=98, MOD_ASSIGN=99, LSHIFT_ASSIGN=100, RSHIFT_ASSIGN=101, + URSHIFT_ASSIGN=102, Identifier=103, AT=104, ELLIPSIS=105, WS=106, COMMENT=107, + LINE_COMMENT=108; public static final int RULE_literal = 0, RULE_type = 1, RULE_primitiveType = 2, RULE_numericType = 3, RULE_integralType = 4, RULE_floatingPointType = 5, RULE_referenceType = 6, @@ -81,47 +81,47 @@ public class Java8Parser extends Parser { RULE_markerAnnotation = 122, RULE_singleElementAnnotation = 123, RULE_arrayInitializer = 124, RULE_variableInitializerList = 125, RULE_block = 126, RULE_blockStatements = 127, RULE_blockStatement = 128, RULE_localVariableDeclarationStatement = 129, - RULE_localVariableDeclaration = 130, RULE_statement = 131, RULE_statementNoShortIf = 132, - RULE_statementWithoutTrailingSubstatement = 133, RULE_emptyStatement = 134, - RULE_labeledStatement = 135, RULE_labeledStatementNoShortIf = 136, RULE_expressionStatement = 137, - RULE_statementExpression = 138, RULE_ifThenStatement = 139, RULE_ifThenElseStatement = 140, - RULE_ifThenElseStatementNoShortIf = 141, RULE_assertStatement = 142, RULE_switchStatement = 143, - RULE_switchBlock = 144, RULE_switchBlockStatementGroup = 145, RULE_switchLabels = 146, - RULE_switchLabel = 147, RULE_enumConstantName = 148, RULE_whileStatement = 149, - RULE_whileStatementNoShortIf = 150, RULE_doStatement = 151, RULE_forStatement = 152, - RULE_forStatementNoShortIf = 153, RULE_basicForStatement = 154, RULE_basicForStatementNoShortIf = 155, - RULE_forInit = 156, RULE_forUpdate = 157, RULE_statementExpressionList = 158, - RULE_enhancedForStatement = 159, RULE_enhancedForStatementNoShortIf = 160, - RULE_breakStatement = 161, RULE_continueStatement = 162, RULE_returnStatement = 163, - RULE_throwStatement = 164, RULE_synchronizedStatement = 165, RULE_tryStatement = 166, - RULE_catches = 167, RULE_catchClause = 168, RULE_catchFormalParameter = 169, - RULE_catchType = 170, RULE_finally_ = 171, RULE_tryWithResourcesStatement = 172, - RULE_resourceSpecification = 173, RULE_resourceList = 174, RULE_resource = 175, - RULE_primary = 176, RULE_primaryNoNewArray = 177, RULE_primaryNoNewArray_lf_arrayAccess = 178, - RULE_primaryNoNewArray_lfno_arrayAccess = 179, RULE_primaryNoNewArray_lf_primary = 180, - RULE_primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary = 181, RULE_primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary = 182, - RULE_primaryNoNewArray_lfno_primary = 183, RULE_primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary = 184, - RULE_primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary = 185, - RULE_classInstanceCreationExpression = 186, RULE_classInstanceCreationExpression_lf_primary = 187, - RULE_classInstanceCreationExpression_lfno_primary = 188, RULE_typeArgumentsOrDiamond = 189, - RULE_fieldAccess = 190, RULE_fieldAccess_lf_primary = 191, RULE_fieldAccess_lfno_primary = 192, - RULE_arrayAccess = 193, RULE_arrayAccess_lf_primary = 194, RULE_arrayAccess_lfno_primary = 195, - RULE_methodInvocation = 196, RULE_methodInvocation_lf_primary = 197, RULE_methodInvocation_lfno_primary = 198, - RULE_argumentList = 199, RULE_methodReference = 200, RULE_methodReference_lf_primary = 201, - RULE_methodReference_lfno_primary = 202, RULE_arrayCreationExpression = 203, - RULE_dimExprs = 204, RULE_dimExpr = 205, RULE_constantExpression = 206, - RULE_expression = 207, RULE_lambdaExpression = 208, RULE_lambdaParameters = 209, - RULE_inferredFormalParameterList = 210, RULE_lambdaBody = 211, RULE_assignmentExpression = 212, - RULE_assignment = 213, RULE_leftHandSide = 214, RULE_assignmentOperator = 215, - RULE_conditionalExpression = 216, RULE_conditionalOrExpression = 217, - RULE_conditionalAndExpression = 218, RULE_inclusiveOrExpression = 219, - RULE_exclusiveOrExpression = 220, RULE_andExpression = 221, RULE_equalityExpression = 222, - RULE_relationalExpression = 223, RULE_shiftExpression = 224, RULE_additiveExpression = 225, - RULE_multiplicativeExpression = 226, RULE_unaryExpression = 227, RULE_preIncrementExpression = 228, - RULE_preDecrementExpression = 229, RULE_unaryExpressionNotPlusMinus = 230, - RULE_postfixExpression = 231, RULE_postIncrementExpression = 232, RULE_postIncrementExpression_lf_postfixExpression = 233, - RULE_postDecrementExpression = 234, RULE_postDecrementExpression_lf_postfixExpression = 235, - RULE_castExpression = 236; + RULE_unannTypeOrAuto = 130, RULE_localVariableDeclaration = 131, RULE_statement = 132, + RULE_statementNoShortIf = 133, RULE_statementWithoutTrailingSubstatement = 134, + RULE_emptyStatement = 135, RULE_labeledStatement = 136, RULE_labeledStatementNoShortIf = 137, + RULE_expressionStatement = 138, RULE_statementExpression = 139, RULE_ifThenStatement = 140, + RULE_ifThenElseStatement = 141, RULE_ifThenElseStatementNoShortIf = 142, + RULE_assertStatement = 143, RULE_switchStatement = 144, RULE_switchBlock = 145, + RULE_switchBlockStatementGroup = 146, RULE_switchLabels = 147, RULE_switchLabel = 148, + RULE_enumConstantName = 149, RULE_whileStatement = 150, RULE_whileStatementNoShortIf = 151, + RULE_doStatement = 152, RULE_forStatement = 153, RULE_forStatementNoShortIf = 154, + RULE_basicForStatement = 155, RULE_basicForStatementNoShortIf = 156, RULE_forInit = 157, + RULE_forUpdate = 158, RULE_statementExpressionList = 159, RULE_enhancedForStatement = 160, + RULE_enhancedForStatementNoShortIf = 161, RULE_breakStatement = 162, RULE_continueStatement = 163, + RULE_returnStatement = 164, RULE_throwStatement = 165, RULE_synchronizedStatement = 166, + RULE_tryStatement = 167, RULE_catches = 168, RULE_catchClause = 169, RULE_catchFormalParameter = 170, + RULE_catchType = 171, RULE_finally_ = 172, RULE_tryWithResourcesStatement = 173, + RULE_resourceSpecification = 174, RULE_resourceList = 175, RULE_resource = 176, + RULE_primary = 177, RULE_primaryNoNewArray = 178, RULE_primaryNoNewArray_lf_arrayAccess = 179, + RULE_primaryNoNewArray_lfno_arrayAccess = 180, RULE_primaryNoNewArray_lf_primary = 181, + RULE_primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary = 182, RULE_primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary = 183, + RULE_primaryNoNewArray_lfno_primary = 184, RULE_primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary = 185, + RULE_primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary = 186, + RULE_classInstanceCreationExpression = 187, RULE_classInstanceCreationExpression_lf_primary = 188, + RULE_classInstanceCreationExpression_lfno_primary = 189, RULE_typeArgumentsOrDiamond = 190, + RULE_fieldAccess = 191, RULE_fieldAccess_lf_primary = 192, RULE_fieldAccess_lfno_primary = 193, + RULE_arrayAccess = 194, RULE_arrayAccess_lf_primary = 195, RULE_arrayAccess_lfno_primary = 196, + RULE_methodInvocation = 197, RULE_methodInvocation_lf_primary = 198, RULE_methodInvocation_lfno_primary = 199, + RULE_argumentList = 200, RULE_methodReference = 201, RULE_methodReference_lf_primary = 202, + RULE_methodReference_lfno_primary = 203, RULE_arrayCreationExpression = 204, + RULE_dimExprs = 205, RULE_dimExpr = 206, RULE_constantExpression = 207, + RULE_expression = 208, RULE_lambdaExpression = 209, RULE_lambdaParameters = 210, + RULE_inferredFormalParameterList = 211, RULE_lambdaBody = 212, RULE_assignmentExpression = 213, + RULE_assignment = 214, RULE_leftHandSide = 215, RULE_assignmentOperator = 216, + RULE_conditionalExpression = 217, RULE_conditionalOrExpression = 218, + RULE_conditionalAndExpression = 219, RULE_inclusiveOrExpression = 220, + RULE_exclusiveOrExpression = 221, RULE_andExpression = 222, RULE_equalityExpression = 223, + RULE_relationalExpression = 224, RULE_shiftExpression = 225, RULE_additiveExpression = 226, + RULE_multiplicativeExpression = 227, RULE_unaryExpression = 228, RULE_preIncrementExpression = 229, + RULE_preDecrementExpression = 230, RULE_unaryExpressionNotPlusMinus = 231, + RULE_postfixExpression = 232, RULE_postIncrementExpression = 233, RULE_postIncrementExpression_lf_postfixExpression = 234, + RULE_postDecrementExpression = 235, RULE_postDecrementExpression_lf_postfixExpression = 236, + RULE_castExpression = 237; public static final String[] ruleNames = { "literal", "type", "primitiveType", "numericType", "integralType", "floatingPointType", "referenceType", "classOrInterfaceType", "classType", "classType_lf_classOrInterfaceType", @@ -157,9 +157,9 @@ public class Java8Parser extends Parser { "elementValuePairList", "elementValuePair", "elementValue", "elementValueArrayInitializer", "elementValueList", "markerAnnotation", "singleElementAnnotation", "arrayInitializer", "variableInitializerList", "block", "blockStatements", "blockStatement", - "localVariableDeclarationStatement", "localVariableDeclaration", "statement", - "statementNoShortIf", "statementWithoutTrailingSubstatement", "emptyStatement", - "labeledStatement", "labeledStatementNoShortIf", "expressionStatement", + "localVariableDeclarationStatement", "unannTypeOrAuto", "localVariableDeclaration", + "statement", "statementNoShortIf", "statementWithoutTrailingSubstatement", + "emptyStatement", "labeledStatement", "labeledStatementNoShortIf", "expressionStatement", "statementExpression", "ifThenStatement", "ifThenElseStatement", "ifThenElseStatementNoShortIf", "assertStatement", "switchStatement", "switchBlock", "switchBlockStatementGroup", "switchLabels", "switchLabel", "enumConstantName", "whileStatement", "whileStatementNoShortIf", @@ -192,8 +192,8 @@ public class Java8Parser extends Parser { }; private static final String[] _LITERAL_NAMES = { - null, "'abstract'", "'assert'", "'boolean'", "'break'", "'byte'", "'case'", - "'catch'", "'char'", "'class'", "'const'", "'continue'", "'default'", + null, "'auto'", "'abstract'", "'assert'", "'boolean'", "'break'", "'byte'", + "'case'", "'catch'", "'char'", "'class'", "'const'", "'continue'", "'default'", "'do'", "'double'", "'else'", "'enum'", "'extends'", "'final'", "'finally'", "'float'", "'for'", "'if'", "'goto'", "'implements'", "'import'", "'instanceof'", "'int'", "'interface'", "'long'", "'native'", "'new'", "'package'", "'private'", @@ -208,21 +208,21 @@ public class Java8Parser extends Parser { "'>>>='", null, "'@'", "'...'" }; private static final String[] _SYMBOLIC_NAMES = { - null, "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", - "CHAR", "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", - "ENUM", "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS", - "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", "NEW", "PACKAGE", - "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT", "STATIC", "STRICTFP", - "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW", "THROWS", "TRANSIENT", - "TRY", "VOID", "VOLATILE", "WHILE", "IntegerLiteral", "FloatingPointLiteral", - "BooleanLiteral", "CharacterLiteral", "StringLiteral", "NullLiteral", - "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", "SEMI", "COMMA", - "DOT", "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION", "COLON", "EQUAL", - "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", "DEC", "ADD", "SUB", "MUL", - "DIV", "BITAND", "BITOR", "CARET", "MOD", "ARROW", "COLONCOLON", "ADD_ASSIGN", - "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", - "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "Identifier", - "AT", "ELLIPSIS", "WS", "COMMENT", "LINE_COMMENT" + null, null, "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", + "CATCH", "CHAR", "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", + "ELSE", "ENUM", "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO", + "IMPLEMENTS", "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", + "NEW", "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT", + "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW", + "THROWS", "TRANSIENT", "TRY", "VOID", "VOLATILE", "WHILE", "IntegerLiteral", + "FloatingPointLiteral", "BooleanLiteral", "CharacterLiteral", "StringLiteral", + "NullLiteral", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", + "SEMI", "COMMA", "DOT", "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION", + "COLON", "EQUAL", "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", "DEC", "ADD", + "SUB", "MUL", "DIV", "BITAND", "BITOR", "CARET", "MOD", "ARROW", "COLONCOLON", + "ADD_ASSIGN", "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", + "OR_ASSIGN", "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", + "URSHIFT_ASSIGN", "Identifier", "AT", "ELLIPSIS", "WS", "COMMENT", "LINE_COMMENT" }; public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); @@ -293,7 +293,7 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(474); + setState(476); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral))) != 0)) ) { _errHandler.recoverInline(this); @@ -330,19 +330,19 @@ public class Java8Parser extends Parser { TypeContext _localctx = new TypeContext(_ctx, getState()); enterRule(_localctx, 2, RULE_type); try { - setState(478); + setState(480); switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(476); + setState(478); primitiveType(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(477); + setState(479); referenceType(); } break; @@ -380,47 +380,47 @@ public class Java8Parser extends Parser { enterRule(_localctx, 4, RULE_primitiveType); int _la; try { - setState(494); + setState(496); switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(483); + setState(485); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(480); + setState(482); annotation(); } } - setState(485); + setState(487); _errHandler.sync(this); _la = _input.LA(1); } - setState(486); + setState(488); numericType(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(490); + setState(492); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(487); + setState(489); annotation(); } } - setState(492); + setState(494); _errHandler.sync(this); _la = _input.LA(1); } - setState(493); + setState(495); match(BOOLEAN); } break; @@ -454,7 +454,7 @@ public class Java8Parser extends Parser { NumericTypeContext _localctx = new NumericTypeContext(_ctx, getState()); enterRule(_localctx, 6, RULE_numericType); try { - setState(498); + setState(500); switch (_input.LA(1)) { case BYTE: case CHAR: @@ -463,7 +463,7 @@ public class Java8Parser extends Parser { case SHORT: enterOuterAlt(_localctx, 1); { - setState(496); + setState(498); integralType(); } break; @@ -471,7 +471,7 @@ public class Java8Parser extends Parser { case FLOAT: enterOuterAlt(_localctx, 2); { - setState(497); + setState(499); floatingPointType(); } break; @@ -504,7 +504,7 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(500); + setState(502); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BYTE) | (1L << CHAR) | (1L << INT) | (1L << LONG) | (1L << SHORT))) != 0)) ) { _errHandler.recoverInline(this); @@ -538,7 +538,7 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(502); + setState(504); _la = _input.LA(1); if ( !(_la==DOUBLE || _la==FLOAT) ) { _errHandler.recoverInline(this); @@ -578,26 +578,26 @@ public class Java8Parser extends Parser { ReferenceTypeContext _localctx = new ReferenceTypeContext(_ctx, getState()); enterRule(_localctx, 12, RULE_referenceType); try { - setState(507); + setState(509); switch ( getInterpreter().adaptivePredict(_input,5,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(504); + setState(506); classOrInterfaceType(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(505); + setState(507); typeVariable(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(506); + setState(508); arrayType(); } break; @@ -646,45 +646,45 @@ public class Java8Parser extends Parser { int _alt; enterOuterAlt(_localctx, 1); { - setState(511); + setState(513); switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) { case 1: { - setState(509); + setState(511); classType_lfno_classOrInterfaceType(); } break; case 2: { - setState(510); + setState(512); interfaceType_lfno_classOrInterfaceType(); } break; } - setState(517); + setState(519); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,8,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { - setState(515); + setState(517); switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) { case 1: { - setState(513); + setState(515); classType_lf_classOrInterfaceType(); } break; case 2: { - setState(514); + setState(516); interfaceType_lf_classOrInterfaceType(); } break; } } } - setState(519); + setState(521); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,8,_ctx); } @@ -726,32 +726,32 @@ public class Java8Parser extends Parser { enterRule(_localctx, 16, RULE_classType); int _la; try { - setState(542); + setState(544); switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(523); + setState(525); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(520); + setState(522); annotation(); } } - setState(525); + setState(527); _errHandler.sync(this); _la = _input.LA(1); } - setState(526); - match(Identifier); setState(528); + match(Identifier); + setState(530); _la = _input.LA(1); if (_la==LT) { { - setState(527); + setState(529); typeArguments(); } } @@ -761,31 +761,31 @@ public class Java8Parser extends Parser { case 2: enterOuterAlt(_localctx, 2); { - setState(530); + setState(532); classOrInterfaceType(); - setState(531); + setState(533); match(DOT); - setState(535); + setState(537); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(532); + setState(534); annotation(); } } - setState(537); + setState(539); _errHandler.sync(this); _la = _input.LA(1); } - setState(538); - match(Identifier); setState(540); + match(Identifier); + setState(542); _la = _input.LA(1); if (_la==LT) { { - setState(539); + setState(541); typeArguments(); } } @@ -829,29 +829,29 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(544); + setState(546); match(DOT); - setState(548); + setState(550); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(545); + setState(547); annotation(); } } - setState(550); + setState(552); _errHandler.sync(this); _la = _input.LA(1); } - setState(551); - match(Identifier); setState(553); + match(Identifier); + setState(555); switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) { case 1: { - setState(552); + setState(554); typeArguments(); } break; @@ -893,27 +893,27 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(558); + setState(560); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(555); + setState(557); annotation(); } } - setState(560); + setState(562); _errHandler.sync(this); _la = _input.LA(1); } - setState(561); - match(Identifier); setState(563); + match(Identifier); + setState(565); switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) { case 1: { - setState(562); + setState(564); typeArguments(); } break; @@ -947,7 +947,7 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(565); + setState(567); classType(); } } @@ -978,7 +978,7 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(567); + setState(569); classType_lf_classOrInterfaceType(); } } @@ -1009,7 +1009,7 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(569); + setState(571); classType_lfno_classOrInterfaceType(); } } @@ -1045,21 +1045,21 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(574); + setState(576); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(571); + setState(573); annotation(); } } - setState(576); + setState(578); _errHandler.sync(this); _la = _input.LA(1); } - setState(577); + setState(579); match(Identifier); } } @@ -1097,32 +1097,32 @@ public class Java8Parser extends Parser { ArrayTypeContext _localctx = new ArrayTypeContext(_ctx, getState()); enterRule(_localctx, 30, RULE_arrayType); try { - setState(588); + setState(590); switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(579); + setState(581); primitiveType(); - setState(580); + setState(582); dims(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(582); + setState(584); classOrInterfaceType(); - setState(583); + setState(585); dims(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(585); + setState(587); typeVariable(); - setState(586); + setState(588); dims(); } break; @@ -1160,53 +1160,53 @@ public class Java8Parser extends Parser { int _alt; enterOuterAlt(_localctx, 1); { - setState(593); + setState(595); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(590); + setState(592); annotation(); } } - setState(595); + setState(597); _errHandler.sync(this); _la = _input.LA(1); } - setState(596); + setState(598); match(LBRACK); - setState(597); + setState(599); match(RBRACK); - setState(608); + setState(610); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,22,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(601); + setState(603); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(598); + setState(600); annotation(); } } - setState(603); + setState(605); _errHandler.sync(this); _la = _input.LA(1); } - setState(604); + setState(606); match(LBRACK); - setState(605); + setState(607); match(RBRACK); } } } - setState(610); + setState(612); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,22,_ctx); } @@ -1247,27 +1247,27 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(614); + setState(616); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(611); + setState(613); typeParameterModifier(); } } - setState(616); + setState(618); _errHandler.sync(this); _la = _input.LA(1); } - setState(617); - match(Identifier); setState(619); + match(Identifier); + setState(621); _la = _input.LA(1); if (_la==EXTENDS) { { - setState(618); + setState(620); typeBound(); } } @@ -1301,7 +1301,7 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(621); + setState(623); annotation(); } } @@ -1340,35 +1340,35 @@ public class Java8Parser extends Parser { enterRule(_localctx, 38, RULE_typeBound); int _la; try { - setState(633); + setState(635); switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(623); + setState(625); match(EXTENDS); - setState(624); + setState(626); typeVariable(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(625); + setState(627); match(EXTENDS); - setState(626); + setState(628); classOrInterfaceType(); - setState(630); + setState(632); _errHandler.sync(this); _la = _input.LA(1); while (_la==BITAND) { { { - setState(627); + setState(629); additionalBound(); } } - setState(632); + setState(634); _errHandler.sync(this); _la = _input.LA(1); } @@ -1403,9 +1403,9 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(635); + setState(637); match(BITAND); - setState(636); + setState(638); interfaceType(); } } @@ -1436,11 +1436,11 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(638); - match(LT); - setState(639); - typeArgumentList(); setState(640); + match(LT); + setState(641); + typeArgumentList(); + setState(642); match(GT); } } @@ -1475,21 +1475,21 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(642); + setState(644); typeArgument(); - setState(647); + setState(649); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { - setState(643); + setState(645); match(COMMA); - setState(644); + setState(646); typeArgument(); } } - setState(649); + setState(651); _errHandler.sync(this); _la = _input.LA(1); } @@ -1523,19 +1523,19 @@ public class Java8Parser extends Parser { TypeArgumentContext _localctx = new TypeArgumentContext(_ctx, getState()); enterRule(_localctx, 46, RULE_typeArgument); try { - setState(652); + setState(654); switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(650); + setState(652); referenceType(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(651); + setState(653); wildcard(); } break; @@ -1575,27 +1575,27 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(657); + setState(659); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(654); + setState(656); annotation(); } } - setState(659); + setState(661); _errHandler.sync(this); _la = _input.LA(1); } - setState(660); - match(QUESTION); setState(662); + match(QUESTION); + setState(664); _la = _input.LA(1); if (_la==EXTENDS || _la==SUPER) { { - setState(661); + setState(663); wildcardBounds(); } } @@ -1627,23 +1627,23 @@ public class Java8Parser extends Parser { WildcardBoundsContext _localctx = new WildcardBoundsContext(_ctx, getState()); enterRule(_localctx, 50, RULE_wildcardBounds); try { - setState(668); + setState(670); switch (_input.LA(1)) { case EXTENDS: enterOuterAlt(_localctx, 1); { - setState(664); + setState(666); match(EXTENDS); - setState(665); + setState(667); referenceType(); } break; case SUPER: enterOuterAlt(_localctx, 2); { - setState(666); + setState(668); match(SUPER); - setState(667); + setState(669); referenceType(); } break; @@ -1689,11 +1689,11 @@ public class Java8Parser extends Parser { enterOuterAlt(_localctx, 1); { { - setState(671); + setState(673); match(Identifier); } _ctx.stop = _input.LT(-1); - setState(678); + setState(680); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,32,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { @@ -1704,16 +1704,16 @@ public class Java8Parser extends Parser { { _localctx = new PackageNameContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_packageName); - setState(673); - if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(674); - match(DOT); setState(675); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(676); + match(DOT); + setState(677); match(Identifier); } } } - setState(680); + setState(682); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,32,_ctx); } @@ -1745,23 +1745,23 @@ public class Java8Parser extends Parser { TypeNameContext _localctx = new TypeNameContext(_ctx, getState()); enterRule(_localctx, 54, RULE_typeName); try { - setState(686); + setState(688); switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(681); + setState(683); match(Identifier); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(682); - packageOrTypeName(0); - setState(683); - match(DOT); setState(684); + packageOrTypeName(0); + setState(685); + match(DOT); + setState(686); match(Identifier); } break; @@ -1805,11 +1805,11 @@ public class Java8Parser extends Parser { enterOuterAlt(_localctx, 1); { { - setState(689); + setState(691); match(Identifier); } _ctx.stop = _input.LT(-1); - setState(696); + setState(698); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,34,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { @@ -1820,16 +1820,16 @@ public class Java8Parser extends Parser { { _localctx = new PackageOrTypeNameContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_packageOrTypeName); - setState(691); - if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(692); - match(DOT); setState(693); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(694); + match(DOT); + setState(695); match(Identifier); } } } - setState(698); + setState(700); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,34,_ctx); } @@ -1861,23 +1861,23 @@ public class Java8Parser extends Parser { ExpressionNameContext _localctx = new ExpressionNameContext(_ctx, getState()); enterRule(_localctx, 58, RULE_expressionName); try { - setState(704); + setState(706); switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(699); + setState(701); match(Identifier); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(700); - ambiguousName(0); - setState(701); - match(DOT); setState(702); + ambiguousName(0); + setState(703); + match(DOT); + setState(704); match(Identifier); } break; @@ -1908,7 +1908,7 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(706); + setState(708); match(Identifier); } } @@ -1950,11 +1950,11 @@ public class Java8Parser extends Parser { enterOuterAlt(_localctx, 1); { { - setState(709); + setState(711); match(Identifier); } _ctx.stop = _input.LT(-1); - setState(716); + setState(718); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,36,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { @@ -1965,16 +1965,16 @@ public class Java8Parser extends Parser { { _localctx = new AmbiguousNameContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_ambiguousName); - setState(711); - if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(712); - match(DOT); setState(713); + if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); + setState(714); + match(DOT); + setState(715); match(Identifier); } } } - setState(718); + setState(720); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,36,_ctx); } @@ -2021,44 +2021,44 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(720); + setState(722); switch ( getInterpreter().adaptivePredict(_input,37,_ctx) ) { case 1: { - setState(719); + setState(721); packageDeclaration(); } break; } - setState(725); + setState(727); _errHandler.sync(this); _la = _input.LA(1); while (_la==IMPORT) { { { - setState(722); + setState(724); importDeclaration(); } } - setState(727); + setState(729); _errHandler.sync(this); _la = _input.LA(1); } - setState(731); + setState(733); _errHandler.sync(this); _la = _input.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << CLASS) | (1L << ENUM) | (1L << FINAL) | (1L << INTERFACE) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << STATIC) | (1L << STRICTFP) | (1L << SEMI))) != 0) || _la==AT) { + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << CLASS) | (1L << ENUM) | (1L << FINAL) | (1L << INTERFACE) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << STATIC) | (1L << STRICTFP))) != 0) || _la==SEMI || _la==AT) { { { - setState(728); + setState(730); typeDeclaration(); } } - setState(733); + setState(735); _errHandler.sync(this); _la = _input.LA(1); } - setState(734); + setState(736); match(EOF); } } @@ -2097,41 +2097,41 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(739); + setState(741); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(736); + setState(738); packageModifier(); } } - setState(741); + setState(743); _errHandler.sync(this); _la = _input.LA(1); } - setState(742); + setState(744); match(PACKAGE); - setState(743); + setState(745); match(Identifier); - setState(748); + setState(750); _errHandler.sync(this); _la = _input.LA(1); while (_la==DOT) { { { - setState(744); + setState(746); match(DOT); - setState(745); + setState(747); match(Identifier); } } - setState(750); + setState(752); _errHandler.sync(this); _la = _input.LA(1); } - setState(751); + setState(753); match(SEMI); } } @@ -2162,7 +2162,7 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(753); + setState(755); annotation(); } } @@ -2200,33 +2200,33 @@ public class Java8Parser extends Parser { ImportDeclarationContext _localctx = new ImportDeclarationContext(_ctx, getState()); enterRule(_localctx, 70, RULE_importDeclaration); try { - setState(759); + setState(761); switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(755); + setState(757); singleTypeImportDeclaration(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(756); + setState(758); typeImportOnDemandDeclaration(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(757); + setState(759); singleStaticImportDeclaration(); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(758); + setState(760); staticImportOnDemandDeclaration(); } break; @@ -2259,11 +2259,11 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(761); - match(IMPORT); - setState(762); - typeName(); setState(763); + match(IMPORT); + setState(764); + typeName(); + setState(765); match(SEMI); } } @@ -2294,15 +2294,15 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(765); - match(IMPORT); - setState(766); - packageOrTypeName(0); setState(767); - match(DOT); + match(IMPORT); setState(768); - match(MUL); + packageOrTypeName(0); setState(769); + match(DOT); + setState(770); + match(MUL); + setState(771); match(SEMI); } } @@ -2334,17 +2334,17 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(771); - match(IMPORT); - setState(772); - match(STATIC); setState(773); - typeName(); + match(IMPORT); setState(774); - match(DOT); + match(STATIC); setState(775); - match(Identifier); + typeName(); setState(776); + match(DOT); + setState(777); + match(Identifier); + setState(778); match(SEMI); } } @@ -2375,17 +2375,17 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(778); - match(IMPORT); - setState(779); - match(STATIC); setState(780); - typeName(); + match(IMPORT); setState(781); - match(DOT); + match(STATIC); setState(782); - match(MUL); + typeName(); setState(783); + match(DOT); + setState(784); + match(MUL); + setState(785); match(SEMI); } } @@ -2417,26 +2417,26 @@ public class Java8Parser extends Parser { TypeDeclarationContext _localctx = new TypeDeclarationContext(_ctx, getState()); enterRule(_localctx, 80, RULE_typeDeclaration); try { - setState(788); + setState(790); switch ( getInterpreter().adaptivePredict(_input,43,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(785); + setState(787); classDeclaration(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(786); + setState(788); interfaceDeclaration(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(787); + setState(789); match(SEMI); } break; @@ -2470,19 +2470,19 @@ public class Java8Parser extends Parser { ClassDeclarationContext _localctx = new ClassDeclarationContext(_ctx, getState()); enterRule(_localctx, 82, RULE_classDeclaration); try { - setState(792); + setState(794); switch ( getInterpreter().adaptivePredict(_input,44,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(790); + setState(792); normalClassDeclaration(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(791); + setState(793); enumDeclaration(); } break; @@ -2532,52 +2532,52 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(797); + setState(799); _errHandler.sync(this); _la = _input.LA(1); while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << FINAL) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << STATIC) | (1L << STRICTFP))) != 0) || _la==AT) { { { - setState(794); + setState(796); classModifier(); } } - setState(799); + setState(801); _errHandler.sync(this); _la = _input.LA(1); } - setState(800); + setState(802); match(CLASS); - setState(801); - match(Identifier); setState(803); + match(Identifier); + setState(805); _la = _input.LA(1); if (_la==LT) { { - setState(802); + setState(804); typeParameters(); } } - setState(806); + setState(808); _la = _input.LA(1); if (_la==EXTENDS) { { - setState(805); + setState(807); superclass(); } } - setState(809); + setState(811); _la = _input.LA(1); if (_la==IMPLEMENTS) { { - setState(808); + setState(810); superinterfaces(); } } - setState(811); + setState(813); classBody(); } } @@ -2606,61 +2606,61 @@ public class Java8Parser extends Parser { ClassModifierContext _localctx = new ClassModifierContext(_ctx, getState()); enterRule(_localctx, 86, RULE_classModifier); try { - setState(821); + setState(823); switch (_input.LA(1)) { case AT: enterOuterAlt(_localctx, 1); { - setState(813); + setState(815); annotation(); } break; case PUBLIC: enterOuterAlt(_localctx, 2); { - setState(814); + setState(816); match(PUBLIC); } break; case PROTECTED: enterOuterAlt(_localctx, 3); { - setState(815); + setState(817); match(PROTECTED); } break; case PRIVATE: enterOuterAlt(_localctx, 4); { - setState(816); + setState(818); match(PRIVATE); } break; case ABSTRACT: enterOuterAlt(_localctx, 5); { - setState(817); + setState(819); match(ABSTRACT); } break; case STATIC: enterOuterAlt(_localctx, 6); { - setState(818); + setState(820); match(STATIC); } break; case FINAL: enterOuterAlt(_localctx, 7); { - setState(819); + setState(821); match(FINAL); } break; case STRICTFP: enterOuterAlt(_localctx, 8); { - setState(820); + setState(822); match(STRICTFP); } break; @@ -2695,11 +2695,11 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(823); - match(LT); - setState(824); - typeParameterList(); setState(825); + match(LT); + setState(826); + typeParameterList(); + setState(827); match(GT); } } @@ -2734,21 +2734,21 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(827); + setState(829); typeParameter(); - setState(832); + setState(834); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { - setState(828); + setState(830); match(COMMA); - setState(829); + setState(831); typeParameter(); } } - setState(834); + setState(836); _errHandler.sync(this); _la = _input.LA(1); } @@ -2781,9 +2781,9 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(835); + setState(837); match(EXTENDS); - setState(836); + setState(838); classType(); } } @@ -2814,9 +2814,9 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(838); + setState(840); match(IMPLEMENTS); - setState(839); + setState(841); interfaceTypeList(); } } @@ -2851,21 +2851,21 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(841); + setState(843); interfaceType(); - setState(846); + setState(848); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { - setState(842); + setState(844); match(COMMA); - setState(843); + setState(845); interfaceType(); } } - setState(848); + setState(850); _errHandler.sync(this); _la = _input.LA(1); } @@ -2902,23 +2902,23 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(849); + setState(851); match(LBRACE); - setState(853); + setState(855); _errHandler.sync(this); _la = _input.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << NATIVE) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SYNCHRONIZED) | (1L << TRANSIENT) | (1L << VOID) | (1L << VOLATILE) | (1L << LBRACE) | (1L << SEMI))) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (LT - 68)) | (1L << (Identifier - 68)) | (1L << (AT - 68)))) != 0)) { + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << NATIVE) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SYNCHRONIZED) | (1L << TRANSIENT) | (1L << VOID) | (1L << VOLATILE) | (1L << LBRACE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (SEMI - 64)) | (1L << (LT - 64)) | (1L << (Identifier - 64)) | (1L << (AT - 64)))) != 0)) { { { - setState(850); + setState(852); classBodyDeclaration(); } } - setState(855); + setState(857); _errHandler.sync(this); _la = _input.LA(1); } - setState(856); + setState(858); match(RBRACE); } } @@ -2953,26 +2953,26 @@ public class Java8Parser extends Parser { ClassBodyDeclarationContext _localctx = new ClassBodyDeclarationContext(_ctx, getState()); enterRule(_localctx, 100, RULE_classBodyDeclaration); try { - setState(861); + setState(863); switch ( getInterpreter().adaptivePredict(_input,53,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(858); + setState(860); classMemberDeclaration(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(859); + setState(861); instanceInitializer(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(860); + setState(862); staticInitializer(); } break; @@ -3012,40 +3012,40 @@ public class Java8Parser extends Parser { ClassMemberDeclarationContext _localctx = new ClassMemberDeclarationContext(_ctx, getState()); enterRule(_localctx, 102, RULE_classMemberDeclaration); try { - setState(868); + setState(870); switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(863); + setState(865); fieldDeclaration(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(864); + setState(866); methodDeclaration(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(865); + setState(867); classDeclaration(); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(866); + setState(868); interfaceDeclaration(); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(867); + setState(869); match(SEMI); } break; @@ -3088,32 +3088,32 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(873); + setState(875); _errHandler.sync(this); _la = _input.LA(1); while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FINAL) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << STATIC) | (1L << TRANSIENT) | (1L << VOLATILE))) != 0) || _la==AT) { { { - setState(870); + setState(872); fieldModifier(); } } - setState(875); + setState(877); _errHandler.sync(this); _la = _input.LA(1); } - setState(877); + setState(879); switch ( getInterpreter().adaptivePredict(_input,56,_ctx) ) { case 1: { - setState(876); + setState(878); unannType(); } break; } - setState(879); + setState(881); variableDeclaratorList(); - setState(880); + setState(882); match(SEMI); } } @@ -3142,61 +3142,61 @@ public class Java8Parser extends Parser { FieldModifierContext _localctx = new FieldModifierContext(_ctx, getState()); enterRule(_localctx, 106, RULE_fieldModifier); try { - setState(890); + setState(892); switch (_input.LA(1)) { case AT: enterOuterAlt(_localctx, 1); { - setState(882); + setState(884); annotation(); } break; case PUBLIC: enterOuterAlt(_localctx, 2); { - setState(883); + setState(885); match(PUBLIC); } break; case PROTECTED: enterOuterAlt(_localctx, 3); { - setState(884); + setState(886); match(PROTECTED); } break; case PRIVATE: enterOuterAlt(_localctx, 4); { - setState(885); + setState(887); match(PRIVATE); } break; case STATIC: enterOuterAlt(_localctx, 5); { - setState(886); + setState(888); match(STATIC); } break; case FINAL: enterOuterAlt(_localctx, 6); { - setState(887); + setState(889); match(FINAL); } break; case TRANSIENT: enterOuterAlt(_localctx, 7); { - setState(888); + setState(890); match(TRANSIENT); } break; case VOLATILE: enterOuterAlt(_localctx, 8); { - setState(889); + setState(891); match(VOLATILE); } break; @@ -3235,21 +3235,21 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(892); + setState(894); variableDeclarator(); - setState(897); + setState(899); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { - setState(893); + setState(895); match(COMMA); - setState(894); + setState(896); variableDeclarator(); } } - setState(899); + setState(901); _errHandler.sync(this); _la = _input.LA(1); } @@ -3286,15 +3286,15 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(900); + setState(902); variableDeclaratorId(); - setState(903); + setState(905); _la = _input.LA(1); if (_la==ASSIGN) { { - setState(901); + setState(903); match(ASSIGN); - setState(902); + setState(904); variableInitializer(); } } @@ -3330,13 +3330,13 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(905); - match(Identifier); setState(907); + match(Identifier); + setState(909); _la = _input.LA(1); if (_la==LBRACK || _la==AT) { { - setState(906); + setState(908); dims(); } } @@ -3371,7 +3371,7 @@ public class Java8Parser extends Parser { VariableInitializerContext _localctx = new VariableInitializerContext(_ctx, getState()); enterRule(_localctx, 114, RULE_variableInitializer); try { - setState(911); + setState(913); switch (_input.LA(1)) { case BOOLEAN: case BYTE: @@ -3402,14 +3402,14 @@ public class Java8Parser extends Parser { case AT: enterOuterAlt(_localctx, 1); { - setState(909); + setState(911); expression(); } break; case LBRACE: enterOuterAlt(_localctx, 2); { - setState(910); + setState(912); arrayInitializer(); } break; @@ -3445,19 +3445,19 @@ public class Java8Parser extends Parser { UnannTypeContext _localctx = new UnannTypeContext(_ctx, getState()); enterRule(_localctx, 116, RULE_unannType); try { - setState(915); + setState(917); switch ( getInterpreter().adaptivePredict(_input,62,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(913); + setState(915); unannPrimitiveType(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(914); + setState(916); unannReferenceType(); } break; @@ -3488,7 +3488,7 @@ public class Java8Parser extends Parser { UnannPrimitiveTypeContext _localctx = new UnannPrimitiveTypeContext(_ctx, getState()); enterRule(_localctx, 118, RULE_unannPrimitiveType); try { - setState(919); + setState(921); switch (_input.LA(1)) { case BYTE: case CHAR: @@ -3499,14 +3499,14 @@ public class Java8Parser extends Parser { case SHORT: enterOuterAlt(_localctx, 1); { - setState(917); + setState(919); numericType(); } break; case BOOLEAN: enterOuterAlt(_localctx, 2); { - setState(918); + setState(920); match(BOOLEAN); } break; @@ -3545,26 +3545,26 @@ public class Java8Parser extends Parser { UnannReferenceTypeContext _localctx = new UnannReferenceTypeContext(_ctx, getState()); enterRule(_localctx, 120, RULE_unannReferenceType); try { - setState(924); + setState(926); switch ( getInterpreter().adaptivePredict(_input,64,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(921); + setState(923); unannClassOrInterfaceType(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(922); + setState(924); unannTypeVariable(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(923); + setState(925); unannArrayType(); } break; @@ -3613,45 +3613,45 @@ public class Java8Parser extends Parser { int _alt; enterOuterAlt(_localctx, 1); { - setState(928); + setState(930); switch ( getInterpreter().adaptivePredict(_input,65,_ctx) ) { case 1: { - setState(926); + setState(928); unannClassType_lfno_unannClassOrInterfaceType(); } break; case 2: { - setState(927); + setState(929); unannInterfaceType_lfno_unannClassOrInterfaceType(); } break; } - setState(934); + setState(936); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,67,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { - setState(932); + setState(934); switch ( getInterpreter().adaptivePredict(_input,66,_ctx) ) { case 1: { - setState(930); + setState(932); unannClassType_lf_unannClassOrInterfaceType(); } break; case 2: { - setState(931); + setState(933); unannInterfaceType_lf_unannClassOrInterfaceType(); } break; } } } - setState(936); + setState(938); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,67,_ctx); } @@ -3693,18 +3693,18 @@ public class Java8Parser extends Parser { enterRule(_localctx, 124, RULE_unannClassType); int _la; try { - setState(953); + setState(955); switch ( getInterpreter().adaptivePredict(_input,71,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(937); - match(Identifier); setState(939); + match(Identifier); + setState(941); _la = _input.LA(1); if (_la==LT) { { - setState(938); + setState(940); typeArguments(); } } @@ -3714,31 +3714,31 @@ public class Java8Parser extends Parser { case 2: enterOuterAlt(_localctx, 2); { - setState(941); + setState(943); unannClassOrInterfaceType(); - setState(942); + setState(944); match(DOT); - setState(946); + setState(948); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(943); + setState(945); annotation(); } } - setState(948); + setState(950); _errHandler.sync(this); _la = _input.LA(1); } - setState(949); - match(Identifier); setState(951); + match(Identifier); + setState(953); _la = _input.LA(1); if (_la==LT) { { - setState(950); + setState(952); typeArguments(); } } @@ -3782,29 +3782,29 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(955); + setState(957); match(DOT); - setState(959); + setState(961); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(956); + setState(958); annotation(); } } - setState(961); + setState(963); _errHandler.sync(this); _la = _input.LA(1); } - setState(962); - match(Identifier); setState(964); + match(Identifier); + setState(966); _la = _input.LA(1); if (_la==LT) { { - setState(963); + setState(965); typeArguments(); } } @@ -3840,13 +3840,13 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(966); - match(Identifier); setState(968); + match(Identifier); + setState(970); _la = _input.LA(1); if (_la==LT) { { - setState(967); + setState(969); typeArguments(); } } @@ -3880,7 +3880,7 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(970); + setState(972); unannClassType(); } } @@ -3911,7 +3911,7 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(972); + setState(974); unannClassType_lf_unannClassOrInterfaceType(); } } @@ -3942,7 +3942,7 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(974); + setState(976); unannClassType_lfno_unannClassOrInterfaceType(); } } @@ -3971,7 +3971,7 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(976); + setState(978); match(Identifier); } } @@ -4009,32 +4009,32 @@ public class Java8Parser extends Parser { UnannArrayTypeContext _localctx = new UnannArrayTypeContext(_ctx, getState()); enterRule(_localctx, 138, RULE_unannArrayType); try { - setState(987); + setState(989); switch ( getInterpreter().adaptivePredict(_input,75,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(978); + setState(980); unannPrimitiveType(); - setState(979); + setState(981); dims(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(981); + setState(983); unannClassOrInterfaceType(); - setState(982); + setState(984); dims(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(984); + setState(986); unannTypeVariable(); - setState(985); + setState(987); dims(); } break; @@ -4077,23 +4077,23 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(992); + setState(994); _errHandler.sync(this); _la = _input.LA(1); while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << FINAL) | (1L << NATIVE) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << STATIC) | (1L << STRICTFP) | (1L << SYNCHRONIZED))) != 0) || _la==AT) { { { - setState(989); + setState(991); methodModifier(); } } - setState(994); + setState(996); _errHandler.sync(this); _la = _input.LA(1); } - setState(995); + setState(997); methodHeader(); - setState(996); + setState(998); methodBody(); } } @@ -4122,75 +4122,75 @@ public class Java8Parser extends Parser { MethodModifierContext _localctx = new MethodModifierContext(_ctx, getState()); enterRule(_localctx, 142, RULE_methodModifier); try { - setState(1008); + setState(1010); switch (_input.LA(1)) { case AT: enterOuterAlt(_localctx, 1); { - setState(998); + setState(1000); annotation(); } break; case PUBLIC: enterOuterAlt(_localctx, 2); { - setState(999); + setState(1001); match(PUBLIC); } break; case PROTECTED: enterOuterAlt(_localctx, 3); { - setState(1000); + setState(1002); match(PROTECTED); } break; case PRIVATE: enterOuterAlt(_localctx, 4); { - setState(1001); + setState(1003); match(PRIVATE); } break; case ABSTRACT: enterOuterAlt(_localctx, 5); { - setState(1002); + setState(1004); match(ABSTRACT); } break; case STATIC: enterOuterAlt(_localctx, 6); { - setState(1003); + setState(1005); match(STATIC); } break; case FINAL: enterOuterAlt(_localctx, 7); { - setState(1004); + setState(1006); match(FINAL); } break; case SYNCHRONIZED: enterOuterAlt(_localctx, 8); { - setState(1005); + setState(1007); match(SYNCHRONIZED); } break; case NATIVE: enterOuterAlt(_localctx, 9); { - setState(1006); + setState(1008); match(NATIVE); } break; case STRICTFP: enterOuterAlt(_localctx, 10); { - setState(1007); + setState(1009); match(STRICTFP); } break; @@ -4239,7 +4239,7 @@ public class Java8Parser extends Parser { enterRule(_localctx, 144, RULE_methodHeader); int _la; try { - setState(1031); + setState(1033); switch (_input.LA(1)) { case BOOLEAN: case BYTE: @@ -4253,22 +4253,22 @@ public class Java8Parser extends Parser { case Identifier: enterOuterAlt(_localctx, 1); { - setState(1011); + setState(1013); switch ( getInterpreter().adaptivePredict(_input,78,_ctx) ) { case 1: { - setState(1010); + setState(1012); result(); } break; } - setState(1013); - methodDeclarator(); setState(1015); + methodDeclarator(); + setState(1017); _la = _input.LA(1); if (_la==THROWS) { { - setState(1014); + setState(1016); throws_(); } } @@ -4278,38 +4278,38 @@ public class Java8Parser extends Parser { case LT: enterOuterAlt(_localctx, 2); { - setState(1017); + setState(1019); typeParameters(); - setState(1021); + setState(1023); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(1018); + setState(1020); annotation(); } } - setState(1023); + setState(1025); _errHandler.sync(this); _la = _input.LA(1); } - setState(1025); + setState(1027); switch ( getInterpreter().adaptivePredict(_input,81,_ctx) ) { case 1: { - setState(1024); + setState(1026); result(); } break; } - setState(1027); - methodDeclarator(); setState(1029); + methodDeclarator(); + setState(1031); _la = _input.LA(1); if (_la==THROWS) { { - setState(1028); + setState(1030); throws_(); } } @@ -4345,7 +4345,7 @@ public class Java8Parser extends Parser { ResultContext _localctx = new ResultContext(_ctx, getState()); enterRule(_localctx, 146, RULE_result); try { - setState(1035); + setState(1037); switch (_input.LA(1)) { case BOOLEAN: case BYTE: @@ -4358,14 +4358,14 @@ public class Java8Parser extends Parser { case Identifier: enterOuterAlt(_localctx, 1); { - setState(1033); + setState(1035); unannType(); } break; case VOID: enterOuterAlt(_localctx, 2); { - setState(1034); + setState(1036); match(VOID); } break; @@ -4405,26 +4405,26 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1037); + setState(1039); match(Identifier); - setState(1038); - match(LPAREN); setState(1040); + match(LPAREN); + setState(1042); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << SHORT))) != 0) || _la==Identifier || _la==AT) { { - setState(1039); + setState(1041); formalParameterList(); } } - setState(1042); - match(RPAREN); setState(1044); + match(RPAREN); + setState(1046); _la = _input.LA(1); if (_la==LBRACK || _la==AT) { { - setState(1043); + setState(1045); dims(); } } @@ -4459,23 +4459,23 @@ public class Java8Parser extends Parser { FormalParameterListContext _localctx = new FormalParameterListContext(_ctx, getState()); enterRule(_localctx, 150, RULE_formalParameterList); try { - setState(1051); + setState(1053); switch ( getInterpreter().adaptivePredict(_input,87,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1046); - formalParameters(); - setState(1047); - match(COMMA); setState(1048); + formalParameters(); + setState(1049); + match(COMMA); + setState(1050); lastFormalParameter(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1050); + setState(1052); lastFormalParameter(); } break; @@ -4513,28 +4513,28 @@ public class Java8Parser extends Parser { enterRule(_localctx, 152, RULE_formalParameters); try { int _alt; - setState(1069); + setState(1071); switch ( getInterpreter().adaptivePredict(_input,90,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1053); + setState(1055); formalParameter(); - setState(1058); + setState(1060); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,88,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(1054); + setState(1056); match(COMMA); - setState(1055); + setState(1057); formalParameter(); } } } - setState(1060); + setState(1062); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,88,_ctx); } @@ -4543,23 +4543,23 @@ public class Java8Parser extends Parser { case 2: enterOuterAlt(_localctx, 2); { - setState(1061); + setState(1063); receiverParameter(); - setState(1066); + setState(1068); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,89,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(1062); + setState(1064); match(COMMA); - setState(1063); + setState(1065); formalParameter(); } } } - setState(1068); + setState(1070); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,89,_ctx); } @@ -4604,30 +4604,30 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1074); + setState(1076); _errHandler.sync(this); _la = _input.LA(1); while (_la==FINAL || _la==AT) { { { - setState(1071); + setState(1073); variableModifier(); } } - setState(1076); + setState(1078); _errHandler.sync(this); _la = _input.LA(1); } - setState(1078); + setState(1080); switch ( getInterpreter().adaptivePredict(_input,92,_ctx) ) { case 1: { - setState(1077); + setState(1079); unannType(); } break; } - setState(1080); + setState(1082); variableDeclaratorId(); } } @@ -4656,19 +4656,19 @@ public class Java8Parser extends Parser { VariableModifierContext _localctx = new VariableModifierContext(_ctx, getState()); enterRule(_localctx, 156, RULE_variableModifier); try { - setState(1084); + setState(1086); switch (_input.LA(1)) { case AT: enterOuterAlt(_localctx, 1); { - setState(1082); + setState(1084); annotation(); } break; case FINAL: enterOuterAlt(_localctx, 2); { - setState(1083); + setState(1085); match(FINAL); } break; @@ -4720,51 +4720,51 @@ public class Java8Parser extends Parser { enterRule(_localctx, 158, RULE_lastFormalParameter); int _la; try { - setState(1103); + setState(1105); switch ( getInterpreter().adaptivePredict(_input,96,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1089); + setState(1091); _errHandler.sync(this); _la = _input.LA(1); while (_la==FINAL || _la==AT) { { { - setState(1086); + setState(1088); variableModifier(); } } - setState(1091); + setState(1093); _errHandler.sync(this); _la = _input.LA(1); } - setState(1092); + setState(1094); unannType(); - setState(1096); + setState(1098); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(1093); + setState(1095); annotation(); } } - setState(1098); + setState(1100); _errHandler.sync(this); _la = _input.LA(1); } - setState(1099); + setState(1101); match(ELLIPSIS); - setState(1100); + setState(1102); variableDeclaratorId(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1102); + setState(1104); formalParameter(); } break; @@ -4805,34 +4805,34 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1108); + setState(1110); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(1105); + setState(1107); annotation(); } } - setState(1110); + setState(1112); _errHandler.sync(this); _la = _input.LA(1); } - setState(1111); + setState(1113); unannType(); - setState(1114); + setState(1116); _la = _input.LA(1); if (_la==Identifier) { { - setState(1112); + setState(1114); match(Identifier); - setState(1113); + setState(1115); match(DOT); } } - setState(1116); + setState(1118); match(THIS); } } @@ -4863,9 +4863,9 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1118); + setState(1120); match(THROWS); - setState(1119); + setState(1121); exceptionTypeList(); } } @@ -4900,21 +4900,21 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1121); + setState(1123); exceptionType(); - setState(1126); + setState(1128); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { - setState(1122); + setState(1124); match(COMMA); - setState(1123); + setState(1125); exceptionType(); } } - setState(1128); + setState(1130); _errHandler.sync(this); _la = _input.LA(1); } @@ -4948,19 +4948,19 @@ public class Java8Parser extends Parser { ExceptionTypeContext _localctx = new ExceptionTypeContext(_ctx, getState()); enterRule(_localctx, 166, RULE_exceptionType); try { - setState(1131); + setState(1133); switch ( getInterpreter().adaptivePredict(_input,100,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1129); + setState(1131); classType(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1130); + setState(1132); typeVariable(); } break; @@ -4991,19 +4991,19 @@ public class Java8Parser extends Parser { MethodBodyContext _localctx = new MethodBodyContext(_ctx, getState()); enterRule(_localctx, 168, RULE_methodBody); try { - setState(1135); + setState(1137); switch (_input.LA(1)) { case LBRACE: enterOuterAlt(_localctx, 1); { - setState(1133); + setState(1135); block(); } break; case SEMI: enterOuterAlt(_localctx, 2); { - setState(1134); + setState(1136); match(SEMI); } break; @@ -5038,7 +5038,7 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1137); + setState(1139); block(); } } @@ -5069,9 +5069,9 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1139); + setState(1141); match(STATIC); - setState(1140); + setState(1142); block(); } } @@ -5115,32 +5115,32 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1145); + setState(1147); _errHandler.sync(this); _la = _input.LA(1); while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC))) != 0) || _la==AT) { { { - setState(1142); + setState(1144); constructorModifier(); } } - setState(1147); + setState(1149); _errHandler.sync(this); _la = _input.LA(1); } - setState(1148); - constructorDeclarator(); setState(1150); + constructorDeclarator(); + setState(1152); _la = _input.LA(1); if (_la==THROWS) { { - setState(1149); + setState(1151); throws_(); } } - setState(1152); + setState(1154); constructorBody(); } } @@ -5169,33 +5169,33 @@ public class Java8Parser extends Parser { ConstructorModifierContext _localctx = new ConstructorModifierContext(_ctx, getState()); enterRule(_localctx, 176, RULE_constructorModifier); try { - setState(1158); + setState(1160); switch (_input.LA(1)) { case AT: enterOuterAlt(_localctx, 1); { - setState(1154); + setState(1156); annotation(); } break; case PUBLIC: enterOuterAlt(_localctx, 2); { - setState(1155); + setState(1157); match(PUBLIC); } break; case PROTECTED: enterOuterAlt(_localctx, 3); { - setState(1156); + setState(1158); match(PROTECTED); } break; case PRIVATE: enterOuterAlt(_localctx, 4); { - setState(1157); + setState(1159); match(PRIVATE); } break; @@ -5237,29 +5237,29 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1161); + setState(1163); _la = _input.LA(1); if (_la==LT) { { - setState(1160); + setState(1162); typeParameters(); } } - setState(1163); + setState(1165); simpleTypeName(); - setState(1164); - match(LPAREN); setState(1166); + match(LPAREN); + setState(1168); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << SHORT))) != 0) || _la==Identifier || _la==AT) { { - setState(1165); + setState(1167); formalParameterList(); } } - setState(1168); + setState(1170); match(RPAREN); } } @@ -5288,7 +5288,7 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1170); + setState(1172); match(Identifier); } } @@ -5323,27 +5323,27 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1172); - match(LBRACE); setState(1174); + match(LBRACE); + setState(1176); switch ( getInterpreter().adaptivePredict(_input,107,_ctx) ) { case 1: { - setState(1173); + setState(1175); explicitConstructorInvocation(); } break; } - setState(1177); + setState(1179); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << ASSERT) | (1L << BOOLEAN) | (1L << BREAK) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << CONTINUE) | (1L << DO) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << FOR) | (1L << IF) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << RETURN) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SUPER) | (1L << SWITCH) | (1L << SYNCHRONIZED) | (1L << THIS) | (1L << THROW) | (1L << TRY) | (1L << VOID) | (1L << WHILE) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN) | (1L << LBRACE) | (1L << SEMI))) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & ((1L << (INC - 79)) | (1L << (DEC - 79)) | (1L << (Identifier - 79)) | (1L << (AT - 79)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << ABSTRACT) | (1L << ASSERT) | (1L << BOOLEAN) | (1L << BREAK) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << CONTINUE) | (1L << DO) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << FOR) | (1L << IF) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << RETURN) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SUPER) | (1L << SWITCH) | (1L << SYNCHRONIZED) | (1L << THIS) | (1L << THROW) | (1L << TRY) | (1L << VOID) | (1L << WHILE) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN) | (1L << LBRACE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (SEMI - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (Identifier - 64)) | (1L << (AT - 64)))) != 0)) { { - setState(1176); + setState(1178); blockStatements(); } } - setState(1179); + setState(1181); match(RBRACE); } } @@ -5382,137 +5382,137 @@ public class Java8Parser extends Parser { enterRule(_localctx, 184, RULE_explicitConstructorInvocation); int _la; try { - setState(1227); + setState(1229); switch ( getInterpreter().adaptivePredict(_input,117,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1182); + setState(1184); _la = _input.LA(1); if (_la==LT) { { - setState(1181); + setState(1183); typeArguments(); } } - setState(1184); + setState(1186); match(THIS); - setState(1185); - match(LPAREN); setState(1187); + match(LPAREN); + setState(1189); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(1186); + setState(1188); argumentList(); } } - setState(1189); + setState(1191); match(RPAREN); - setState(1190); + setState(1192); match(SEMI); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1192); + setState(1194); _la = _input.LA(1); if (_la==LT) { { - setState(1191); + setState(1193); typeArguments(); } } - setState(1194); + setState(1196); match(SUPER); - setState(1195); - match(LPAREN); setState(1197); + match(LPAREN); + setState(1199); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(1196); + setState(1198); argumentList(); } } - setState(1199); + setState(1201); match(RPAREN); - setState(1200); + setState(1202); match(SEMI); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(1201); + setState(1203); expressionName(); - setState(1202); - match(DOT); setState(1204); + match(DOT); + setState(1206); _la = _input.LA(1); if (_la==LT) { { - setState(1203); + setState(1205); typeArguments(); } } - setState(1206); + setState(1208); match(SUPER); - setState(1207); - match(LPAREN); setState(1209); + match(LPAREN); + setState(1211); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(1208); + setState(1210); argumentList(); } } - setState(1211); + setState(1213); match(RPAREN); - setState(1212); + setState(1214); match(SEMI); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(1214); + setState(1216); primary(); - setState(1215); - match(DOT); setState(1217); + match(DOT); + setState(1219); _la = _input.LA(1); if (_la==LT) { { - setState(1216); + setState(1218); typeArguments(); } } - setState(1219); + setState(1221); match(SUPER); - setState(1220); - match(LPAREN); setState(1222); + match(LPAREN); + setState(1224); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(1221); + setState(1223); argumentList(); } } - setState(1224); + setState(1226); match(RPAREN); - setState(1225); + setState(1227); match(SEMI); } break; @@ -5556,34 +5556,34 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1232); + setState(1234); _errHandler.sync(this); _la = _input.LA(1); while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << FINAL) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << STATIC) | (1L << STRICTFP))) != 0) || _la==AT) { { { - setState(1229); + setState(1231); classModifier(); } } - setState(1234); + setState(1236); _errHandler.sync(this); _la = _input.LA(1); } - setState(1235); + setState(1237); match(ENUM); - setState(1236); - match(Identifier); setState(1238); + match(Identifier); + setState(1240); _la = _input.LA(1); if (_la==IMPLEMENTS) { { - setState(1237); + setState(1239); superinterfaces(); } } - setState(1240); + setState(1242); enumBody(); } } @@ -5618,36 +5618,36 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1242); - match(LBRACE); setState(1244); + match(LBRACE); + setState(1246); _la = _input.LA(1); if (_la==Identifier || _la==AT) { { - setState(1243); + setState(1245); enumConstantList(); } } - setState(1247); + setState(1249); _la = _input.LA(1); if (_la==COMMA) { { - setState(1246); + setState(1248); match(COMMA); } } - setState(1250); + setState(1252); _la = _input.LA(1); if (_la==SEMI) { { - setState(1249); + setState(1251); enumBodyDeclarations(); } } - setState(1252); + setState(1254); match(RBRACE); } } @@ -5682,23 +5682,23 @@ public class Java8Parser extends Parser { int _alt; enterOuterAlt(_localctx, 1); { - setState(1254); + setState(1256); enumConstant(); - setState(1259); + setState(1261); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,123,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(1255); + setState(1257); match(COMMA); - setState(1256); + setState(1258); enumConstant(); } } } - setState(1261); + setState(1263); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,123,_ctx); } @@ -5742,47 +5742,47 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1265); + setState(1267); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(1262); + setState(1264); enumConstantModifier(); } } - setState(1267); + setState(1269); _errHandler.sync(this); _la = _input.LA(1); } - setState(1268); + setState(1270); match(Identifier); - setState(1274); + setState(1276); _la = _input.LA(1); if (_la==LPAREN) { { - setState(1269); - match(LPAREN); setState(1271); + match(LPAREN); + setState(1273); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(1270); + setState(1272); argumentList(); } } - setState(1273); + setState(1275); match(RPAREN); } } - setState(1277); + setState(1279); _la = _input.LA(1); if (_la==LBRACE) { { - setState(1276); + setState(1278); classBody(); } } @@ -5816,7 +5816,7 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1279); + setState(1281); annotation(); } } @@ -5851,19 +5851,19 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1281); + setState(1283); match(SEMI); - setState(1285); + setState(1287); _errHandler.sync(this); _la = _input.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << NATIVE) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SYNCHRONIZED) | (1L << TRANSIENT) | (1L << VOID) | (1L << VOLATILE) | (1L << LBRACE) | (1L << SEMI))) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (LT - 68)) | (1L << (Identifier - 68)) | (1L << (AT - 68)))) != 0)) { + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << NATIVE) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SYNCHRONIZED) | (1L << TRANSIENT) | (1L << VOID) | (1L << VOLATILE) | (1L << LBRACE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (SEMI - 64)) | (1L << (LT - 64)) | (1L << (Identifier - 64)) | (1L << (AT - 64)))) != 0)) { { { - setState(1282); + setState(1284); classBodyDeclaration(); } } - setState(1287); + setState(1289); _errHandler.sync(this); _la = _input.LA(1); } @@ -5897,19 +5897,19 @@ public class Java8Parser extends Parser { InterfaceDeclarationContext _localctx = new InterfaceDeclarationContext(_ctx, getState()); enterRule(_localctx, 198, RULE_interfaceDeclaration); try { - setState(1290); + setState(1292); switch ( getInterpreter().adaptivePredict(_input,129,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1288); + setState(1290); normalInterfaceDeclaration(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1289); + setState(1291); annotationTypeDeclaration(); } break; @@ -5956,43 +5956,43 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1295); + setState(1297); _errHandler.sync(this); _la = _input.LA(1); while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << STATIC) | (1L << STRICTFP))) != 0) || _la==AT) { { { - setState(1292); + setState(1294); interfaceModifier(); } } - setState(1297); + setState(1299); _errHandler.sync(this); _la = _input.LA(1); } - setState(1298); + setState(1300); match(INTERFACE); - setState(1299); - match(Identifier); setState(1301); + match(Identifier); + setState(1303); _la = _input.LA(1); if (_la==LT) { { - setState(1300); + setState(1302); typeParameters(); } } - setState(1304); + setState(1306); _la = _input.LA(1); if (_la==EXTENDS) { { - setState(1303); + setState(1305); extendsInterfaces(); } } - setState(1306); + setState(1308); interfaceBody(); } } @@ -6021,54 +6021,54 @@ public class Java8Parser extends Parser { InterfaceModifierContext _localctx = new InterfaceModifierContext(_ctx, getState()); enterRule(_localctx, 202, RULE_interfaceModifier); try { - setState(1315); + setState(1317); switch (_input.LA(1)) { case AT: enterOuterAlt(_localctx, 1); { - setState(1308); + setState(1310); annotation(); } break; case PUBLIC: enterOuterAlt(_localctx, 2); { - setState(1309); + setState(1311); match(PUBLIC); } break; case PROTECTED: enterOuterAlt(_localctx, 3); { - setState(1310); + setState(1312); match(PROTECTED); } break; case PRIVATE: enterOuterAlt(_localctx, 4); { - setState(1311); + setState(1313); match(PRIVATE); } break; case ABSTRACT: enterOuterAlt(_localctx, 5); { - setState(1312); + setState(1314); match(ABSTRACT); } break; case STATIC: enterOuterAlt(_localctx, 6); { - setState(1313); + setState(1315); match(STATIC); } break; case STRICTFP: enterOuterAlt(_localctx, 7); { - setState(1314); + setState(1316); match(STRICTFP); } break; @@ -6103,9 +6103,9 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1317); + setState(1319); match(EXTENDS); - setState(1318); + setState(1320); interfaceTypeList(); } } @@ -6140,23 +6140,23 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1320); + setState(1322); match(LBRACE); - setState(1324); + setState(1326); _errHandler.sync(this); _la = _input.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << DEFAULT) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << VOID) | (1L << SEMI))) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (LT - 68)) | (1L << (Identifier - 68)) | (1L << (AT - 68)))) != 0)) { + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << DEFAULT) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << VOID))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (SEMI - 64)) | (1L << (LT - 64)) | (1L << (Identifier - 64)) | (1L << (AT - 64)))) != 0)) { { { - setState(1321); + setState(1323); interfaceMemberDeclaration(); } } - setState(1326); + setState(1328); _errHandler.sync(this); _la = _input.LA(1); } - setState(1327); + setState(1329); match(RBRACE); } } @@ -6194,40 +6194,40 @@ public class Java8Parser extends Parser { InterfaceMemberDeclarationContext _localctx = new InterfaceMemberDeclarationContext(_ctx, getState()); enterRule(_localctx, 208, RULE_interfaceMemberDeclaration); try { - setState(1334); + setState(1336); switch ( getInterpreter().adaptivePredict(_input,135,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1329); + setState(1331); constantDeclaration(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1330); + setState(1332); interfaceMethodDeclaration(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(1331); + setState(1333); classDeclaration(); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(1332); + setState(1334); interfaceDeclaration(); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(1333); + setState(1335); match(SEMI); } break; @@ -6270,25 +6270,25 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1339); + setState(1341); _errHandler.sync(this); _la = _input.LA(1); while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << FINAL) | (1L << PUBLIC) | (1L << STATIC))) != 0) || _la==AT) { { { - setState(1336); + setState(1338); constantModifier(); } } - setState(1341); + setState(1343); _errHandler.sync(this); _la = _input.LA(1); } - setState(1342); - unannType(); - setState(1343); - variableDeclaratorList(); setState(1344); + unannType(); + setState(1345); + variableDeclaratorList(); + setState(1346); match(SEMI); } } @@ -6317,33 +6317,33 @@ public class Java8Parser extends Parser { ConstantModifierContext _localctx = new ConstantModifierContext(_ctx, getState()); enterRule(_localctx, 212, RULE_constantModifier); try { - setState(1350); + setState(1352); switch (_input.LA(1)) { case AT: enterOuterAlt(_localctx, 1); { - setState(1346); + setState(1348); annotation(); } break; case PUBLIC: enterOuterAlt(_localctx, 2); { - setState(1347); + setState(1349); match(PUBLIC); } break; case STATIC: enterOuterAlt(_localctx, 3); { - setState(1348); + setState(1350); match(STATIC); } break; case FINAL: enterOuterAlt(_localctx, 4); { - setState(1349); + setState(1351); match(FINAL); } break; @@ -6388,23 +6388,23 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1355); + setState(1357); _errHandler.sync(this); _la = _input.LA(1); while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << DEFAULT) | (1L << PUBLIC) | (1L << STATIC) | (1L << STRICTFP))) != 0) || _la==AT) { { { - setState(1352); + setState(1354); interfaceMethodModifier(); } } - setState(1357); + setState(1359); _errHandler.sync(this); _la = _input.LA(1); } - setState(1358); + setState(1360); methodHeader(); - setState(1359); + setState(1361); methodBody(); } } @@ -6433,47 +6433,47 @@ public class Java8Parser extends Parser { InterfaceMethodModifierContext _localctx = new InterfaceMethodModifierContext(_ctx, getState()); enterRule(_localctx, 216, RULE_interfaceMethodModifier); try { - setState(1367); + setState(1369); switch (_input.LA(1)) { case AT: enterOuterAlt(_localctx, 1); { - setState(1361); + setState(1363); annotation(); } break; case PUBLIC: enterOuterAlt(_localctx, 2); { - setState(1362); + setState(1364); match(PUBLIC); } break; case ABSTRACT: enterOuterAlt(_localctx, 3); { - setState(1363); + setState(1365); match(ABSTRACT); } break; case DEFAULT: enterOuterAlt(_localctx, 4); { - setState(1364); + setState(1366); match(DEFAULT); } break; case STATIC: enterOuterAlt(_localctx, 5); { - setState(1365); + setState(1367); match(STATIC); } break; case STRICTFP: enterOuterAlt(_localctx, 6); { - setState(1366); + setState(1368); match(STRICTFP); } break; @@ -6516,29 +6516,29 @@ public class Java8Parser extends Parser { int _alt; enterOuterAlt(_localctx, 1); { - setState(1372); + setState(1374); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,140,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(1369); + setState(1371); interfaceModifier(); } } } - setState(1374); + setState(1376); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,140,_ctx); } - setState(1375); - match(AT); - setState(1376); - match(INTERFACE); setState(1377); - match(Identifier); + match(AT); setState(1378); + match(INTERFACE); + setState(1379); + match(Identifier); + setState(1380); annotationTypeBody(); } } @@ -6573,23 +6573,23 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1380); + setState(1382); match(LBRACE); - setState(1384); + setState(1386); _errHandler.sync(this); _la = _input.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SEMI))) != 0) || _la==Identifier || _la==AT) { + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << INTERFACE) | (1L << LONG) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (SEMI - 64)) | (1L << (Identifier - 64)) | (1L << (AT - 64)))) != 0)) { { { - setState(1381); + setState(1383); annotationTypeMemberDeclaration(); } } - setState(1386); + setState(1388); _errHandler.sync(this); _la = _input.LA(1); } - setState(1387); + setState(1389); match(RBRACE); } } @@ -6627,40 +6627,40 @@ public class Java8Parser extends Parser { AnnotationTypeMemberDeclarationContext _localctx = new AnnotationTypeMemberDeclarationContext(_ctx, getState()); enterRule(_localctx, 222, RULE_annotationTypeMemberDeclaration); try { - setState(1394); + setState(1396); switch ( getInterpreter().adaptivePredict(_input,142,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1389); + setState(1391); annotationTypeElementDeclaration(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1390); + setState(1392); constantDeclaration(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(1391); + setState(1393); classDeclaration(); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(1392); + setState(1394); interfaceDeclaration(); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(1393); + setState(1395); match(SEMI); } break; @@ -6707,47 +6707,47 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1399); + setState(1401); _errHandler.sync(this); _la = _input.LA(1); while (_la==ABSTRACT || _la==PUBLIC || _la==AT) { { { - setState(1396); + setState(1398); annotationTypeElementModifier(); } } - setState(1401); + setState(1403); _errHandler.sync(this); _la = _input.LA(1); } - setState(1402); - unannType(); - setState(1403); - match(Identifier); setState(1404); - match(LPAREN); + unannType(); setState(1405); - match(RPAREN); + match(Identifier); + setState(1406); + match(LPAREN); setState(1407); + match(RPAREN); + setState(1409); _la = _input.LA(1); if (_la==LBRACK || _la==AT) { { - setState(1406); + setState(1408); dims(); } } - setState(1410); + setState(1412); _la = _input.LA(1); if (_la==DEFAULT) { { - setState(1409); + setState(1411); defaultValue(); } } - setState(1412); + setState(1414); match(SEMI); } } @@ -6776,26 +6776,26 @@ public class Java8Parser extends Parser { AnnotationTypeElementModifierContext _localctx = new AnnotationTypeElementModifierContext(_ctx, getState()); enterRule(_localctx, 226, RULE_annotationTypeElementModifier); try { - setState(1417); + setState(1419); switch (_input.LA(1)) { case AT: enterOuterAlt(_localctx, 1); { - setState(1414); + setState(1416); annotation(); } break; case PUBLIC: enterOuterAlt(_localctx, 2); { - setState(1415); + setState(1417); match(PUBLIC); } break; case ABSTRACT: enterOuterAlt(_localctx, 3); { - setState(1416); + setState(1418); match(ABSTRACT); } break; @@ -6830,9 +6830,9 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1419); + setState(1421); match(DEFAULT); - setState(1420); + setState(1422); elementValue(); } } @@ -6867,26 +6867,26 @@ public class Java8Parser extends Parser { AnnotationContext _localctx = new AnnotationContext(_ctx, getState()); enterRule(_localctx, 230, RULE_annotation); try { - setState(1425); + setState(1427); switch ( getInterpreter().adaptivePredict(_input,147,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1422); + setState(1424); normalAnnotation(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1423); + setState(1425); markerAnnotation(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(1424); + setState(1426); singleElementAnnotation(); } break; @@ -6923,22 +6923,22 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1427); - match(AT); - setState(1428); - typeName(); setState(1429); - match(LPAREN); + match(AT); + setState(1430); + typeName(); setState(1431); + match(LPAREN); + setState(1433); _la = _input.LA(1); if (_la==Identifier) { { - setState(1430); + setState(1432); elementValuePairList(); } } - setState(1433); + setState(1435); match(RPAREN); } } @@ -6973,21 +6973,21 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1435); + setState(1437); elementValuePair(); - setState(1440); + setState(1442); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { - setState(1436); + setState(1438); match(COMMA); - setState(1437); + setState(1439); elementValuePair(); } } - setState(1442); + setState(1444); _errHandler.sync(this); _la = _input.LA(1); } @@ -7021,11 +7021,11 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1443); - match(Identifier); - setState(1444); - match(ASSIGN); setState(1445); + match(Identifier); + setState(1446); + match(ASSIGN); + setState(1447); elementValue(); } } @@ -7060,26 +7060,26 @@ public class Java8Parser extends Parser { ElementValueContext _localctx = new ElementValueContext(_ctx, getState()); enterRule(_localctx, 238, RULE_elementValue); try { - setState(1450); + setState(1452); switch ( getInterpreter().adaptivePredict(_input,150,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1447); + setState(1449); conditionalExpression(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1448); + setState(1450); elementValueArrayInitializer(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(1449); + setState(1451); annotation(); } break; @@ -7113,27 +7113,27 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1452); - match(LBRACE); setState(1454); + match(LBRACE); + setState(1456); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN) | (1L << LBRACE))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN) | (1L << LBRACE))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(1453); + setState(1455); elementValueList(); } } - setState(1457); + setState(1459); _la = _input.LA(1); if (_la==COMMA) { { - setState(1456); + setState(1458); match(COMMA); } } - setState(1459); + setState(1461); match(RBRACE); } } @@ -7168,23 +7168,23 @@ public class Java8Parser extends Parser { int _alt; enterOuterAlt(_localctx, 1); { - setState(1461); + setState(1463); elementValue(); - setState(1466); + setState(1468); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,153,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(1462); + setState(1464); match(COMMA); - setState(1463); + setState(1465); elementValue(); } } } - setState(1468); + setState(1470); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,153,_ctx); } @@ -7217,9 +7217,9 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1469); + setState(1471); match(AT); - setState(1470); + setState(1472); typeName(); } } @@ -7253,15 +7253,15 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1472); - match(AT); - setState(1473); - typeName(); setState(1474); - match(LPAREN); + match(AT); setState(1475); - elementValue(); + typeName(); setState(1476); + match(LPAREN); + setState(1477); + elementValue(); + setState(1478); match(RPAREN); } } @@ -7293,27 +7293,27 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1478); - match(LBRACE); setState(1480); + match(LBRACE); + setState(1482); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN) | (1L << LBRACE))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN) | (1L << LBRACE))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(1479); + setState(1481); variableInitializerList(); } } - setState(1483); + setState(1485); _la = _input.LA(1); if (_la==COMMA) { { - setState(1482); + setState(1484); match(COMMA); } } - setState(1485); + setState(1487); match(RBRACE); } } @@ -7348,23 +7348,23 @@ public class Java8Parser extends Parser { int _alt; enterOuterAlt(_localctx, 1); { - setState(1487); + setState(1489); variableInitializer(); - setState(1492); + setState(1494); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,156,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(1488); + setState(1490); match(COMMA); - setState(1489); + setState(1491); variableInitializer(); } } } - setState(1494); + setState(1496); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,156,_ctx); } @@ -7398,18 +7398,18 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1495); - match(LBRACE); setState(1497); + match(LBRACE); + setState(1499); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << ASSERT) | (1L << BOOLEAN) | (1L << BREAK) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << CONTINUE) | (1L << DO) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << FOR) | (1L << IF) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << RETURN) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SUPER) | (1L << SWITCH) | (1L << SYNCHRONIZED) | (1L << THIS) | (1L << THROW) | (1L << TRY) | (1L << VOID) | (1L << WHILE) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN) | (1L << LBRACE) | (1L << SEMI))) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & ((1L << (INC - 79)) | (1L << (DEC - 79)) | (1L << (Identifier - 79)) | (1L << (AT - 79)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << ABSTRACT) | (1L << ASSERT) | (1L << BOOLEAN) | (1L << BREAK) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << CONTINUE) | (1L << DO) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << FOR) | (1L << IF) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << RETURN) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SUPER) | (1L << SWITCH) | (1L << SYNCHRONIZED) | (1L << THIS) | (1L << THROW) | (1L << TRY) | (1L << VOID) | (1L << WHILE) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN) | (1L << LBRACE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (SEMI - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (Identifier - 64)) | (1L << (AT - 64)))) != 0)) { { - setState(1496); + setState(1498); blockStatements(); } } - setState(1499); + setState(1501); match(RBRACE); } } @@ -7444,19 +7444,19 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1501); + setState(1503); blockStatement(); - setState(1505); + setState(1507); _errHandler.sync(this); _la = _input.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABSTRACT) | (1L << ASSERT) | (1L << BOOLEAN) | (1L << BREAK) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << CONTINUE) | (1L << DO) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << FOR) | (1L << IF) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << RETURN) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SUPER) | (1L << SWITCH) | (1L << SYNCHRONIZED) | (1L << THIS) | (1L << THROW) | (1L << TRY) | (1L << VOID) | (1L << WHILE) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN) | (1L << LBRACE) | (1L << SEMI))) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & ((1L << (INC - 79)) | (1L << (DEC - 79)) | (1L << (Identifier - 79)) | (1L << (AT - 79)))) != 0)) { + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << ABSTRACT) | (1L << ASSERT) | (1L << BOOLEAN) | (1L << BREAK) | (1L << BYTE) | (1L << CHAR) | (1L << CLASS) | (1L << CONTINUE) | (1L << DO) | (1L << DOUBLE) | (1L << ENUM) | (1L << FINAL) | (1L << FLOAT) | (1L << FOR) | (1L << IF) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << PRIVATE) | (1L << PROTECTED) | (1L << PUBLIC) | (1L << RETURN) | (1L << SHORT) | (1L << STATIC) | (1L << STRICTFP) | (1L << SUPER) | (1L << SWITCH) | (1L << SYNCHRONIZED) | (1L << THIS) | (1L << THROW) | (1L << TRY) | (1L << VOID) | (1L << WHILE) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN) | (1L << LBRACE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (SEMI - 64)) | (1L << (INC - 64)) | (1L << (DEC - 64)) | (1L << (Identifier - 64)) | (1L << (AT - 64)))) != 0)) { { { - setState(1502); + setState(1504); blockStatement(); } } - setState(1507); + setState(1509); _errHandler.sync(this); _la = _input.LA(1); } @@ -7493,26 +7493,26 @@ public class Java8Parser extends Parser { BlockStatementContext _localctx = new BlockStatementContext(_ctx, getState()); enterRule(_localctx, 256, RULE_blockStatement); try { - setState(1511); + setState(1513); switch ( getInterpreter().adaptivePredict(_input,159,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1508); + setState(1510); localVariableDeclarationStatement(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1509); + setState(1511); classDeclaration(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(1510); + setState(1512); statement(); } break; @@ -7545,9 +7545,9 @@ public class Java8Parser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(1513); + setState(1515); localVariableDeclaration(); - setState(1514); + setState(1516); match(SEMI); } } @@ -7562,10 +7562,63 @@ public class Java8Parser extends Parser { return _localctx; } - public static class LocalVariableDeclarationContext extends ParserRuleContext { + public static class UnannTypeOrAutoContext extends ParserRuleContext { public UnannTypeContext unannType() { return getRuleContext(UnannTypeContext.class,0); } + public UnannTypeOrAutoContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_unannTypeOrAuto; } + } + + public final UnannTypeOrAutoContext unannTypeOrAuto() throws RecognitionException { + UnannTypeOrAutoContext _localctx = new UnannTypeOrAutoContext(_ctx, getState()); + enterRule(_localctx, 260, RULE_unannTypeOrAuto); + try { + setState(1520); + switch (_input.LA(1)) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FLOAT: + case INT: + case LONG: + case SHORT: + case Identifier: + enterOuterAlt(_localctx, 1); + { + setState(1518); + unannType(); + } + break; + case T__0: + enterOuterAlt(_localctx, 2); + { + setState(1519); + match(T__0); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class LocalVariableDeclarationContext extends ParserRuleContext { + public UnannTypeOrAutoContext unannTypeOrAuto() { + return getRuleContext(UnannTypeOrAutoContext.class,0); + } public VariableDeclaratorListContext variableDeclaratorList() { return getRuleContext(VariableDeclaratorListContext.class,0); } @@ -7583,28 +7636,28 @@ public class Java8Parser extends Parser { public final LocalVariableDeclarationContext localVariableDeclaration() throws RecognitionException { LocalVariableDeclarationContext _localctx = new LocalVariableDeclarationContext(_ctx, getState()); - enterRule(_localctx, 260, RULE_localVariableDeclaration); + enterRule(_localctx, 262, RULE_localVariableDeclaration); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1519); + setState(1525); _errHandler.sync(this); _la = _input.LA(1); while (_la==FINAL || _la==AT) { { { - setState(1516); + setState(1522); variableModifier(); } } - setState(1521); + setState(1527); _errHandler.sync(this); _la = _input.LA(1); } - setState(1522); - unannType(); - setState(1523); + setState(1528); + unannTypeOrAuto(); + setState(1529); variableDeclaratorList(); } } @@ -7646,49 +7699,49 @@ public class Java8Parser extends Parser { public final StatementContext statement() throws RecognitionException { StatementContext _localctx = new StatementContext(_ctx, getState()); - enterRule(_localctx, 262, RULE_statement); + enterRule(_localctx, 264, RULE_statement); try { - setState(1531); - switch ( getInterpreter().adaptivePredict(_input,161,_ctx) ) { + setState(1537); + switch ( getInterpreter().adaptivePredict(_input,162,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1525); + setState(1531); statementWithoutTrailingSubstatement(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1526); + setState(1532); labeledStatement(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(1527); + setState(1533); ifThenStatement(); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(1528); + setState(1534); ifThenElseStatement(); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(1529); + setState(1535); whileStatement(); } break; case 6: enterOuterAlt(_localctx, 6); { - setState(1530); + setState(1536); forStatement(); } break; @@ -7729,42 +7782,42 @@ public class Java8Parser extends Parser { public final StatementNoShortIfContext statementNoShortIf() throws RecognitionException { StatementNoShortIfContext _localctx = new StatementNoShortIfContext(_ctx, getState()); - enterRule(_localctx, 264, RULE_statementNoShortIf); + enterRule(_localctx, 266, RULE_statementNoShortIf); try { - setState(1538); - switch ( getInterpreter().adaptivePredict(_input,162,_ctx) ) { + setState(1544); + switch ( getInterpreter().adaptivePredict(_input,163,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1533); + setState(1539); statementWithoutTrailingSubstatement(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1534); + setState(1540); labeledStatementNoShortIf(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(1535); + setState(1541); ifThenElseStatementNoShortIf(); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(1536); + setState(1542); whileStatementNoShortIf(); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(1537); + setState(1543); forStatementNoShortIf(); } break; @@ -7826,21 +7879,21 @@ public class Java8Parser extends Parser { public final StatementWithoutTrailingSubstatementContext statementWithoutTrailingSubstatement() throws RecognitionException { StatementWithoutTrailingSubstatementContext _localctx = new StatementWithoutTrailingSubstatementContext(_ctx, getState()); - enterRule(_localctx, 266, RULE_statementWithoutTrailingSubstatement); + enterRule(_localctx, 268, RULE_statementWithoutTrailingSubstatement); try { - setState(1552); + setState(1558); switch (_input.LA(1)) { case LBRACE: enterOuterAlt(_localctx, 1); { - setState(1540); + setState(1546); block(); } break; case SEMI: enterOuterAlt(_localctx, 2); { - setState(1541); + setState(1547); emptyStatement(); } break; @@ -7869,70 +7922,70 @@ public class Java8Parser extends Parser { case AT: enterOuterAlt(_localctx, 3); { - setState(1542); + setState(1548); expressionStatement(); } break; case ASSERT: enterOuterAlt(_localctx, 4); { - setState(1543); + setState(1549); assertStatement(); } break; case SWITCH: enterOuterAlt(_localctx, 5); { - setState(1544); + setState(1550); switchStatement(); } break; case DO: enterOuterAlt(_localctx, 6); { - setState(1545); + setState(1551); doStatement(); } break; case BREAK: enterOuterAlt(_localctx, 7); { - setState(1546); + setState(1552); breakStatement(); } break; case CONTINUE: enterOuterAlt(_localctx, 8); { - setState(1547); + setState(1553); continueStatement(); } break; case RETURN: enterOuterAlt(_localctx, 9); { - setState(1548); + setState(1554); returnStatement(); } break; case SYNCHRONIZED: enterOuterAlt(_localctx, 10); { - setState(1549); + setState(1555); synchronizedStatement(); } break; case THROW: enterOuterAlt(_localctx, 11); { - setState(1550); + setState(1556); throwStatement(); } break; case TRY: enterOuterAlt(_localctx, 12); { - setState(1551); + setState(1557); tryStatement(); } break; @@ -7960,11 +8013,11 @@ public class Java8Parser extends Parser { public final EmptyStatementContext emptyStatement() throws RecognitionException { EmptyStatementContext _localctx = new EmptyStatementContext(_ctx, getState()); - enterRule(_localctx, 268, RULE_emptyStatement); + enterRule(_localctx, 270, RULE_emptyStatement); try { enterOuterAlt(_localctx, 1); { - setState(1554); + setState(1560); match(SEMI); } } @@ -7992,15 +8045,15 @@ public class Java8Parser extends Parser { public final LabeledStatementContext labeledStatement() throws RecognitionException { LabeledStatementContext _localctx = new LabeledStatementContext(_ctx, getState()); - enterRule(_localctx, 270, RULE_labeledStatement); + enterRule(_localctx, 272, RULE_labeledStatement); try { enterOuterAlt(_localctx, 1); { - setState(1556); + setState(1562); match(Identifier); - setState(1557); + setState(1563); match(COLON); - setState(1558); + setState(1564); statement(); } } @@ -8028,15 +8081,15 @@ public class Java8Parser extends Parser { public final LabeledStatementNoShortIfContext labeledStatementNoShortIf() throws RecognitionException { LabeledStatementNoShortIfContext _localctx = new LabeledStatementNoShortIfContext(_ctx, getState()); - enterRule(_localctx, 272, RULE_labeledStatementNoShortIf); + enterRule(_localctx, 274, RULE_labeledStatementNoShortIf); try { enterOuterAlt(_localctx, 1); { - setState(1560); + setState(1566); match(Identifier); - setState(1561); + setState(1567); match(COLON); - setState(1562); + setState(1568); statementNoShortIf(); } } @@ -8063,13 +8116,13 @@ public class Java8Parser extends Parser { public final ExpressionStatementContext expressionStatement() throws RecognitionException { ExpressionStatementContext _localctx = new ExpressionStatementContext(_ctx, getState()); - enterRule(_localctx, 274, RULE_expressionStatement); + enterRule(_localctx, 276, RULE_expressionStatement); try { enterOuterAlt(_localctx, 1); { - setState(1564); + setState(1570); statementExpression(); - setState(1565); + setState(1571); match(SEMI); } } @@ -8114,56 +8167,56 @@ public class Java8Parser extends Parser { public final StatementExpressionContext statementExpression() throws RecognitionException { StatementExpressionContext _localctx = new StatementExpressionContext(_ctx, getState()); - enterRule(_localctx, 276, RULE_statementExpression); + enterRule(_localctx, 278, RULE_statementExpression); try { - setState(1574); - switch ( getInterpreter().adaptivePredict(_input,164,_ctx) ) { + setState(1580); + switch ( getInterpreter().adaptivePredict(_input,165,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1567); + setState(1573); assignment(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1568); + setState(1574); preIncrementExpression(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(1569); + setState(1575); preDecrementExpression(); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(1570); + setState(1576); postIncrementExpression(); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(1571); + setState(1577); postDecrementExpression(); } break; case 6: enterOuterAlt(_localctx, 6); { - setState(1572); + setState(1578); methodInvocation(); } break; case 7: enterOuterAlt(_localctx, 7); { - setState(1573); + setState(1579); classInstanceCreationExpression(); } break; @@ -8195,19 +8248,19 @@ public class Java8Parser extends Parser { public final IfThenStatementContext ifThenStatement() throws RecognitionException { IfThenStatementContext _localctx = new IfThenStatementContext(_ctx, getState()); - enterRule(_localctx, 278, RULE_ifThenStatement); + enterRule(_localctx, 280, RULE_ifThenStatement); try { enterOuterAlt(_localctx, 1); { - setState(1576); + setState(1582); match(IF); - setState(1577); + setState(1583); match(LPAREN); - setState(1578); + setState(1584); expression(); - setState(1579); + setState(1585); match(RPAREN); - setState(1580); + setState(1586); statement(); } } @@ -8240,23 +8293,23 @@ public class Java8Parser extends Parser { public final IfThenElseStatementContext ifThenElseStatement() throws RecognitionException { IfThenElseStatementContext _localctx = new IfThenElseStatementContext(_ctx, getState()); - enterRule(_localctx, 280, RULE_ifThenElseStatement); + enterRule(_localctx, 282, RULE_ifThenElseStatement); try { enterOuterAlt(_localctx, 1); { - setState(1582); - match(IF); - setState(1583); - match(LPAREN); - setState(1584); - expression(); - setState(1585); - match(RPAREN); - setState(1586); - statementNoShortIf(); - setState(1587); - match(ELSE); setState(1588); + match(IF); + setState(1589); + match(LPAREN); + setState(1590); + expression(); + setState(1591); + match(RPAREN); + setState(1592); + statementNoShortIf(); + setState(1593); + match(ELSE); + setState(1594); statement(); } } @@ -8289,23 +8342,23 @@ public class Java8Parser extends Parser { public final IfThenElseStatementNoShortIfContext ifThenElseStatementNoShortIf() throws RecognitionException { IfThenElseStatementNoShortIfContext _localctx = new IfThenElseStatementNoShortIfContext(_ctx, getState()); - enterRule(_localctx, 282, RULE_ifThenElseStatementNoShortIf); + enterRule(_localctx, 284, RULE_ifThenElseStatementNoShortIf); try { enterOuterAlt(_localctx, 1); { - setState(1590); - match(IF); - setState(1591); - match(LPAREN); - setState(1592); - expression(); - setState(1593); - match(RPAREN); - setState(1594); - statementNoShortIf(); - setState(1595); - match(ELSE); setState(1596); + match(IF); + setState(1597); + match(LPAREN); + setState(1598); + expression(); + setState(1599); + match(RPAREN); + setState(1600); + statementNoShortIf(); + setState(1601); + match(ELSE); + setState(1602); statementNoShortIf(); } } @@ -8335,33 +8388,33 @@ public class Java8Parser extends Parser { public final AssertStatementContext assertStatement() throws RecognitionException { AssertStatementContext _localctx = new AssertStatementContext(_ctx, getState()); - enterRule(_localctx, 284, RULE_assertStatement); + enterRule(_localctx, 286, RULE_assertStatement); try { - setState(1608); - switch ( getInterpreter().adaptivePredict(_input,165,_ctx) ) { + setState(1614); + switch ( getInterpreter().adaptivePredict(_input,166,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1598); + setState(1604); match(ASSERT); - setState(1599); + setState(1605); expression(); - setState(1600); + setState(1606); match(SEMI); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1602); + setState(1608); match(ASSERT); - setState(1603); + setState(1609); expression(); - setState(1604); + setState(1610); match(COLON); - setState(1605); + setState(1611); expression(); - setState(1606); + setState(1612); match(SEMI); } break; @@ -8393,19 +8446,19 @@ public class Java8Parser extends Parser { public final SwitchStatementContext switchStatement() throws RecognitionException { SwitchStatementContext _localctx = new SwitchStatementContext(_ctx, getState()); - enterRule(_localctx, 286, RULE_switchStatement); + enterRule(_localctx, 288, RULE_switchStatement); try { enterOuterAlt(_localctx, 1); { - setState(1610); + setState(1616); match(SWITCH); - setState(1611); + setState(1617); match(LPAREN); - setState(1612); + setState(1618); expression(); - setState(1613); + setState(1619); match(RPAREN); - setState(1614); + setState(1620); switchBlock(); } } @@ -8441,45 +8494,45 @@ public class Java8Parser extends Parser { public final SwitchBlockContext switchBlock() throws RecognitionException { SwitchBlockContext _localctx = new SwitchBlockContext(_ctx, getState()); - enterRule(_localctx, 288, RULE_switchBlock); + enterRule(_localctx, 290, RULE_switchBlock); int _la; try { int _alt; enterOuterAlt(_localctx, 1); { - setState(1616); + setState(1622); match(LBRACE); - setState(1620); + setState(1626); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,166,_ctx); + _alt = getInterpreter().adaptivePredict(_input,167,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(1617); + setState(1623); switchBlockStatementGroup(); } } } - setState(1622); + setState(1628); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,166,_ctx); + _alt = getInterpreter().adaptivePredict(_input,167,_ctx); } - setState(1626); + setState(1632); _errHandler.sync(this); _la = _input.LA(1); while (_la==CASE || _la==DEFAULT) { { { - setState(1623); + setState(1629); switchLabel(); } } - setState(1628); + setState(1634); _errHandler.sync(this); _la = _input.LA(1); } - setState(1629); + setState(1635); match(RBRACE); } } @@ -8509,13 +8562,13 @@ public class Java8Parser extends Parser { public final SwitchBlockStatementGroupContext switchBlockStatementGroup() throws RecognitionException { SwitchBlockStatementGroupContext _localctx = new SwitchBlockStatementGroupContext(_ctx, getState()); - enterRule(_localctx, 290, RULE_switchBlockStatementGroup); + enterRule(_localctx, 292, RULE_switchBlockStatementGroup); try { enterOuterAlt(_localctx, 1); { - setState(1631); + setState(1637); switchLabels(); - setState(1632); + setState(1638); blockStatements(); } } @@ -8545,24 +8598,24 @@ public class Java8Parser extends Parser { public final SwitchLabelsContext switchLabels() throws RecognitionException { SwitchLabelsContext _localctx = new SwitchLabelsContext(_ctx, getState()); - enterRule(_localctx, 292, RULE_switchLabels); + enterRule(_localctx, 294, RULE_switchLabels); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1634); + setState(1640); switchLabel(); - setState(1638); + setState(1644); _errHandler.sync(this); _la = _input.LA(1); while (_la==CASE || _la==DEFAULT) { { { - setState(1635); + setState(1641); switchLabel(); } } - setState(1640); + setState(1646); _errHandler.sync(this); _la = _input.LA(1); } @@ -8594,38 +8647,38 @@ public class Java8Parser extends Parser { public final SwitchLabelContext switchLabel() throws RecognitionException { SwitchLabelContext _localctx = new SwitchLabelContext(_ctx, getState()); - enterRule(_localctx, 294, RULE_switchLabel); + enterRule(_localctx, 296, RULE_switchLabel); try { - setState(1651); - switch ( getInterpreter().adaptivePredict(_input,169,_ctx) ) { + setState(1657); + switch ( getInterpreter().adaptivePredict(_input,170,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1641); + setState(1647); match(CASE); - setState(1642); + setState(1648); constantExpression(); - setState(1643); + setState(1649); match(COLON); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1645); + setState(1651); match(CASE); - setState(1646); + setState(1652); enumConstantName(); - setState(1647); + setState(1653); match(COLON); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(1649); + setState(1655); match(DEFAULT); - setState(1650); + setState(1656); match(COLON); } break; @@ -8652,11 +8705,11 @@ public class Java8Parser extends Parser { public final EnumConstantNameContext enumConstantName() throws RecognitionException { EnumConstantNameContext _localctx = new EnumConstantNameContext(_ctx, getState()); - enterRule(_localctx, 296, RULE_enumConstantName); + enterRule(_localctx, 298, RULE_enumConstantName); try { enterOuterAlt(_localctx, 1); { - setState(1653); + setState(1659); match(Identifier); } } @@ -8686,19 +8739,19 @@ public class Java8Parser extends Parser { public final WhileStatementContext whileStatement() throws RecognitionException { WhileStatementContext _localctx = new WhileStatementContext(_ctx, getState()); - enterRule(_localctx, 298, RULE_whileStatement); + enterRule(_localctx, 300, RULE_whileStatement); try { enterOuterAlt(_localctx, 1); { - setState(1655); + setState(1661); match(WHILE); - setState(1656); + setState(1662); match(LPAREN); - setState(1657); + setState(1663); expression(); - setState(1658); + setState(1664); match(RPAREN); - setState(1659); + setState(1665); statement(); } } @@ -8728,19 +8781,19 @@ public class Java8Parser extends Parser { public final WhileStatementNoShortIfContext whileStatementNoShortIf() throws RecognitionException { WhileStatementNoShortIfContext _localctx = new WhileStatementNoShortIfContext(_ctx, getState()); - enterRule(_localctx, 300, RULE_whileStatementNoShortIf); + enterRule(_localctx, 302, RULE_whileStatementNoShortIf); try { enterOuterAlt(_localctx, 1); { - setState(1661); + setState(1667); match(WHILE); - setState(1662); + setState(1668); match(LPAREN); - setState(1663); + setState(1669); expression(); - setState(1664); + setState(1670); match(RPAREN); - setState(1665); + setState(1671); statementNoShortIf(); } } @@ -8770,23 +8823,23 @@ public class Java8Parser extends Parser { public final DoStatementContext doStatement() throws RecognitionException { DoStatementContext _localctx = new DoStatementContext(_ctx, getState()); - enterRule(_localctx, 302, RULE_doStatement); + enterRule(_localctx, 304, RULE_doStatement); try { enterOuterAlt(_localctx, 1); { - setState(1667); - match(DO); - setState(1668); - statement(); - setState(1669); - match(WHILE); - setState(1670); - match(LPAREN); - setState(1671); - expression(); - setState(1672); - match(RPAREN); setState(1673); + match(DO); + setState(1674); + statement(); + setState(1675); + match(WHILE); + setState(1676); + match(LPAREN); + setState(1677); + expression(); + setState(1678); + match(RPAREN); + setState(1679); match(SEMI); } } @@ -8816,21 +8869,21 @@ public class Java8Parser extends Parser { public final ForStatementContext forStatement() throws RecognitionException { ForStatementContext _localctx = new ForStatementContext(_ctx, getState()); - enterRule(_localctx, 304, RULE_forStatement); + enterRule(_localctx, 306, RULE_forStatement); try { - setState(1677); - switch ( getInterpreter().adaptivePredict(_input,170,_ctx) ) { + setState(1683); + switch ( getInterpreter().adaptivePredict(_input,171,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1675); + setState(1681); basicForStatement(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1676); + setState(1682); enhancedForStatement(); } break; @@ -8862,21 +8915,21 @@ public class Java8Parser extends Parser { public final ForStatementNoShortIfContext forStatementNoShortIf() throws RecognitionException { ForStatementNoShortIfContext _localctx = new ForStatementNoShortIfContext(_ctx, getState()); - enterRule(_localctx, 306, RULE_forStatementNoShortIf); + enterRule(_localctx, 308, RULE_forStatementNoShortIf); try { - setState(1681); - switch ( getInterpreter().adaptivePredict(_input,171,_ctx) ) { + setState(1687); + switch ( getInterpreter().adaptivePredict(_input,172,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1679); + setState(1685); basicForStatementNoShortIf(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1680); + setState(1686); enhancedForStatementNoShortIf(); } break; @@ -8914,49 +8967,49 @@ public class Java8Parser extends Parser { public final BasicForStatementContext basicForStatement() throws RecognitionException { BasicForStatementContext _localctx = new BasicForStatementContext(_ctx, getState()); - enterRule(_localctx, 308, RULE_basicForStatement); + enterRule(_localctx, 310, RULE_basicForStatement); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1683); + setState(1689); match(FOR); - setState(1684); + setState(1690); match(LPAREN); - setState(1686); + setState(1692); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & ((1L << (INC - 79)) | (1L << (DEC - 79)) | (1L << (Identifier - 79)) | (1L << (AT - 79)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & ((1L << (INC - 80)) | (1L << (DEC - 80)) | (1L << (Identifier - 80)) | (1L << (AT - 80)))) != 0)) { { - setState(1685); + setState(1691); forInit(); } } - setState(1688); + setState(1694); match(SEMI); - setState(1690); + setState(1696); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(1689); + setState(1695); expression(); } } - setState(1692); + setState(1698); match(SEMI); - setState(1694); + setState(1700); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & ((1L << (INC - 79)) | (1L << (DEC - 79)) | (1L << (Identifier - 79)) | (1L << (AT - 79)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & ((1L << (INC - 80)) | (1L << (DEC - 80)) | (1L << (Identifier - 80)) | (1L << (AT - 80)))) != 0)) { { - setState(1693); + setState(1699); forUpdate(); } } - setState(1696); + setState(1702); match(RPAREN); - setState(1697); + setState(1703); statement(); } } @@ -8992,49 +9045,49 @@ public class Java8Parser extends Parser { public final BasicForStatementNoShortIfContext basicForStatementNoShortIf() throws RecognitionException { BasicForStatementNoShortIfContext _localctx = new BasicForStatementNoShortIfContext(_ctx, getState()); - enterRule(_localctx, 310, RULE_basicForStatementNoShortIf); + enterRule(_localctx, 312, RULE_basicForStatementNoShortIf); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1699); + setState(1705); match(FOR); - setState(1700); + setState(1706); match(LPAREN); - setState(1702); + setState(1708); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & ((1L << (INC - 79)) | (1L << (DEC - 79)) | (1L << (Identifier - 79)) | (1L << (AT - 79)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & ((1L << (INC - 80)) | (1L << (DEC - 80)) | (1L << (Identifier - 80)) | (1L << (AT - 80)))) != 0)) { { - setState(1701); + setState(1707); forInit(); } } - setState(1704); + setState(1710); match(SEMI); - setState(1706); + setState(1712); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(1705); + setState(1711); expression(); } } - setState(1708); + setState(1714); match(SEMI); - setState(1710); + setState(1716); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & ((1L << (INC - 79)) | (1L << (DEC - 79)) | (1L << (Identifier - 79)) | (1L << (AT - 79)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 80)) & ~0x3f) == 0 && ((1L << (_la - 80)) & ((1L << (INC - 80)) | (1L << (DEC - 80)) | (1L << (Identifier - 80)) | (1L << (AT - 80)))) != 0)) { { - setState(1709); + setState(1715); forUpdate(); } } - setState(1712); + setState(1718); match(RPAREN); - setState(1713); + setState(1719); statementNoShortIf(); } } @@ -9064,21 +9117,21 @@ public class Java8Parser extends Parser { public final ForInitContext forInit() throws RecognitionException { ForInitContext _localctx = new ForInitContext(_ctx, getState()); - enterRule(_localctx, 312, RULE_forInit); + enterRule(_localctx, 314, RULE_forInit); try { - setState(1717); - switch ( getInterpreter().adaptivePredict(_input,178,_ctx) ) { + setState(1723); + switch ( getInterpreter().adaptivePredict(_input,179,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1715); + setState(1721); statementExpressionList(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1716); + setState(1722); localVariableDeclaration(); } break; @@ -9107,11 +9160,11 @@ public class Java8Parser extends Parser { public final ForUpdateContext forUpdate() throws RecognitionException { ForUpdateContext _localctx = new ForUpdateContext(_ctx, getState()); - enterRule(_localctx, 314, RULE_forUpdate); + enterRule(_localctx, 316, RULE_forUpdate); try { enterOuterAlt(_localctx, 1); { - setState(1719); + setState(1725); statementExpressionList(); } } @@ -9141,26 +9194,26 @@ public class Java8Parser extends Parser { public final StatementExpressionListContext statementExpressionList() throws RecognitionException { StatementExpressionListContext _localctx = new StatementExpressionListContext(_ctx, getState()); - enterRule(_localctx, 316, RULE_statementExpressionList); + enterRule(_localctx, 318, RULE_statementExpressionList); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1721); + setState(1727); statementExpression(); - setState(1726); + setState(1732); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { - setState(1722); + setState(1728); match(COMMA); - setState(1723); + setState(1729); statementExpression(); } } - setState(1728); + setState(1734); _errHandler.sync(this); _la = _input.LA(1); } @@ -9204,40 +9257,40 @@ public class Java8Parser extends Parser { public final EnhancedForStatementContext enhancedForStatement() throws RecognitionException { EnhancedForStatementContext _localctx = new EnhancedForStatementContext(_ctx, getState()); - enterRule(_localctx, 318, RULE_enhancedForStatement); + enterRule(_localctx, 320, RULE_enhancedForStatement); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1729); + setState(1735); match(FOR); - setState(1730); + setState(1736); match(LPAREN); - setState(1734); + setState(1740); _errHandler.sync(this); _la = _input.LA(1); while (_la==FINAL || _la==AT) { { { - setState(1731); + setState(1737); variableModifier(); } } - setState(1736); + setState(1742); _errHandler.sync(this); _la = _input.LA(1); } - setState(1737); + setState(1743); unannType(); - setState(1738); + setState(1744); variableDeclaratorId(); - setState(1739); + setState(1745); match(COLON); - setState(1740); + setState(1746); expression(); - setState(1741); + setState(1747); match(RPAREN); - setState(1742); + setState(1748); statement(); } } @@ -9279,40 +9332,40 @@ public class Java8Parser extends Parser { public final EnhancedForStatementNoShortIfContext enhancedForStatementNoShortIf() throws RecognitionException { EnhancedForStatementNoShortIfContext _localctx = new EnhancedForStatementNoShortIfContext(_ctx, getState()); - enterRule(_localctx, 320, RULE_enhancedForStatementNoShortIf); + enterRule(_localctx, 322, RULE_enhancedForStatementNoShortIf); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1744); + setState(1750); match(FOR); - setState(1745); + setState(1751); match(LPAREN); - setState(1749); + setState(1755); _errHandler.sync(this); _la = _input.LA(1); while (_la==FINAL || _la==AT) { { { - setState(1746); + setState(1752); variableModifier(); } } - setState(1751); + setState(1757); _errHandler.sync(this); _la = _input.LA(1); } - setState(1752); + setState(1758); unannType(); - setState(1753); + setState(1759); variableDeclaratorId(); - setState(1754); + setState(1760); match(COLON); - setState(1755); + setState(1761); expression(); - setState(1756); + setState(1762); match(RPAREN); - setState(1757); + setState(1763); statementNoShortIf(); } } @@ -9337,23 +9390,23 @@ public class Java8Parser extends Parser { public final BreakStatementContext breakStatement() throws RecognitionException { BreakStatementContext _localctx = new BreakStatementContext(_ctx, getState()); - enterRule(_localctx, 322, RULE_breakStatement); + enterRule(_localctx, 324, RULE_breakStatement); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1759); + setState(1765); match(BREAK); - setState(1761); + setState(1767); _la = _input.LA(1); if (_la==Identifier) { { - setState(1760); + setState(1766); match(Identifier); } } - setState(1763); + setState(1769); match(SEMI); } } @@ -9378,23 +9431,23 @@ public class Java8Parser extends Parser { public final ContinueStatementContext continueStatement() throws RecognitionException { ContinueStatementContext _localctx = new ContinueStatementContext(_ctx, getState()); - enterRule(_localctx, 324, RULE_continueStatement); + enterRule(_localctx, 326, RULE_continueStatement); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1765); + setState(1771); match(CONTINUE); - setState(1767); + setState(1773); _la = _input.LA(1); if (_la==Identifier) { { - setState(1766); + setState(1772); match(Identifier); } } - setState(1769); + setState(1775); match(SEMI); } } @@ -9421,23 +9474,23 @@ public class Java8Parser extends Parser { public final ReturnStatementContext returnStatement() throws RecognitionException { ReturnStatementContext _localctx = new ReturnStatementContext(_ctx, getState()); - enterRule(_localctx, 326, RULE_returnStatement); + enterRule(_localctx, 328, RULE_returnStatement); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1771); + setState(1777); match(RETURN); - setState(1773); + setState(1779); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(1772); + setState(1778); expression(); } } - setState(1775); + setState(1781); match(SEMI); } } @@ -9464,15 +9517,15 @@ public class Java8Parser extends Parser { public final ThrowStatementContext throwStatement() throws RecognitionException { ThrowStatementContext _localctx = new ThrowStatementContext(_ctx, getState()); - enterRule(_localctx, 328, RULE_throwStatement); + enterRule(_localctx, 330, RULE_throwStatement); try { enterOuterAlt(_localctx, 1); { - setState(1777); + setState(1783); match(THROW); - setState(1778); + setState(1784); expression(); - setState(1779); + setState(1785); match(SEMI); } } @@ -9502,19 +9555,19 @@ public class Java8Parser extends Parser { public final SynchronizedStatementContext synchronizedStatement() throws RecognitionException { SynchronizedStatementContext _localctx = new SynchronizedStatementContext(_ctx, getState()); - enterRule(_localctx, 330, RULE_synchronizedStatement); + enterRule(_localctx, 332, RULE_synchronizedStatement); try { enterOuterAlt(_localctx, 1); { - setState(1781); + setState(1787); match(SYNCHRONIZED); - setState(1782); + setState(1788); match(LPAREN); - setState(1783); + setState(1789); expression(); - setState(1784); + setState(1790); match(RPAREN); - setState(1785); + setState(1791); block(); } } @@ -9550,46 +9603,46 @@ public class Java8Parser extends Parser { public final TryStatementContext tryStatement() throws RecognitionException { TryStatementContext _localctx = new TryStatementContext(_ctx, getState()); - enterRule(_localctx, 332, RULE_tryStatement); + enterRule(_localctx, 334, RULE_tryStatement); int _la; try { - setState(1799); - switch ( getInterpreter().adaptivePredict(_input,186,_ctx) ) { + setState(1805); + switch ( getInterpreter().adaptivePredict(_input,187,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1787); + setState(1793); match(TRY); - setState(1788); + setState(1794); block(); - setState(1789); + setState(1795); catches(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1791); + setState(1797); match(TRY); - setState(1792); + setState(1798); block(); - setState(1794); + setState(1800); _la = _input.LA(1); if (_la==CATCH) { { - setState(1793); + setState(1799); catches(); } } - setState(1796); + setState(1802); finally_(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(1798); + setState(1804); tryWithResourcesStatement(); } break; @@ -9621,24 +9674,24 @@ public class Java8Parser extends Parser { public final CatchesContext catches() throws RecognitionException { CatchesContext _localctx = new CatchesContext(_ctx, getState()); - enterRule(_localctx, 334, RULE_catches); + enterRule(_localctx, 336, RULE_catches); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1801); + setState(1807); catchClause(); - setState(1805); + setState(1811); _errHandler.sync(this); _la = _input.LA(1); while (_la==CATCH) { { { - setState(1802); + setState(1808); catchClause(); } } - setState(1807); + setState(1813); _errHandler.sync(this); _la = _input.LA(1); } @@ -9670,19 +9723,19 @@ public class Java8Parser extends Parser { public final CatchClauseContext catchClause() throws RecognitionException { CatchClauseContext _localctx = new CatchClauseContext(_ctx, getState()); - enterRule(_localctx, 336, RULE_catchClause); + enterRule(_localctx, 338, RULE_catchClause); try { enterOuterAlt(_localctx, 1); { - setState(1808); + setState(1814); match(CATCH); - setState(1809); + setState(1815); match(LPAREN); - setState(1810); + setState(1816); catchFormalParameter(); - setState(1811); + setState(1817); match(RPAREN); - setState(1812); + setState(1818); block(); } } @@ -9718,28 +9771,28 @@ public class Java8Parser extends Parser { public final CatchFormalParameterContext catchFormalParameter() throws RecognitionException { CatchFormalParameterContext _localctx = new CatchFormalParameterContext(_ctx, getState()); - enterRule(_localctx, 338, RULE_catchFormalParameter); + enterRule(_localctx, 340, RULE_catchFormalParameter); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1817); + setState(1823); _errHandler.sync(this); _la = _input.LA(1); while (_la==FINAL || _la==AT) { { { - setState(1814); + setState(1820); variableModifier(); } } - setState(1819); + setState(1825); _errHandler.sync(this); _la = _input.LA(1); } - setState(1820); + setState(1826); catchType(); - setState(1821); + setState(1827); variableDeclaratorId(); } } @@ -9772,26 +9825,26 @@ public class Java8Parser extends Parser { public final CatchTypeContext catchType() throws RecognitionException { CatchTypeContext _localctx = new CatchTypeContext(_ctx, getState()); - enterRule(_localctx, 340, RULE_catchType); + enterRule(_localctx, 342, RULE_catchType); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1823); + setState(1829); unannClassType(); - setState(1828); + setState(1834); _errHandler.sync(this); _la = _input.LA(1); while (_la==BITOR) { { { - setState(1824); + setState(1830); match(BITOR); - setState(1825); + setState(1831); classType(); } } - setState(1830); + setState(1836); _errHandler.sync(this); _la = _input.LA(1); } @@ -9820,13 +9873,13 @@ public class Java8Parser extends Parser { public final Finally_Context finally_() throws RecognitionException { Finally_Context _localctx = new Finally_Context(_ctx, getState()); - enterRule(_localctx, 342, RULE_finally_); + enterRule(_localctx, 344, RULE_finally_); try { enterOuterAlt(_localctx, 1); { - setState(1831); + setState(1837); match(FINALLY); - setState(1832); + setState(1838); block(); } } @@ -9862,31 +9915,31 @@ public class Java8Parser extends Parser { public final TryWithResourcesStatementContext tryWithResourcesStatement() throws RecognitionException { TryWithResourcesStatementContext _localctx = new TryWithResourcesStatementContext(_ctx, getState()); - enterRule(_localctx, 344, RULE_tryWithResourcesStatement); + enterRule(_localctx, 346, RULE_tryWithResourcesStatement); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1834); + setState(1840); match(TRY); - setState(1835); + setState(1841); resourceSpecification(); - setState(1836); + setState(1842); block(); - setState(1838); + setState(1844); _la = _input.LA(1); if (_la==CATCH) { { - setState(1837); + setState(1843); catches(); } } - setState(1841); + setState(1847); _la = _input.LA(1); if (_la==FINALLY) { { - setState(1840); + setState(1846); finally_(); } } @@ -9916,25 +9969,25 @@ public class Java8Parser extends Parser { public final ResourceSpecificationContext resourceSpecification() throws RecognitionException { ResourceSpecificationContext _localctx = new ResourceSpecificationContext(_ctx, getState()); - enterRule(_localctx, 346, RULE_resourceSpecification); + enterRule(_localctx, 348, RULE_resourceSpecification); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1843); + setState(1849); match(LPAREN); - setState(1844); + setState(1850); resourceList(); - setState(1846); + setState(1852); _la = _input.LA(1); if (_la==SEMI) { { - setState(1845); + setState(1851); match(SEMI); } } - setState(1848); + setState(1854); match(RPAREN); } } @@ -9964,30 +10017,30 @@ public class Java8Parser extends Parser { public final ResourceListContext resourceList() throws RecognitionException { ResourceListContext _localctx = new ResourceListContext(_ctx, getState()); - enterRule(_localctx, 348, RULE_resourceList); + enterRule(_localctx, 350, RULE_resourceList); try { int _alt; enterOuterAlt(_localctx, 1); { - setState(1850); + setState(1856); resource(); - setState(1855); + setState(1861); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,193,_ctx); + _alt = getInterpreter().adaptivePredict(_input,194,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(1851); + setState(1857); match(SEMI); - setState(1852); + setState(1858); resource(); } } } - setState(1857); + setState(1863); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,193,_ctx); + _alt = getInterpreter().adaptivePredict(_input,194,_ctx); } } } @@ -10026,32 +10079,32 @@ public class Java8Parser extends Parser { public final ResourceContext resource() throws RecognitionException { ResourceContext _localctx = new ResourceContext(_ctx, getState()); - enterRule(_localctx, 350, RULE_resource); + enterRule(_localctx, 352, RULE_resource); int _la; try { enterOuterAlt(_localctx, 1); { - setState(1861); + setState(1867); _errHandler.sync(this); _la = _input.LA(1); while (_la==FINAL || _la==AT) { { { - setState(1858); + setState(1864); variableModifier(); } } - setState(1863); + setState(1869); _errHandler.sync(this); _la = _input.LA(1); } - setState(1864); + setState(1870); unannType(); - setState(1865); + setState(1871); variableDeclaratorId(); - setState(1866); + setState(1872); match(ASSIGN); - setState(1867); + setState(1873); expression(); } } @@ -10087,41 +10140,41 @@ public class Java8Parser extends Parser { public final PrimaryContext primary() throws RecognitionException { PrimaryContext _localctx = new PrimaryContext(_ctx, getState()); - enterRule(_localctx, 352, RULE_primary); + enterRule(_localctx, 354, RULE_primary); try { int _alt; enterOuterAlt(_localctx, 1); { - setState(1871); - switch ( getInterpreter().adaptivePredict(_input,195,_ctx) ) { + setState(1877); + switch ( getInterpreter().adaptivePredict(_input,196,_ctx) ) { case 1: { - setState(1869); + setState(1875); primaryNoNewArray_lfno_primary(); } break; case 2: { - setState(1870); + setState(1876); arrayCreationExpression(); } break; } - setState(1876); + setState(1882); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,196,_ctx); + _alt = getInterpreter().adaptivePredict(_input,197,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(1873); + setState(1879); primaryNoNewArray_lf_primary(); } } } - setState(1878); + setState(1884); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,196,_ctx); + _alt = getInterpreter().adaptivePredict(_input,197,_ctx); } } } @@ -10169,117 +10222,117 @@ public class Java8Parser extends Parser { public final PrimaryNoNewArrayContext primaryNoNewArray() throws RecognitionException { PrimaryNoNewArrayContext _localctx = new PrimaryNoNewArrayContext(_ctx, getState()); - enterRule(_localctx, 354, RULE_primaryNoNewArray); + enterRule(_localctx, 356, RULE_primaryNoNewArray); int _la; try { - setState(1908); - switch ( getInterpreter().adaptivePredict(_input,198,_ctx) ) { + setState(1914); + switch ( getInterpreter().adaptivePredict(_input,199,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1879); + setState(1885); literal(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1880); + setState(1886); typeName(); - setState(1885); + setState(1891); _errHandler.sync(this); _la = _input.LA(1); while (_la==LBRACK) { { { - setState(1881); + setState(1887); match(LBRACK); - setState(1882); + setState(1888); match(RBRACK); } } - setState(1887); + setState(1893); _errHandler.sync(this); _la = _input.LA(1); } - setState(1888); + setState(1894); match(DOT); - setState(1889); + setState(1895); match(CLASS); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(1891); + setState(1897); match(VOID); - setState(1892); + setState(1898); match(DOT); - setState(1893); + setState(1899); match(CLASS); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(1894); + setState(1900); match(THIS); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(1895); + setState(1901); typeName(); - setState(1896); + setState(1902); match(DOT); - setState(1897); + setState(1903); match(THIS); } break; case 6: enterOuterAlt(_localctx, 6); { - setState(1899); + setState(1905); match(LPAREN); - setState(1900); + setState(1906); expression(); - setState(1901); + setState(1907); match(RPAREN); } break; case 7: enterOuterAlt(_localctx, 7); { - setState(1903); + setState(1909); classInstanceCreationExpression(); } break; case 8: enterOuterAlt(_localctx, 8); { - setState(1904); + setState(1910); fieldAccess(); } break; case 9: enterOuterAlt(_localctx, 9); { - setState(1905); + setState(1911); arrayAccess(); } break; case 10: enterOuterAlt(_localctx, 10); { - setState(1906); + setState(1912); methodInvocation(); } break; case 11: enterOuterAlt(_localctx, 11); { - setState(1907); + setState(1913); methodReference(); } break; @@ -10305,7 +10358,7 @@ public class Java8Parser extends Parser { public final PrimaryNoNewArray_lf_arrayAccessContext primaryNoNewArray_lf_arrayAccess() throws RecognitionException { PrimaryNoNewArray_lf_arrayAccessContext _localctx = new PrimaryNoNewArray_lf_arrayAccessContext(_ctx, getState()); - enterRule(_localctx, 356, RULE_primaryNoNewArray_lf_arrayAccess); + enterRule(_localctx, 358, RULE_primaryNoNewArray_lf_arrayAccess); try { enterOuterAlt(_localctx, 1); { @@ -10352,110 +10405,110 @@ public class Java8Parser extends Parser { public final PrimaryNoNewArray_lfno_arrayAccessContext primaryNoNewArray_lfno_arrayAccess() throws RecognitionException { PrimaryNoNewArray_lfno_arrayAccessContext _localctx = new PrimaryNoNewArray_lfno_arrayAccessContext(_ctx, getState()); - enterRule(_localctx, 358, RULE_primaryNoNewArray_lfno_arrayAccess); + enterRule(_localctx, 360, RULE_primaryNoNewArray_lfno_arrayAccess); int _la; try { - setState(1940); - switch ( getInterpreter().adaptivePredict(_input,200,_ctx) ) { + setState(1946); + switch ( getInterpreter().adaptivePredict(_input,201,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1912); + setState(1918); literal(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1913); + setState(1919); typeName(); - setState(1918); + setState(1924); _errHandler.sync(this); _la = _input.LA(1); while (_la==LBRACK) { { { - setState(1914); + setState(1920); match(LBRACK); - setState(1915); + setState(1921); match(RBRACK); } } - setState(1920); + setState(1926); _errHandler.sync(this); _la = _input.LA(1); } - setState(1921); + setState(1927); match(DOT); - setState(1922); + setState(1928); match(CLASS); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(1924); + setState(1930); match(VOID); - setState(1925); + setState(1931); match(DOT); - setState(1926); + setState(1932); match(CLASS); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(1927); + setState(1933); match(THIS); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(1928); + setState(1934); typeName(); - setState(1929); + setState(1935); match(DOT); - setState(1930); + setState(1936); match(THIS); } break; case 6: enterOuterAlt(_localctx, 6); { - setState(1932); + setState(1938); match(LPAREN); - setState(1933); + setState(1939); expression(); - setState(1934); + setState(1940); match(RPAREN); } break; case 7: enterOuterAlt(_localctx, 7); { - setState(1936); + setState(1942); classInstanceCreationExpression(); } break; case 8: enterOuterAlt(_localctx, 8); { - setState(1937); + setState(1943); fieldAccess(); } break; case 9: enterOuterAlt(_localctx, 9); { - setState(1938); + setState(1944); methodInvocation(); } break; case 10: enterOuterAlt(_localctx, 10); { - setState(1939); + setState(1945); methodReference(); } break; @@ -10496,42 +10549,42 @@ public class Java8Parser extends Parser { public final PrimaryNoNewArray_lf_primaryContext primaryNoNewArray_lf_primary() throws RecognitionException { PrimaryNoNewArray_lf_primaryContext _localctx = new PrimaryNoNewArray_lf_primaryContext(_ctx, getState()); - enterRule(_localctx, 360, RULE_primaryNoNewArray_lf_primary); + enterRule(_localctx, 362, RULE_primaryNoNewArray_lf_primary); try { - setState(1947); - switch ( getInterpreter().adaptivePredict(_input,201,_ctx) ) { + setState(1953); + switch ( getInterpreter().adaptivePredict(_input,202,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1942); + setState(1948); classInstanceCreationExpression_lf_primary(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1943); + setState(1949); fieldAccess_lf_primary(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(1944); + setState(1950); arrayAccess_lf_primary(); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(1945); + setState(1951); methodInvocation_lf_primary(); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(1946); + setState(1952); methodReference_lf_primary(); } break; @@ -10557,7 +10610,7 @@ public class Java8Parser extends Parser { public final PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary() throws RecognitionException { PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext _localctx = new PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext(_ctx, getState()); - enterRule(_localctx, 362, RULE_primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary); + enterRule(_localctx, 364, RULE_primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary); try { enterOuterAlt(_localctx, 1); { @@ -10595,35 +10648,35 @@ public class Java8Parser extends Parser { public final PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary() throws RecognitionException { PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext _localctx = new PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext(_ctx, getState()); - enterRule(_localctx, 364, RULE_primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary); + enterRule(_localctx, 366, RULE_primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary); try { - setState(1955); - switch ( getInterpreter().adaptivePredict(_input,202,_ctx) ) { + setState(1961); + switch ( getInterpreter().adaptivePredict(_input,203,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1951); + setState(1957); classInstanceCreationExpression_lf_primary(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1952); + setState(1958); fieldAccess_lf_primary(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(1953); + setState(1959); methodInvocation_lf_primary(); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(1954); + setState(1960); methodReference_lf_primary(); } break; @@ -10676,144 +10729,144 @@ public class Java8Parser extends Parser { public final PrimaryNoNewArray_lfno_primaryContext primaryNoNewArray_lfno_primary() throws RecognitionException { PrimaryNoNewArray_lfno_primaryContext _localctx = new PrimaryNoNewArray_lfno_primaryContext(_ctx, getState()); - enterRule(_localctx, 366, RULE_primaryNoNewArray_lfno_primary); + enterRule(_localctx, 368, RULE_primaryNoNewArray_lfno_primary); int _la; try { - setState(1997); - switch ( getInterpreter().adaptivePredict(_input,205,_ctx) ) { + setState(2003); + switch ( getInterpreter().adaptivePredict(_input,206,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(1957); + setState(1963); literal(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(1958); + setState(1964); typeName(); - setState(1963); + setState(1969); _errHandler.sync(this); _la = _input.LA(1); while (_la==LBRACK) { { { - setState(1959); + setState(1965); match(LBRACK); - setState(1960); + setState(1966); match(RBRACK); } } - setState(1965); + setState(1971); _errHandler.sync(this); _la = _input.LA(1); } - setState(1966); + setState(1972); match(DOT); - setState(1967); + setState(1973); match(CLASS); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(1969); + setState(1975); unannPrimitiveType(); - setState(1974); + setState(1980); _errHandler.sync(this); _la = _input.LA(1); while (_la==LBRACK) { { { - setState(1970); + setState(1976); match(LBRACK); - setState(1971); + setState(1977); match(RBRACK); } } - setState(1976); + setState(1982); _errHandler.sync(this); _la = _input.LA(1); } - setState(1977); + setState(1983); match(DOT); - setState(1978); + setState(1984); match(CLASS); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(1980); + setState(1986); match(VOID); - setState(1981); + setState(1987); match(DOT); - setState(1982); + setState(1988); match(CLASS); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(1983); + setState(1989); match(THIS); } break; case 6: enterOuterAlt(_localctx, 6); { - setState(1984); + setState(1990); typeName(); - setState(1985); + setState(1991); match(DOT); - setState(1986); + setState(1992); match(THIS); } break; case 7: enterOuterAlt(_localctx, 7); { - setState(1988); + setState(1994); match(LPAREN); - setState(1989); + setState(1995); expression(); - setState(1990); + setState(1996); match(RPAREN); } break; case 8: enterOuterAlt(_localctx, 8); { - setState(1992); + setState(1998); classInstanceCreationExpression_lfno_primary(); } break; case 9: enterOuterAlt(_localctx, 9); { - setState(1993); + setState(1999); fieldAccess_lfno_primary(); } break; case 10: enterOuterAlt(_localctx, 10); { - setState(1994); + setState(2000); arrayAccess_lfno_primary(); } break; case 11: enterOuterAlt(_localctx, 11); { - setState(1995); + setState(2001); methodInvocation_lfno_primary(); } break; case 12: enterOuterAlt(_localctx, 12); { - setState(1996); + setState(2002); methodReference_lfno_primary(); } break; @@ -10839,7 +10892,7 @@ public class Java8Parser extends Parser { public final PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary() throws RecognitionException { PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext _localctx = new PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext(_ctx, getState()); - enterRule(_localctx, 368, RULE_primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary); + enterRule(_localctx, 370, RULE_primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary); try { enterOuterAlt(_localctx, 1); { @@ -10889,137 +10942,137 @@ public class Java8Parser extends Parser { public final PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary() throws RecognitionException { PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext _localctx = new PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext(_ctx, getState()); - enterRule(_localctx, 370, RULE_primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary); + enterRule(_localctx, 372, RULE_primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary); int _la; try { - setState(2040); - switch ( getInterpreter().adaptivePredict(_input,208,_ctx) ) { + setState(2046); + switch ( getInterpreter().adaptivePredict(_input,209,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(2001); + setState(2007); literal(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(2002); + setState(2008); typeName(); - setState(2007); + setState(2013); _errHandler.sync(this); _la = _input.LA(1); while (_la==LBRACK) { { { - setState(2003); + setState(2009); match(LBRACK); - setState(2004); + setState(2010); match(RBRACK); } } - setState(2009); + setState(2015); _errHandler.sync(this); _la = _input.LA(1); } - setState(2010); + setState(2016); match(DOT); - setState(2011); + setState(2017); match(CLASS); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(2013); + setState(2019); unannPrimitiveType(); - setState(2018); + setState(2024); _errHandler.sync(this); _la = _input.LA(1); while (_la==LBRACK) { { { - setState(2014); + setState(2020); match(LBRACK); - setState(2015); + setState(2021); match(RBRACK); } } - setState(2020); + setState(2026); _errHandler.sync(this); _la = _input.LA(1); } - setState(2021); + setState(2027); match(DOT); - setState(2022); + setState(2028); match(CLASS); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(2024); + setState(2030); match(VOID); - setState(2025); + setState(2031); match(DOT); - setState(2026); + setState(2032); match(CLASS); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(2027); + setState(2033); match(THIS); } break; case 6: enterOuterAlt(_localctx, 6); { - setState(2028); + setState(2034); typeName(); - setState(2029); + setState(2035); match(DOT); - setState(2030); + setState(2036); match(THIS); } break; case 7: enterOuterAlt(_localctx, 7); { - setState(2032); + setState(2038); match(LPAREN); - setState(2033); + setState(2039); expression(); - setState(2034); + setState(2040); match(RPAREN); } break; case 8: enterOuterAlt(_localctx, 8); { - setState(2036); + setState(2042); classInstanceCreationExpression_lfno_primary(); } break; case 9: enterOuterAlt(_localctx, 9); { - setState(2037); + setState(2043); fieldAccess_lfno_primary(); } break; case 10: enterOuterAlt(_localctx, 10); { - setState(2038); + setState(2044); methodInvocation_lfno_primary(); } break; case 11: enterOuterAlt(_localctx, 11); { - setState(2039); + setState(2045); methodReference_lfno_primary(); } break; @@ -11073,98 +11126,98 @@ public class Java8Parser extends Parser { public final ClassInstanceCreationExpressionContext classInstanceCreationExpression() throws RecognitionException { ClassInstanceCreationExpressionContext _localctx = new ClassInstanceCreationExpressionContext(_ctx, getState()); - enterRule(_localctx, 372, RULE_classInstanceCreationExpression); + enterRule(_localctx, 374, RULE_classInstanceCreationExpression); int _la; try { - setState(2125); - switch ( getInterpreter().adaptivePredict(_input,226,_ctx) ) { + setState(2131); + switch ( getInterpreter().adaptivePredict(_input,227,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(2042); + setState(2048); match(NEW); - setState(2044); + setState(2050); _la = _input.LA(1); if (_la==LT) { { - setState(2043); + setState(2049); typeArguments(); } } - setState(2049); + setState(2055); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(2046); + setState(2052); annotation(); } } - setState(2051); + setState(2057); _errHandler.sync(this); _la = _input.LA(1); } - setState(2052); + setState(2058); match(Identifier); - setState(2063); + setState(2069); _errHandler.sync(this); _la = _input.LA(1); while (_la==DOT) { { { - setState(2053); + setState(2059); match(DOT); - setState(2057); + setState(2063); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(2054); + setState(2060); annotation(); } } - setState(2059); + setState(2065); _errHandler.sync(this); _la = _input.LA(1); } - setState(2060); + setState(2066); match(Identifier); } } - setState(2065); + setState(2071); _errHandler.sync(this); _la = _input.LA(1); } - setState(2067); + setState(2073); _la = _input.LA(1); if (_la==LT) { { - setState(2066); + setState(2072); typeArgumentsOrDiamond(); } } - setState(2069); + setState(2075); match(LPAREN); - setState(2071); + setState(2077); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(2070); + setState(2076); argumentList(); } } - setState(2073); + setState(2079); match(RPAREN); - setState(2075); + setState(2081); _la = _input.LA(1); if (_la==LBRACE) { { - setState(2074); + setState(2080); classBody(); } } @@ -11174,64 +11227,64 @@ public class Java8Parser extends Parser { case 2: enterOuterAlt(_localctx, 2); { - setState(2077); + setState(2083); expressionName(); - setState(2078); + setState(2084); match(DOT); - setState(2079); + setState(2085); match(NEW); - setState(2081); + setState(2087); _la = _input.LA(1); if (_la==LT) { { - setState(2080); + setState(2086); typeArguments(); } } - setState(2086); + setState(2092); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(2083); + setState(2089); annotation(); } } - setState(2088); + setState(2094); _errHandler.sync(this); _la = _input.LA(1); } - setState(2089); + setState(2095); match(Identifier); - setState(2091); + setState(2097); _la = _input.LA(1); if (_la==LT) { { - setState(2090); + setState(2096); typeArgumentsOrDiamond(); } } - setState(2093); + setState(2099); match(LPAREN); - setState(2095); + setState(2101); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(2094); + setState(2100); argumentList(); } } - setState(2097); + setState(2103); match(RPAREN); - setState(2099); + setState(2105); _la = _input.LA(1); if (_la==LBRACE) { { - setState(2098); + setState(2104); classBody(); } } @@ -11241,64 +11294,64 @@ public class Java8Parser extends Parser { case 3: enterOuterAlt(_localctx, 3); { - setState(2101); + setState(2107); primary(); - setState(2102); + setState(2108); match(DOT); - setState(2103); + setState(2109); match(NEW); - setState(2105); + setState(2111); _la = _input.LA(1); if (_la==LT) { { - setState(2104); + setState(2110); typeArguments(); } } - setState(2110); + setState(2116); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(2107); + setState(2113); annotation(); } } - setState(2112); + setState(2118); _errHandler.sync(this); _la = _input.LA(1); } - setState(2113); + setState(2119); match(Identifier); - setState(2115); + setState(2121); _la = _input.LA(1); if (_la==LT) { { - setState(2114); + setState(2120); typeArgumentsOrDiamond(); } } - setState(2117); + setState(2123); match(LPAREN); - setState(2119); + setState(2125); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(2118); + setState(2124); argumentList(); } } - setState(2121); + setState(2127); match(RPAREN); - setState(2123); + setState(2129); _la = _input.LA(1); if (_la==LBRACE) { { - setState(2122); + setState(2128); classBody(); } } @@ -11346,67 +11399,67 @@ public class Java8Parser extends Parser { public final ClassInstanceCreationExpression_lf_primaryContext classInstanceCreationExpression_lf_primary() throws RecognitionException { ClassInstanceCreationExpression_lf_primaryContext _localctx = new ClassInstanceCreationExpression_lf_primaryContext(_ctx, getState()); - enterRule(_localctx, 374, RULE_classInstanceCreationExpression_lf_primary); + enterRule(_localctx, 376, RULE_classInstanceCreationExpression_lf_primary); int _la; try { enterOuterAlt(_localctx, 1); { - setState(2127); + setState(2133); match(DOT); - setState(2128); + setState(2134); match(NEW); - setState(2130); + setState(2136); _la = _input.LA(1); if (_la==LT) { { - setState(2129); + setState(2135); typeArguments(); } } - setState(2135); + setState(2141); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(2132); + setState(2138); annotation(); } } - setState(2137); + setState(2143); _errHandler.sync(this); _la = _input.LA(1); } - setState(2138); + setState(2144); match(Identifier); - setState(2140); + setState(2146); _la = _input.LA(1); if (_la==LT) { { - setState(2139); + setState(2145); typeArgumentsOrDiamond(); } } - setState(2142); + setState(2148); match(LPAREN); - setState(2144); + setState(2150); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(2143); + setState(2149); argumentList(); } } - setState(2146); + setState(2152); match(RPAREN); - setState(2148); - switch ( getInterpreter().adaptivePredict(_input,231,_ctx) ) { + setState(2154); + switch ( getInterpreter().adaptivePredict(_input,232,_ctx) ) { case 1: { - setState(2147); + setState(2153); classBody(); } break; @@ -11458,98 +11511,98 @@ public class Java8Parser extends Parser { public final ClassInstanceCreationExpression_lfno_primaryContext classInstanceCreationExpression_lfno_primary() throws RecognitionException { ClassInstanceCreationExpression_lfno_primaryContext _localctx = new ClassInstanceCreationExpression_lfno_primaryContext(_ctx, getState()); - enterRule(_localctx, 376, RULE_classInstanceCreationExpression_lfno_primary); + enterRule(_localctx, 378, RULE_classInstanceCreationExpression_lfno_primary); int _la; try { - setState(2209); + setState(2215); switch (_input.LA(1)) { case NEW: enterOuterAlt(_localctx, 1); { - setState(2150); + setState(2156); match(NEW); - setState(2152); + setState(2158); _la = _input.LA(1); if (_la==LT) { { - setState(2151); + setState(2157); typeArguments(); } } - setState(2157); + setState(2163); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(2154); + setState(2160); annotation(); } } - setState(2159); + setState(2165); _errHandler.sync(this); _la = _input.LA(1); } - setState(2160); + setState(2166); match(Identifier); - setState(2171); + setState(2177); _errHandler.sync(this); _la = _input.LA(1); while (_la==DOT) { { { - setState(2161); + setState(2167); match(DOT); - setState(2165); + setState(2171); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(2162); + setState(2168); annotation(); } } - setState(2167); + setState(2173); _errHandler.sync(this); _la = _input.LA(1); } - setState(2168); + setState(2174); match(Identifier); } } - setState(2173); + setState(2179); _errHandler.sync(this); _la = _input.LA(1); } - setState(2175); + setState(2181); _la = _input.LA(1); if (_la==LT) { { - setState(2174); + setState(2180); typeArgumentsOrDiamond(); } } - setState(2177); + setState(2183); match(LPAREN); - setState(2179); + setState(2185); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(2178); + setState(2184); argumentList(); } } - setState(2181); + setState(2187); match(RPAREN); - setState(2183); - switch ( getInterpreter().adaptivePredict(_input,238,_ctx) ) { + setState(2189); + switch ( getInterpreter().adaptivePredict(_input,239,_ctx) ) { case 1: { - setState(2182); + setState(2188); classBody(); } break; @@ -11559,64 +11612,64 @@ public class Java8Parser extends Parser { case Identifier: enterOuterAlt(_localctx, 2); { - setState(2185); + setState(2191); expressionName(); - setState(2186); + setState(2192); match(DOT); - setState(2187); + setState(2193); match(NEW); - setState(2189); + setState(2195); _la = _input.LA(1); if (_la==LT) { { - setState(2188); + setState(2194); typeArguments(); } } - setState(2194); + setState(2200); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(2191); + setState(2197); annotation(); } } - setState(2196); + setState(2202); _errHandler.sync(this); _la = _input.LA(1); } - setState(2197); + setState(2203); match(Identifier); - setState(2199); + setState(2205); _la = _input.LA(1); if (_la==LT) { { - setState(2198); + setState(2204); typeArgumentsOrDiamond(); } } - setState(2201); + setState(2207); match(LPAREN); - setState(2203); + setState(2209); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(2202); + setState(2208); argumentList(); } } - setState(2205); + setState(2211); match(RPAREN); - setState(2207); - switch ( getInterpreter().adaptivePredict(_input,243,_ctx) ) { + setState(2213); + switch ( getInterpreter().adaptivePredict(_input,244,_ctx) ) { case 1: { - setState(2206); + setState(2212); classBody(); } break; @@ -11650,23 +11703,23 @@ public class Java8Parser extends Parser { public final TypeArgumentsOrDiamondContext typeArgumentsOrDiamond() throws RecognitionException { TypeArgumentsOrDiamondContext _localctx = new TypeArgumentsOrDiamondContext(_ctx, getState()); - enterRule(_localctx, 378, RULE_typeArgumentsOrDiamond); + enterRule(_localctx, 380, RULE_typeArgumentsOrDiamond); try { - setState(2214); - switch ( getInterpreter().adaptivePredict(_input,245,_ctx) ) { + setState(2220); + switch ( getInterpreter().adaptivePredict(_input,246,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(2211); + setState(2217); typeArguments(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(2212); + setState(2218); match(LT); - setState(2213); + setState(2219); match(GT); } break; @@ -11699,44 +11752,44 @@ public class Java8Parser extends Parser { public final FieldAccessContext fieldAccess() throws RecognitionException { FieldAccessContext _localctx = new FieldAccessContext(_ctx, getState()); - enterRule(_localctx, 380, RULE_fieldAccess); + enterRule(_localctx, 382, RULE_fieldAccess); try { - setState(2229); - switch ( getInterpreter().adaptivePredict(_input,246,_ctx) ) { + setState(2235); + switch ( getInterpreter().adaptivePredict(_input,247,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(2216); + setState(2222); primary(); - setState(2217); + setState(2223); match(DOT); - setState(2218); + setState(2224); match(Identifier); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(2220); + setState(2226); match(SUPER); - setState(2221); + setState(2227); match(DOT); - setState(2222); + setState(2228); match(Identifier); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(2223); + setState(2229); typeName(); - setState(2224); + setState(2230); match(DOT); - setState(2225); + setState(2231); match(SUPER); - setState(2226); + setState(2232); match(DOT); - setState(2227); + setState(2233); match(Identifier); } break; @@ -11763,13 +11816,13 @@ public class Java8Parser extends Parser { public final FieldAccess_lf_primaryContext fieldAccess_lf_primary() throws RecognitionException { FieldAccess_lf_primaryContext _localctx = new FieldAccess_lf_primaryContext(_ctx, getState()); - enterRule(_localctx, 382, RULE_fieldAccess_lf_primary); + enterRule(_localctx, 384, RULE_fieldAccess_lf_primary); try { enterOuterAlt(_localctx, 1); { - setState(2231); + setState(2237); match(DOT); - setState(2232); + setState(2238); match(Identifier); } } @@ -11797,33 +11850,33 @@ public class Java8Parser extends Parser { public final FieldAccess_lfno_primaryContext fieldAccess_lfno_primary() throws RecognitionException { FieldAccess_lfno_primaryContext _localctx = new FieldAccess_lfno_primaryContext(_ctx, getState()); - enterRule(_localctx, 384, RULE_fieldAccess_lfno_primary); + enterRule(_localctx, 386, RULE_fieldAccess_lfno_primary); try { - setState(2243); + setState(2249); switch (_input.LA(1)) { case SUPER: enterOuterAlt(_localctx, 1); { - setState(2234); + setState(2240); match(SUPER); - setState(2235); + setState(2241); match(DOT); - setState(2236); + setState(2242); match(Identifier); } break; case Identifier: enterOuterAlt(_localctx, 2); { - setState(2237); + setState(2243); typeName(); - setState(2238); + setState(2244); match(DOT); - setState(2239); + setState(2245); match(SUPER); - setState(2240); + setState(2246); match(DOT); - setState(2241); + setState(2247); match(Identifier); } break; @@ -11869,55 +11922,55 @@ public class Java8Parser extends Parser { public final ArrayAccessContext arrayAccess() throws RecognitionException { ArrayAccessContext _localctx = new ArrayAccessContext(_ctx, getState()); - enterRule(_localctx, 386, RULE_arrayAccess); + enterRule(_localctx, 388, RULE_arrayAccess); int _la; try { enterOuterAlt(_localctx, 1); { - setState(2255); - switch ( getInterpreter().adaptivePredict(_input,248,_ctx) ) { + setState(2261); + switch ( getInterpreter().adaptivePredict(_input,249,_ctx) ) { case 1: { - setState(2245); + setState(2251); expressionName(); - setState(2246); + setState(2252); match(LBRACK); - setState(2247); + setState(2253); expression(); - setState(2248); + setState(2254); match(RBRACK); } break; case 2: { - setState(2250); + setState(2256); primaryNoNewArray_lfno_arrayAccess(); - setState(2251); + setState(2257); match(LBRACK); - setState(2252); + setState(2258); expression(); - setState(2253); + setState(2259); match(RBRACK); } break; } - setState(2264); + setState(2270); _errHandler.sync(this); _la = _input.LA(1); while (_la==LBRACK) { { { - setState(2257); + setState(2263); primaryNoNewArray_lf_arrayAccess(); - setState(2258); + setState(2264); match(LBRACK); - setState(2259); + setState(2265); expression(); - setState(2260); + setState(2266); match(RBRACK); } } - setState(2266); + setState(2272); _errHandler.sync(this); _la = _input.LA(1); } @@ -11958,42 +12011,42 @@ public class Java8Parser extends Parser { public final ArrayAccess_lf_primaryContext arrayAccess_lf_primary() throws RecognitionException { ArrayAccess_lf_primaryContext _localctx = new ArrayAccess_lf_primaryContext(_ctx, getState()); - enterRule(_localctx, 388, RULE_arrayAccess_lf_primary); + enterRule(_localctx, 390, RULE_arrayAccess_lf_primary); try { int _alt; enterOuterAlt(_localctx, 1); { { - setState(2267); + setState(2273); primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(); - setState(2268); + setState(2274); match(LBRACK); - setState(2269); + setState(2275); expression(); - setState(2270); + setState(2276); match(RBRACK); } - setState(2279); + setState(2285); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,250,_ctx); + _alt = getInterpreter().adaptivePredict(_input,251,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(2272); + setState(2278); primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(); - setState(2273); + setState(2279); match(LBRACK); - setState(2274); + setState(2280); expression(); - setState(2275); + setState(2281); match(RBRACK); } } } - setState(2281); + setState(2287); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,250,_ctx); + _alt = getInterpreter().adaptivePredict(_input,251,_ctx); } } } @@ -12035,59 +12088,59 @@ public class Java8Parser extends Parser { public final ArrayAccess_lfno_primaryContext arrayAccess_lfno_primary() throws RecognitionException { ArrayAccess_lfno_primaryContext _localctx = new ArrayAccess_lfno_primaryContext(_ctx, getState()); - enterRule(_localctx, 390, RULE_arrayAccess_lfno_primary); + enterRule(_localctx, 392, RULE_arrayAccess_lfno_primary); try { int _alt; enterOuterAlt(_localctx, 1); { - setState(2292); - switch ( getInterpreter().adaptivePredict(_input,251,_ctx) ) { + setState(2298); + switch ( getInterpreter().adaptivePredict(_input,252,_ctx) ) { case 1: { - setState(2282); + setState(2288); expressionName(); - setState(2283); + setState(2289); match(LBRACK); - setState(2284); + setState(2290); expression(); - setState(2285); + setState(2291); match(RBRACK); } break; case 2: { - setState(2287); + setState(2293); primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(); - setState(2288); + setState(2294); match(LBRACK); - setState(2289); + setState(2295); expression(); - setState(2290); + setState(2296); match(RBRACK); } break; } - setState(2301); + setState(2307); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,252,_ctx); + _alt = getInterpreter().adaptivePredict(_input,253,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(2294); + setState(2300); primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(); - setState(2295); + setState(2301); match(LBRACK); - setState(2296); + setState(2302); expression(); - setState(2297); + setState(2303); match(RBRACK); } } } - setState(2303); + setState(2309); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,252,_ctx); + _alt = getInterpreter().adaptivePredict(_input,253,_ctx); } } } @@ -12130,197 +12183,197 @@ public class Java8Parser extends Parser { public final MethodInvocationContext methodInvocation() throws RecognitionException { MethodInvocationContext _localctx = new MethodInvocationContext(_ctx, getState()); - enterRule(_localctx, 392, RULE_methodInvocation); + enterRule(_localctx, 394, RULE_methodInvocation); int _la; try { - setState(2372); - switch ( getInterpreter().adaptivePredict(_input,264,_ctx) ) { + setState(2378); + switch ( getInterpreter().adaptivePredict(_input,265,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(2304); + setState(2310); methodName(); - setState(2305); + setState(2311); match(LPAREN); - setState(2307); + setState(2313); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(2306); + setState(2312); argumentList(); } } - setState(2309); + setState(2315); match(RPAREN); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(2311); + setState(2317); typeName(); - setState(2312); + setState(2318); match(DOT); - setState(2314); + setState(2320); _la = _input.LA(1); if (_la==LT) { { - setState(2313); + setState(2319); typeArguments(); } } - setState(2316); + setState(2322); match(Identifier); - setState(2317); + setState(2323); match(LPAREN); - setState(2319); + setState(2325); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(2318); + setState(2324); argumentList(); } } - setState(2321); + setState(2327); match(RPAREN); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(2323); + setState(2329); expressionName(); - setState(2324); + setState(2330); match(DOT); - setState(2326); + setState(2332); _la = _input.LA(1); if (_la==LT) { { - setState(2325); + setState(2331); typeArguments(); } } - setState(2328); + setState(2334); match(Identifier); - setState(2329); + setState(2335); match(LPAREN); - setState(2331); + setState(2337); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(2330); + setState(2336); argumentList(); } } - setState(2333); + setState(2339); match(RPAREN); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(2335); + setState(2341); primary(); - setState(2336); + setState(2342); match(DOT); - setState(2338); + setState(2344); _la = _input.LA(1); if (_la==LT) { { - setState(2337); + setState(2343); typeArguments(); } } - setState(2340); + setState(2346); match(Identifier); - setState(2341); + setState(2347); match(LPAREN); - setState(2343); + setState(2349); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(2342); + setState(2348); argumentList(); } } - setState(2345); + setState(2351); match(RPAREN); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(2347); + setState(2353); match(SUPER); - setState(2348); + setState(2354); match(DOT); - setState(2350); + setState(2356); _la = _input.LA(1); if (_la==LT) { { - setState(2349); + setState(2355); typeArguments(); } } - setState(2352); + setState(2358); match(Identifier); - setState(2353); + setState(2359); match(LPAREN); - setState(2355); + setState(2361); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(2354); + setState(2360); argumentList(); } } - setState(2357); + setState(2363); match(RPAREN); } break; case 6: enterOuterAlt(_localctx, 6); { - setState(2358); + setState(2364); typeName(); - setState(2359); + setState(2365); match(DOT); - setState(2360); + setState(2366); match(SUPER); - setState(2361); + setState(2367); match(DOT); - setState(2363); + setState(2369); _la = _input.LA(1); if (_la==LT) { { - setState(2362); + setState(2368); typeArguments(); } } - setState(2365); + setState(2371); match(Identifier); - setState(2366); + setState(2372); match(LPAREN); - setState(2368); + setState(2374); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(2367); + setState(2373); argumentList(); } } - setState(2370); + setState(2376); match(RPAREN); } break; @@ -12353,36 +12406,36 @@ public class Java8Parser extends Parser { public final MethodInvocation_lf_primaryContext methodInvocation_lf_primary() throws RecognitionException { MethodInvocation_lf_primaryContext _localctx = new MethodInvocation_lf_primaryContext(_ctx, getState()); - enterRule(_localctx, 394, RULE_methodInvocation_lf_primary); + enterRule(_localctx, 396, RULE_methodInvocation_lf_primary); int _la; try { enterOuterAlt(_localctx, 1); { - setState(2374); + setState(2380); match(DOT); - setState(2376); + setState(2382); _la = _input.LA(1); if (_la==LT) { { - setState(2375); + setState(2381); typeArguments(); } } - setState(2378); + setState(2384); match(Identifier); - setState(2379); + setState(2385); match(LPAREN); - setState(2381); + setState(2387); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(2380); + setState(2386); argumentList(); } } - setState(2383); + setState(2389); match(RPAREN); } } @@ -12422,164 +12475,164 @@ public class Java8Parser extends Parser { public final MethodInvocation_lfno_primaryContext methodInvocation_lfno_primary() throws RecognitionException { MethodInvocation_lfno_primaryContext _localctx = new MethodInvocation_lfno_primaryContext(_ctx, getState()); - enterRule(_localctx, 396, RULE_methodInvocation_lfno_primary); + enterRule(_localctx, 398, RULE_methodInvocation_lfno_primary); int _la; try { - setState(2441); - switch ( getInterpreter().adaptivePredict(_input,276,_ctx) ) { + setState(2447); + switch ( getInterpreter().adaptivePredict(_input,277,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(2385); + setState(2391); methodName(); - setState(2386); + setState(2392); match(LPAREN); - setState(2388); + setState(2394); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(2387); + setState(2393); argumentList(); } } - setState(2390); + setState(2396); match(RPAREN); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(2392); + setState(2398); typeName(); - setState(2393); + setState(2399); match(DOT); - setState(2395); + setState(2401); _la = _input.LA(1); if (_la==LT) { { - setState(2394); + setState(2400); typeArguments(); } } - setState(2397); + setState(2403); match(Identifier); - setState(2398); + setState(2404); match(LPAREN); - setState(2400); + setState(2406); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(2399); + setState(2405); argumentList(); } } - setState(2402); + setState(2408); match(RPAREN); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(2404); + setState(2410); expressionName(); - setState(2405); + setState(2411); match(DOT); - setState(2407); + setState(2413); _la = _input.LA(1); if (_la==LT) { { - setState(2406); + setState(2412); typeArguments(); } } - setState(2409); + setState(2415); match(Identifier); - setState(2410); + setState(2416); match(LPAREN); - setState(2412); + setState(2418); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(2411); + setState(2417); argumentList(); } } - setState(2414); + setState(2420); match(RPAREN); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(2416); + setState(2422); match(SUPER); - setState(2417); + setState(2423); match(DOT); - setState(2419); + setState(2425); _la = _input.LA(1); if (_la==LT) { { - setState(2418); + setState(2424); typeArguments(); } } - setState(2421); + setState(2427); match(Identifier); - setState(2422); + setState(2428); match(LPAREN); - setState(2424); + setState(2430); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(2423); + setState(2429); argumentList(); } } - setState(2426); + setState(2432); match(RPAREN); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(2427); + setState(2433); typeName(); - setState(2428); + setState(2434); match(DOT); - setState(2429); + setState(2435); match(SUPER); - setState(2430); + setState(2436); match(DOT); - setState(2432); + setState(2438); _la = _input.LA(1); if (_la==LT) { { - setState(2431); + setState(2437); typeArguments(); } } - setState(2434); + setState(2440); match(Identifier); - setState(2435); + setState(2441); match(LPAREN); - setState(2437); + setState(2443); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (BANG - 69)) | (1L << (TILDE - 69)) | (1L << (INC - 69)) | (1L << (DEC - 69)) | (1L << (ADD - 69)) | (1L << (SUB - 69)) | (1L << (Identifier - 69)) | (1L << (AT - 69)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << NEW) | (1L << SHORT) | (1L << SUPER) | (1L << THIS) | (1L << VOID) | (1L << IntegerLiteral) | (1L << FloatingPointLiteral) | (1L << BooleanLiteral) | (1L << CharacterLiteral) | (1L << StringLiteral) | (1L << NullLiteral) | (1L << LPAREN))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (BANG - 70)) | (1L << (TILDE - 70)) | (1L << (INC - 70)) | (1L << (DEC - 70)) | (1L << (ADD - 70)) | (1L << (SUB - 70)) | (1L << (Identifier - 70)) | (1L << (AT - 70)))) != 0)) { { - setState(2436); + setState(2442); argumentList(); } } - setState(2439); + setState(2445); match(RPAREN); } break; @@ -12611,26 +12664,26 @@ public class Java8Parser extends Parser { public final ArgumentListContext argumentList() throws RecognitionException { ArgumentListContext _localctx = new ArgumentListContext(_ctx, getState()); - enterRule(_localctx, 398, RULE_argumentList); + enterRule(_localctx, 400, RULE_argumentList); int _la; try { enterOuterAlt(_localctx, 1); { - setState(2443); + setState(2449); expression(); - setState(2448); + setState(2454); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { - setState(2444); + setState(2450); match(COMMA); - setState(2445); + setState(2451); expression(); } } - setState(2450); + setState(2456); _errHandler.sync(this); _la = _input.LA(1); } @@ -12678,143 +12731,143 @@ public class Java8Parser extends Parser { public final MethodReferenceContext methodReference() throws RecognitionException { MethodReferenceContext _localctx = new MethodReferenceContext(_ctx, getState()); - enterRule(_localctx, 400, RULE_methodReference); + enterRule(_localctx, 402, RULE_methodReference); int _la; try { - setState(2498); - switch ( getInterpreter().adaptivePredict(_input,284,_ctx) ) { + setState(2504); + switch ( getInterpreter().adaptivePredict(_input,285,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(2451); + setState(2457); expressionName(); - setState(2452); + setState(2458); match(COLONCOLON); - setState(2454); + setState(2460); _la = _input.LA(1); if (_la==LT) { { - setState(2453); + setState(2459); typeArguments(); } } - setState(2456); + setState(2462); match(Identifier); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(2458); + setState(2464); referenceType(); - setState(2459); + setState(2465); match(COLONCOLON); - setState(2461); + setState(2467); _la = _input.LA(1); if (_la==LT) { { - setState(2460); + setState(2466); typeArguments(); } } - setState(2463); + setState(2469); match(Identifier); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(2465); + setState(2471); primary(); - setState(2466); + setState(2472); match(COLONCOLON); - setState(2468); + setState(2474); _la = _input.LA(1); if (_la==LT) { { - setState(2467); + setState(2473); typeArguments(); } } - setState(2470); + setState(2476); match(Identifier); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(2472); + setState(2478); match(SUPER); - setState(2473); + setState(2479); match(COLONCOLON); - setState(2475); + setState(2481); _la = _input.LA(1); if (_la==LT) { { - setState(2474); + setState(2480); typeArguments(); } } - setState(2477); + setState(2483); match(Identifier); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(2478); + setState(2484); typeName(); - setState(2479); + setState(2485); match(DOT); - setState(2480); + setState(2486); match(SUPER); - setState(2481); + setState(2487); match(COLONCOLON); - setState(2483); + setState(2489); _la = _input.LA(1); if (_la==LT) { { - setState(2482); + setState(2488); typeArguments(); } } - setState(2485); + setState(2491); match(Identifier); } break; case 6: enterOuterAlt(_localctx, 6); { - setState(2487); + setState(2493); classType(); - setState(2488); + setState(2494); match(COLONCOLON); - setState(2490); + setState(2496); _la = _input.LA(1); if (_la==LT) { { - setState(2489); + setState(2495); typeArguments(); } } - setState(2492); + setState(2498); match(NEW); } break; case 7: enterOuterAlt(_localctx, 7); { - setState(2494); + setState(2500); arrayType(); - setState(2495); + setState(2501); match(COLONCOLON); - setState(2496); + setState(2502); match(NEW); } break; @@ -12844,23 +12897,23 @@ public class Java8Parser extends Parser { public final MethodReference_lf_primaryContext methodReference_lf_primary() throws RecognitionException { MethodReference_lf_primaryContext _localctx = new MethodReference_lf_primaryContext(_ctx, getState()); - enterRule(_localctx, 402, RULE_methodReference_lf_primary); + enterRule(_localctx, 404, RULE_methodReference_lf_primary); int _la; try { enterOuterAlt(_localctx, 1); { - setState(2500); + setState(2506); match(COLONCOLON); - setState(2502); + setState(2508); _la = _input.LA(1); if (_la==LT) { { - setState(2501); + setState(2507); typeArguments(); } } - setState(2504); + setState(2510); match(Identifier); } } @@ -12903,123 +12956,123 @@ public class Java8Parser extends Parser { public final MethodReference_lfno_primaryContext methodReference_lfno_primary() throws RecognitionException { MethodReference_lfno_primaryContext _localctx = new MethodReference_lfno_primaryContext(_ctx, getState()); - enterRule(_localctx, 404, RULE_methodReference_lfno_primary); + enterRule(_localctx, 406, RULE_methodReference_lfno_primary); int _la; try { - setState(2546); - switch ( getInterpreter().adaptivePredict(_input,291,_ctx) ) { + setState(2552); + switch ( getInterpreter().adaptivePredict(_input,292,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(2506); + setState(2512); expressionName(); - setState(2507); + setState(2513); match(COLONCOLON); - setState(2509); + setState(2515); _la = _input.LA(1); if (_la==LT) { { - setState(2508); + setState(2514); typeArguments(); } } - setState(2511); + setState(2517); match(Identifier); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(2513); + setState(2519); referenceType(); - setState(2514); + setState(2520); match(COLONCOLON); - setState(2516); + setState(2522); _la = _input.LA(1); if (_la==LT) { { - setState(2515); + setState(2521); typeArguments(); } } - setState(2518); + setState(2524); match(Identifier); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(2520); + setState(2526); match(SUPER); - setState(2521); + setState(2527); match(COLONCOLON); - setState(2523); + setState(2529); _la = _input.LA(1); if (_la==LT) { { - setState(2522); + setState(2528); typeArguments(); } } - setState(2525); + setState(2531); match(Identifier); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(2526); + setState(2532); typeName(); - setState(2527); + setState(2533); match(DOT); - setState(2528); + setState(2534); match(SUPER); - setState(2529); + setState(2535); match(COLONCOLON); - setState(2531); + setState(2537); _la = _input.LA(1); if (_la==LT) { { - setState(2530); + setState(2536); typeArguments(); } } - setState(2533); + setState(2539); match(Identifier); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(2535); + setState(2541); classType(); - setState(2536); + setState(2542); match(COLONCOLON); - setState(2538); + setState(2544); _la = _input.LA(1); if (_la==LT) { { - setState(2537); + setState(2543); typeArguments(); } } - setState(2540); + setState(2546); match(NEW); } break; case 6: enterOuterAlt(_localctx, 6); { - setState(2542); + setState(2548); arrayType(); - setState(2543); + setState(2549); match(COLONCOLON); - setState(2544); + setState(2550); match(NEW); } break; @@ -13060,37 +13113,17 @@ public class Java8Parser extends Parser { public final ArrayCreationExpressionContext arrayCreationExpression() throws RecognitionException { ArrayCreationExpressionContext _localctx = new ArrayCreationExpressionContext(_ctx, getState()); - enterRule(_localctx, 406, RULE_arrayCreationExpression); + enterRule(_localctx, 408, RULE_arrayCreationExpression); try { - setState(2570); - switch ( getInterpreter().adaptivePredict(_input,294,_ctx) ) { + setState(2576); + switch ( getInterpreter().adaptivePredict(_input,295,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(2548); - match(NEW); - setState(2549); - primitiveType(); - setState(2550); - dimExprs(); - setState(2552); - switch ( getInterpreter().adaptivePredict(_input,292,_ctx) ) { - case 1: - { - setState(2551); - dims(); - } - break; - } - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { setState(2554); match(NEW); setState(2555); - classOrInterfaceType(); + primitiveType(); setState(2556); dimExprs(); setState(2558); @@ -13104,29 +13137,49 @@ public class Java8Parser extends Parser { } } break; - case 3: - enterOuterAlt(_localctx, 3); + case 2: + enterOuterAlt(_localctx, 2); { setState(2560); match(NEW); setState(2561); - primitiveType(); + classOrInterfaceType(); setState(2562); + dimExprs(); + setState(2564); + switch ( getInterpreter().adaptivePredict(_input,294,_ctx) ) { + case 1: + { + setState(2563); + dims(); + } + break; + } + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(2566); + match(NEW); + setState(2567); + primitiveType(); + setState(2568); dims(); - setState(2563); + setState(2569); arrayInitializer(); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(2565); + setState(2571); match(NEW); - setState(2566); + setState(2572); classOrInterfaceType(); - setState(2567); + setState(2573); dims(); - setState(2568); + setState(2574); arrayInitializer(); } break; @@ -13158,28 +13211,28 @@ public class Java8Parser extends Parser { public final DimExprsContext dimExprs() throws RecognitionException { DimExprsContext _localctx = new DimExprsContext(_ctx, getState()); - enterRule(_localctx, 408, RULE_dimExprs); + enterRule(_localctx, 410, RULE_dimExprs); try { int _alt; enterOuterAlt(_localctx, 1); { - setState(2572); + setState(2578); dimExpr(); - setState(2576); + setState(2582); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,295,_ctx); + _alt = getInterpreter().adaptivePredict(_input,296,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(2573); + setState(2579); dimExpr(); } } } - setState(2578); + setState(2584); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,295,_ctx); + _alt = getInterpreter().adaptivePredict(_input,296,_ctx); } } } @@ -13212,30 +13265,30 @@ public class Java8Parser extends Parser { public final DimExprContext dimExpr() throws RecognitionException { DimExprContext _localctx = new DimExprContext(_ctx, getState()); - enterRule(_localctx, 410, RULE_dimExpr); + enterRule(_localctx, 412, RULE_dimExpr); int _la; try { enterOuterAlt(_localctx, 1); { - setState(2582); + setState(2588); _errHandler.sync(this); _la = _input.LA(1); while (_la==AT) { { { - setState(2579); + setState(2585); annotation(); } } - setState(2584); + setState(2590); _errHandler.sync(this); _la = _input.LA(1); } - setState(2585); + setState(2591); match(LBRACK); - setState(2586); + setState(2592); expression(); - setState(2587); + setState(2593); match(RBRACK); } } @@ -13262,11 +13315,11 @@ public class Java8Parser extends Parser { public final ConstantExpressionContext constantExpression() throws RecognitionException { ConstantExpressionContext _localctx = new ConstantExpressionContext(_ctx, getState()); - enterRule(_localctx, 412, RULE_constantExpression); + enterRule(_localctx, 414, RULE_constantExpression); try { enterOuterAlt(_localctx, 1); { - setState(2589); + setState(2595); expression(); } } @@ -13296,21 +13349,21 @@ public class Java8Parser extends Parser { public final ExpressionContext expression() throws RecognitionException { ExpressionContext _localctx = new ExpressionContext(_ctx, getState()); - enterRule(_localctx, 414, RULE_expression); + enterRule(_localctx, 416, RULE_expression); try { - setState(2593); - switch ( getInterpreter().adaptivePredict(_input,297,_ctx) ) { + setState(2599); + switch ( getInterpreter().adaptivePredict(_input,298,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(2591); + setState(2597); lambdaExpression(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(2592); + setState(2598); assignmentExpression(); } break; @@ -13342,15 +13395,15 @@ public class Java8Parser extends Parser { public final LambdaExpressionContext lambdaExpression() throws RecognitionException { LambdaExpressionContext _localctx = new LambdaExpressionContext(_ctx, getState()); - enterRule(_localctx, 416, RULE_lambdaExpression); + enterRule(_localctx, 418, RULE_lambdaExpression); try { enterOuterAlt(_localctx, 1); { - setState(2595); + setState(2601); lambdaParameters(); - setState(2596); + setState(2602); match(ARROW); - setState(2597); + setState(2603); lambdaBody(); } } @@ -13378,33 +13431,33 @@ public class Java8Parser extends Parser { public final LambdaParametersContext lambdaParameters() throws RecognitionException { LambdaParametersContext _localctx = new LambdaParametersContext(_ctx, getState()); - enterRule(_localctx, 418, RULE_lambdaParameters); + enterRule(_localctx, 420, RULE_lambdaParameters); int _la; try { - setState(2605); + setState(2611); switch (_input.LA(1)) { case Identifier: enterOuterAlt(_localctx, 1); { - setState(2599); + setState(2605); match(Identifier); } break; case LPAREN: enterOuterAlt(_localctx, 2); { - setState(2600); + setState(2606); match(LPAREN); - setState(2602); + setState(2608); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << BYTE) | (1L << CHAR) | (1L << DOUBLE) | (1L << FINAL) | (1L << FLOAT) | (1L << INT) | (1L << LONG) | (1L << SHORT))) != 0) || _la==Identifier || _la==AT) { { - setState(2601); + setState(2607); formalParameterList(); } } - setState(2604); + setState(2610); match(RPAREN); } break; @@ -13436,26 +13489,26 @@ public class Java8Parser extends Parser { public final InferredFormalParameterListContext inferredFormalParameterList() throws RecognitionException { InferredFormalParameterListContext _localctx = new InferredFormalParameterListContext(_ctx, getState()); - enterRule(_localctx, 420, RULE_inferredFormalParameterList); + enterRule(_localctx, 422, RULE_inferredFormalParameterList); int _la; try { enterOuterAlt(_localctx, 1); { - setState(2607); + setState(2613); match(Identifier); - setState(2612); + setState(2618); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { - setState(2608); + setState(2614); match(COMMA); - setState(2609); + setState(2615); match(Identifier); } } - setState(2614); + setState(2620); _errHandler.sync(this); _la = _input.LA(1); } @@ -13487,9 +13540,9 @@ public class Java8Parser extends Parser { public final LambdaBodyContext lambdaBody() throws RecognitionException { LambdaBodyContext _localctx = new LambdaBodyContext(_ctx, getState()); - enterRule(_localctx, 422, RULE_lambdaBody); + enterRule(_localctx, 424, RULE_lambdaBody); try { - setState(2617); + setState(2623); switch (_input.LA(1)) { case BOOLEAN: case BYTE: @@ -13520,14 +13573,14 @@ public class Java8Parser extends Parser { case AT: enterOuterAlt(_localctx, 1); { - setState(2615); + setState(2621); expression(); } break; case LBRACE: enterOuterAlt(_localctx, 2); { - setState(2616); + setState(2622); block(); } break; @@ -13561,21 +13614,21 @@ public class Java8Parser extends Parser { public final AssignmentExpressionContext assignmentExpression() throws RecognitionException { AssignmentExpressionContext _localctx = new AssignmentExpressionContext(_ctx, getState()); - enterRule(_localctx, 424, RULE_assignmentExpression); + enterRule(_localctx, 426, RULE_assignmentExpression); try { - setState(2621); - switch ( getInterpreter().adaptivePredict(_input,302,_ctx) ) { + setState(2627); + switch ( getInterpreter().adaptivePredict(_input,303,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(2619); + setState(2625); conditionalExpression(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(2620); + setState(2626); assignment(); } break; @@ -13610,15 +13663,15 @@ public class Java8Parser extends Parser { public final AssignmentContext assignment() throws RecognitionException { AssignmentContext _localctx = new AssignmentContext(_ctx, getState()); - enterRule(_localctx, 426, RULE_assignment); + enterRule(_localctx, 428, RULE_assignment); try { enterOuterAlt(_localctx, 1); { - setState(2623); + setState(2629); leftHandSide(); - setState(2624); + setState(2630); assignmentOperator(); - setState(2625); + setState(2631); expression(); } } @@ -13651,28 +13704,28 @@ public class Java8Parser extends Parser { public final LeftHandSideContext leftHandSide() throws RecognitionException { LeftHandSideContext _localctx = new LeftHandSideContext(_ctx, getState()); - enterRule(_localctx, 428, RULE_leftHandSide); + enterRule(_localctx, 430, RULE_leftHandSide); try { - setState(2630); - switch ( getInterpreter().adaptivePredict(_input,303,_ctx) ) { + setState(2636); + switch ( getInterpreter().adaptivePredict(_input,304,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(2627); + setState(2633); expressionName(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(2628); + setState(2634); fieldAccess(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(2629); + setState(2635); arrayAccess(); } break; @@ -13698,14 +13751,14 @@ public class Java8Parser extends Parser { public final AssignmentOperatorContext assignmentOperator() throws RecognitionException { AssignmentOperatorContext _localctx = new AssignmentOperatorContext(_ctx, getState()); - enterRule(_localctx, 430, RULE_assignmentOperator); + enterRule(_localctx, 432, RULE_assignmentOperator); int _la; try { enterOuterAlt(_localctx, 1); { - setState(2632); + setState(2638); _la = _input.LA(1); - if ( !(((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (ASSIGN - 66)) | (1L << (ADD_ASSIGN - 66)) | (1L << (SUB_ASSIGN - 66)) | (1L << (MUL_ASSIGN - 66)) | (1L << (DIV_ASSIGN - 66)) | (1L << (AND_ASSIGN - 66)) | (1L << (OR_ASSIGN - 66)) | (1L << (XOR_ASSIGN - 66)) | (1L << (MOD_ASSIGN - 66)) | (1L << (LSHIFT_ASSIGN - 66)) | (1L << (RSHIFT_ASSIGN - 66)) | (1L << (URSHIFT_ASSIGN - 66)))) != 0)) ) { + if ( !(((((_la - 67)) & ~0x3f) == 0 && ((1L << (_la - 67)) & ((1L << (ASSIGN - 67)) | (1L << (ADD_ASSIGN - 67)) | (1L << (SUB_ASSIGN - 67)) | (1L << (MUL_ASSIGN - 67)) | (1L << (DIV_ASSIGN - 67)) | (1L << (AND_ASSIGN - 67)) | (1L << (OR_ASSIGN - 67)) | (1L << (XOR_ASSIGN - 67)) | (1L << (MOD_ASSIGN - 67)) | (1L << (LSHIFT_ASSIGN - 67)) | (1L << (RSHIFT_ASSIGN - 67)) | (1L << (URSHIFT_ASSIGN - 67)))) != 0)) ) { _errHandler.recoverInline(this); } else { consume(); @@ -13741,29 +13794,29 @@ public class Java8Parser extends Parser { public final ConditionalExpressionContext conditionalExpression() throws RecognitionException { ConditionalExpressionContext _localctx = new ConditionalExpressionContext(_ctx, getState()); - enterRule(_localctx, 432, RULE_conditionalExpression); + enterRule(_localctx, 434, RULE_conditionalExpression); try { - setState(2641); - switch ( getInterpreter().adaptivePredict(_input,304,_ctx) ) { + setState(2647); + switch ( getInterpreter().adaptivePredict(_input,305,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(2634); + setState(2640); conditionalOrExpression(0); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(2635); + setState(2641); conditionalOrExpression(0); - setState(2636); + setState(2642); match(QUESTION); - setState(2637); + setState(2643); expression(); - setState(2638); + setState(2644); match(COLON); - setState(2639); + setState(2645); conditionalExpression(); } break; @@ -13802,20 +13855,20 @@ public class Java8Parser extends Parser { int _parentState = getState(); ConditionalOrExpressionContext _localctx = new ConditionalOrExpressionContext(_ctx, _parentState); ConditionalOrExpressionContext _prevctx = _localctx; - int _startState = 434; - enterRecursionRule(_localctx, 434, RULE_conditionalOrExpression, _p); + int _startState = 436; + enterRecursionRule(_localctx, 436, RULE_conditionalOrExpression, _p); try { int _alt; enterOuterAlt(_localctx, 1); { { - setState(2644); + setState(2650); conditionalAndExpression(0); } _ctx.stop = _input.LT(-1); - setState(2651); + setState(2657); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,305,_ctx); + _alt = getInterpreter().adaptivePredict(_input,306,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); @@ -13824,18 +13877,18 @@ public class Java8Parser extends Parser { { _localctx = new ConditionalOrExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_conditionalOrExpression); - setState(2646); + setState(2652); if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(2647); + setState(2653); match(OR); - setState(2648); + setState(2654); conditionalAndExpression(0); } } } - setState(2653); + setState(2659); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,305,_ctx); + _alt = getInterpreter().adaptivePredict(_input,306,_ctx); } } } @@ -13872,20 +13925,20 @@ public class Java8Parser extends Parser { int _parentState = getState(); ConditionalAndExpressionContext _localctx = new ConditionalAndExpressionContext(_ctx, _parentState); ConditionalAndExpressionContext _prevctx = _localctx; - int _startState = 436; - enterRecursionRule(_localctx, 436, RULE_conditionalAndExpression, _p); + int _startState = 438; + enterRecursionRule(_localctx, 438, RULE_conditionalAndExpression, _p); try { int _alt; enterOuterAlt(_localctx, 1); { { - setState(2655); + setState(2661); inclusiveOrExpression(0); } _ctx.stop = _input.LT(-1); - setState(2662); + setState(2668); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,306,_ctx); + _alt = getInterpreter().adaptivePredict(_input,307,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); @@ -13894,18 +13947,18 @@ public class Java8Parser extends Parser { { _localctx = new ConditionalAndExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_conditionalAndExpression); - setState(2657); + setState(2663); if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(2658); + setState(2664); match(AND); - setState(2659); + setState(2665); inclusiveOrExpression(0); } } } - setState(2664); + setState(2670); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,306,_ctx); + _alt = getInterpreter().adaptivePredict(_input,307,_ctx); } } } @@ -13942,20 +13995,20 @@ public class Java8Parser extends Parser { int _parentState = getState(); InclusiveOrExpressionContext _localctx = new InclusiveOrExpressionContext(_ctx, _parentState); InclusiveOrExpressionContext _prevctx = _localctx; - int _startState = 438; - enterRecursionRule(_localctx, 438, RULE_inclusiveOrExpression, _p); + int _startState = 440; + enterRecursionRule(_localctx, 440, RULE_inclusiveOrExpression, _p); try { int _alt; enterOuterAlt(_localctx, 1); { { - setState(2666); + setState(2672); exclusiveOrExpression(0); } _ctx.stop = _input.LT(-1); - setState(2673); + setState(2679); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,307,_ctx); + _alt = getInterpreter().adaptivePredict(_input,308,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); @@ -13964,18 +14017,18 @@ public class Java8Parser extends Parser { { _localctx = new InclusiveOrExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_inclusiveOrExpression); - setState(2668); + setState(2674); if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(2669); + setState(2675); match(BITOR); - setState(2670); + setState(2676); exclusiveOrExpression(0); } } } - setState(2675); + setState(2681); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,307,_ctx); + _alt = getInterpreter().adaptivePredict(_input,308,_ctx); } } } @@ -14012,20 +14065,20 @@ public class Java8Parser extends Parser { int _parentState = getState(); ExclusiveOrExpressionContext _localctx = new ExclusiveOrExpressionContext(_ctx, _parentState); ExclusiveOrExpressionContext _prevctx = _localctx; - int _startState = 440; - enterRecursionRule(_localctx, 440, RULE_exclusiveOrExpression, _p); + int _startState = 442; + enterRecursionRule(_localctx, 442, RULE_exclusiveOrExpression, _p); try { int _alt; enterOuterAlt(_localctx, 1); { { - setState(2677); + setState(2683); andExpression(0); } _ctx.stop = _input.LT(-1); - setState(2684); + setState(2690); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,308,_ctx); + _alt = getInterpreter().adaptivePredict(_input,309,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); @@ -14034,18 +14087,18 @@ public class Java8Parser extends Parser { { _localctx = new ExclusiveOrExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_exclusiveOrExpression); - setState(2679); + setState(2685); if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(2680); + setState(2686); match(CARET); - setState(2681); + setState(2687); andExpression(0); } } } - setState(2686); + setState(2692); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,308,_ctx); + _alt = getInterpreter().adaptivePredict(_input,309,_ctx); } } } @@ -14082,20 +14135,20 @@ public class Java8Parser extends Parser { int _parentState = getState(); AndExpressionContext _localctx = new AndExpressionContext(_ctx, _parentState); AndExpressionContext _prevctx = _localctx; - int _startState = 442; - enterRecursionRule(_localctx, 442, RULE_andExpression, _p); + int _startState = 444; + enterRecursionRule(_localctx, 444, RULE_andExpression, _p); try { int _alt; enterOuterAlt(_localctx, 1); { { - setState(2688); + setState(2694); equalityExpression(0); } _ctx.stop = _input.LT(-1); - setState(2695); + setState(2701); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,309,_ctx); + _alt = getInterpreter().adaptivePredict(_input,310,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); @@ -14104,18 +14157,18 @@ public class Java8Parser extends Parser { { _localctx = new AndExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_andExpression); - setState(2690); + setState(2696); if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(2691); + setState(2697); match(BITAND); - setState(2692); + setState(2698); equalityExpression(0); } } } - setState(2697); + setState(2703); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,309,_ctx); + _alt = getInterpreter().adaptivePredict(_input,310,_ctx); } } } @@ -14152,36 +14205,36 @@ public class Java8Parser extends Parser { int _parentState = getState(); EqualityExpressionContext _localctx = new EqualityExpressionContext(_ctx, _parentState); EqualityExpressionContext _prevctx = _localctx; - int _startState = 444; - enterRecursionRule(_localctx, 444, RULE_equalityExpression, _p); + int _startState = 446; + enterRecursionRule(_localctx, 446, RULE_equalityExpression, _p); try { int _alt; enterOuterAlt(_localctx, 1); { { - setState(2699); + setState(2705); relationalExpression(0); } _ctx.stop = _input.LT(-1); - setState(2709); + setState(2715); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,311,_ctx); + _alt = getInterpreter().adaptivePredict(_input,312,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { - setState(2707); - switch ( getInterpreter().adaptivePredict(_input,310,_ctx) ) { + setState(2713); + switch ( getInterpreter().adaptivePredict(_input,311,_ctx) ) { case 1: { _localctx = new EqualityExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_equalityExpression); - setState(2701); + setState(2707); if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(2702); + setState(2708); match(EQUAL); - setState(2703); + setState(2709); relationalExpression(0); } break; @@ -14189,20 +14242,20 @@ public class Java8Parser extends Parser { { _localctx = new EqualityExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_equalityExpression); - setState(2704); + setState(2710); if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(2705); + setState(2711); match(NOTEQUAL); - setState(2706); + setState(2712); relationalExpression(0); } break; } } } - setState(2711); + setState(2717); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,311,_ctx); + _alt = getInterpreter().adaptivePredict(_input,312,_ctx); } } } @@ -14242,36 +14295,36 @@ public class Java8Parser extends Parser { int _parentState = getState(); RelationalExpressionContext _localctx = new RelationalExpressionContext(_ctx, _parentState); RelationalExpressionContext _prevctx = _localctx; - int _startState = 446; - enterRecursionRule(_localctx, 446, RULE_relationalExpression, _p); + int _startState = 448; + enterRecursionRule(_localctx, 448, RULE_relationalExpression, _p); try { int _alt; enterOuterAlt(_localctx, 1); { { - setState(2713); + setState(2719); shiftExpression(0); } _ctx.stop = _input.LT(-1); - setState(2732); + setState(2738); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,313,_ctx); + _alt = getInterpreter().adaptivePredict(_input,314,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { - setState(2730); - switch ( getInterpreter().adaptivePredict(_input,312,_ctx) ) { + setState(2736); + switch ( getInterpreter().adaptivePredict(_input,313,_ctx) ) { case 1: { _localctx = new RelationalExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression); - setState(2715); + setState(2721); if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); - setState(2716); + setState(2722); match(LT); - setState(2717); + setState(2723); shiftExpression(0); } break; @@ -14279,11 +14332,11 @@ public class Java8Parser extends Parser { { _localctx = new RelationalExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression); - setState(2718); + setState(2724); if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); - setState(2719); + setState(2725); match(GT); - setState(2720); + setState(2726); shiftExpression(0); } break; @@ -14291,11 +14344,11 @@ public class Java8Parser extends Parser { { _localctx = new RelationalExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression); - setState(2721); + setState(2727); if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); - setState(2722); + setState(2728); match(LE); - setState(2723); + setState(2729); shiftExpression(0); } break; @@ -14303,11 +14356,11 @@ public class Java8Parser extends Parser { { _localctx = new RelationalExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression); - setState(2724); + setState(2730); if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(2725); + setState(2731); match(GE); - setState(2726); + setState(2732); shiftExpression(0); } break; @@ -14315,20 +14368,20 @@ public class Java8Parser extends Parser { { _localctx = new RelationalExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression); - setState(2727); + setState(2733); if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(2728); + setState(2734); match(INSTANCEOF); - setState(2729); + setState(2735); referenceType(); } break; } } } - setState(2734); + setState(2740); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,313,_ctx); + _alt = getInterpreter().adaptivePredict(_input,314,_ctx); } } } @@ -14365,38 +14418,38 @@ public class Java8Parser extends Parser { int _parentState = getState(); ShiftExpressionContext _localctx = new ShiftExpressionContext(_ctx, _parentState); ShiftExpressionContext _prevctx = _localctx; - int _startState = 448; - enterRecursionRule(_localctx, 448, RULE_shiftExpression, _p); + int _startState = 450; + enterRecursionRule(_localctx, 450, RULE_shiftExpression, _p); try { int _alt; enterOuterAlt(_localctx, 1); { { - setState(2736); + setState(2742); additiveExpression(0); } _ctx.stop = _input.LT(-1); - setState(2753); + setState(2759); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,315,_ctx); + _alt = getInterpreter().adaptivePredict(_input,316,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { - setState(2751); - switch ( getInterpreter().adaptivePredict(_input,314,_ctx) ) { + setState(2757); + switch ( getInterpreter().adaptivePredict(_input,315,_ctx) ) { case 1: { _localctx = new ShiftExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_shiftExpression); - setState(2738); + setState(2744); if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); - setState(2739); + setState(2745); match(LT); - setState(2740); + setState(2746); match(LT); - setState(2741); + setState(2747); additiveExpression(0); } break; @@ -14404,13 +14457,13 @@ public class Java8Parser extends Parser { { _localctx = new ShiftExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_shiftExpression); - setState(2742); + setState(2748); if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(2743); + setState(2749); match(GT); - setState(2744); + setState(2750); match(GT); - setState(2745); + setState(2751); additiveExpression(0); } break; @@ -14418,24 +14471,24 @@ public class Java8Parser extends Parser { { _localctx = new ShiftExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_shiftExpression); - setState(2746); + setState(2752); if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(2747); + setState(2753); match(GT); - setState(2748); + setState(2754); match(GT); - setState(2749); + setState(2755); match(GT); - setState(2750); + setState(2756); additiveExpression(0); } break; } } } - setState(2755); + setState(2761); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,315,_ctx); + _alt = getInterpreter().adaptivePredict(_input,316,_ctx); } } } @@ -14472,36 +14525,36 @@ public class Java8Parser extends Parser { int _parentState = getState(); AdditiveExpressionContext _localctx = new AdditiveExpressionContext(_ctx, _parentState); AdditiveExpressionContext _prevctx = _localctx; - int _startState = 450; - enterRecursionRule(_localctx, 450, RULE_additiveExpression, _p); + int _startState = 452; + enterRecursionRule(_localctx, 452, RULE_additiveExpression, _p); try { int _alt; enterOuterAlt(_localctx, 1); { { - setState(2757); + setState(2763); multiplicativeExpression(0); } _ctx.stop = _input.LT(-1); - setState(2767); + setState(2773); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,317,_ctx); + _alt = getInterpreter().adaptivePredict(_input,318,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { - setState(2765); - switch ( getInterpreter().adaptivePredict(_input,316,_ctx) ) { + setState(2771); + switch ( getInterpreter().adaptivePredict(_input,317,_ctx) ) { case 1: { _localctx = new AdditiveExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_additiveExpression); - setState(2759); + setState(2765); if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(2760); + setState(2766); match(ADD); - setState(2761); + setState(2767); multiplicativeExpression(0); } break; @@ -14509,20 +14562,20 @@ public class Java8Parser extends Parser { { _localctx = new AdditiveExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_additiveExpression); - setState(2762); + setState(2768); if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(2763); + setState(2769); match(SUB); - setState(2764); + setState(2770); multiplicativeExpression(0); } break; } } } - setState(2769); + setState(2775); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,317,_ctx); + _alt = getInterpreter().adaptivePredict(_input,318,_ctx); } } } @@ -14559,36 +14612,36 @@ public class Java8Parser extends Parser { int _parentState = getState(); MultiplicativeExpressionContext _localctx = new MultiplicativeExpressionContext(_ctx, _parentState); MultiplicativeExpressionContext _prevctx = _localctx; - int _startState = 452; - enterRecursionRule(_localctx, 452, RULE_multiplicativeExpression, _p); + int _startState = 454; + enterRecursionRule(_localctx, 454, RULE_multiplicativeExpression, _p); try { int _alt; enterOuterAlt(_localctx, 1); { { - setState(2771); + setState(2777); unaryExpression(); } _ctx.stop = _input.LT(-1); - setState(2784); + setState(2790); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,319,_ctx); + _alt = getInterpreter().adaptivePredict(_input,320,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { - setState(2782); - switch ( getInterpreter().adaptivePredict(_input,318,_ctx) ) { + setState(2788); + switch ( getInterpreter().adaptivePredict(_input,319,_ctx) ) { case 1: { _localctx = new MultiplicativeExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_multiplicativeExpression); - setState(2773); + setState(2779); if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); - setState(2774); + setState(2780); match(MUL); - setState(2775); + setState(2781); unaryExpression(); } break; @@ -14596,11 +14649,11 @@ public class Java8Parser extends Parser { { _localctx = new MultiplicativeExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_multiplicativeExpression); - setState(2776); + setState(2782); if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(2777); + setState(2783); match(DIV); - setState(2778); + setState(2784); unaryExpression(); } break; @@ -14608,20 +14661,20 @@ public class Java8Parser extends Parser { { _localctx = new MultiplicativeExpressionContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_multiplicativeExpression); - setState(2779); + setState(2785); if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(2780); + setState(2786); match(MOD); - setState(2781); + setState(2787); unaryExpression(); } break; } } } - setState(2786); + setState(2792); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,319,_ctx); + _alt = getInterpreter().adaptivePredict(_input,320,_ctx); } } } @@ -14657,39 +14710,39 @@ public class Java8Parser extends Parser { public final UnaryExpressionContext unaryExpression() throws RecognitionException { UnaryExpressionContext _localctx = new UnaryExpressionContext(_ctx, getState()); - enterRule(_localctx, 454, RULE_unaryExpression); + enterRule(_localctx, 456, RULE_unaryExpression); try { - setState(2794); + setState(2800); switch (_input.LA(1)) { case INC: enterOuterAlt(_localctx, 1); { - setState(2787); + setState(2793); preIncrementExpression(); } break; case DEC: enterOuterAlt(_localctx, 2); { - setState(2788); + setState(2794); preDecrementExpression(); } break; case ADD: enterOuterAlt(_localctx, 3); { - setState(2789); + setState(2795); match(ADD); - setState(2790); + setState(2796); unaryExpression(); } break; case SUB: enterOuterAlt(_localctx, 4); { - setState(2791); + setState(2797); match(SUB); - setState(2792); + setState(2798); unaryExpression(); } break; @@ -14718,7 +14771,7 @@ public class Java8Parser extends Parser { case AT: enterOuterAlt(_localctx, 5); { - setState(2793); + setState(2799); unaryExpressionNotPlusMinus(); } break; @@ -14749,13 +14802,13 @@ public class Java8Parser extends Parser { public final PreIncrementExpressionContext preIncrementExpression() throws RecognitionException { PreIncrementExpressionContext _localctx = new PreIncrementExpressionContext(_ctx, getState()); - enterRule(_localctx, 456, RULE_preIncrementExpression); + enterRule(_localctx, 458, RULE_preIncrementExpression); try { enterOuterAlt(_localctx, 1); { - setState(2796); + setState(2802); match(INC); - setState(2797); + setState(2803); unaryExpression(); } } @@ -14782,13 +14835,13 @@ public class Java8Parser extends Parser { public final PreDecrementExpressionContext preDecrementExpression() throws RecognitionException { PreDecrementExpressionContext _localctx = new PreDecrementExpressionContext(_ctx, getState()); - enterRule(_localctx, 458, RULE_preDecrementExpression); + enterRule(_localctx, 460, RULE_preDecrementExpression); try { enterOuterAlt(_localctx, 1); { - setState(2799); + setState(2805); match(DEC); - setState(2800); + setState(2806); unaryExpression(); } } @@ -14821,39 +14874,39 @@ public class Java8Parser extends Parser { public final UnaryExpressionNotPlusMinusContext unaryExpressionNotPlusMinus() throws RecognitionException { UnaryExpressionNotPlusMinusContext _localctx = new UnaryExpressionNotPlusMinusContext(_ctx, getState()); - enterRule(_localctx, 460, RULE_unaryExpressionNotPlusMinus); + enterRule(_localctx, 462, RULE_unaryExpressionNotPlusMinus); try { - setState(2808); - switch ( getInterpreter().adaptivePredict(_input,321,_ctx) ) { + setState(2814); + switch ( getInterpreter().adaptivePredict(_input,322,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(2802); + setState(2808); postfixExpression(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(2803); + setState(2809); match(TILDE); - setState(2804); + setState(2810); unaryExpression(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(2805); + setState(2811); match(BANG); - setState(2806); + setState(2812); unaryExpression(); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(2807); + setState(2813); castExpression(); } break; @@ -14897,43 +14950,43 @@ public class Java8Parser extends Parser { public final PostfixExpressionContext postfixExpression() throws RecognitionException { PostfixExpressionContext _localctx = new PostfixExpressionContext(_ctx, getState()); - enterRule(_localctx, 462, RULE_postfixExpression); + enterRule(_localctx, 464, RULE_postfixExpression); try { int _alt; enterOuterAlt(_localctx, 1); { - setState(2812); - switch ( getInterpreter().adaptivePredict(_input,322,_ctx) ) { + setState(2818); + switch ( getInterpreter().adaptivePredict(_input,323,_ctx) ) { case 1: { - setState(2810); + setState(2816); primary(); } break; case 2: { - setState(2811); + setState(2817); expressionName(); } break; } - setState(2818); + setState(2824); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,324,_ctx); + _alt = getInterpreter().adaptivePredict(_input,325,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { - setState(2816); + setState(2822); switch (_input.LA(1)) { case INC: { - setState(2814); + setState(2820); postIncrementExpression_lf_postfixExpression(); } break; case DEC: { - setState(2815); + setState(2821); postDecrementExpression_lf_postfixExpression(); } break; @@ -14942,9 +14995,9 @@ public class Java8Parser extends Parser { } } } - setState(2820); + setState(2826); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,324,_ctx); + _alt = getInterpreter().adaptivePredict(_input,325,_ctx); } } } @@ -14971,13 +15024,13 @@ public class Java8Parser extends Parser { public final PostIncrementExpressionContext postIncrementExpression() throws RecognitionException { PostIncrementExpressionContext _localctx = new PostIncrementExpressionContext(_ctx, getState()); - enterRule(_localctx, 464, RULE_postIncrementExpression); + enterRule(_localctx, 466, RULE_postIncrementExpression); try { enterOuterAlt(_localctx, 1); { - setState(2821); + setState(2827); postfixExpression(); - setState(2822); + setState(2828); match(INC); } } @@ -15001,11 +15054,11 @@ public class Java8Parser extends Parser { public final PostIncrementExpression_lf_postfixExpressionContext postIncrementExpression_lf_postfixExpression() throws RecognitionException { PostIncrementExpression_lf_postfixExpressionContext _localctx = new PostIncrementExpression_lf_postfixExpressionContext(_ctx, getState()); - enterRule(_localctx, 466, RULE_postIncrementExpression_lf_postfixExpression); + enterRule(_localctx, 468, RULE_postIncrementExpression_lf_postfixExpression); try { enterOuterAlt(_localctx, 1); { - setState(2824); + setState(2830); match(INC); } } @@ -15032,13 +15085,13 @@ public class Java8Parser extends Parser { public final PostDecrementExpressionContext postDecrementExpression() throws RecognitionException { PostDecrementExpressionContext _localctx = new PostDecrementExpressionContext(_ctx, getState()); - enterRule(_localctx, 468, RULE_postDecrementExpression); + enterRule(_localctx, 470, RULE_postDecrementExpression); try { enterOuterAlt(_localctx, 1); { - setState(2826); + setState(2832); postfixExpression(); - setState(2827); + setState(2833); match(DEC); } } @@ -15062,11 +15115,11 @@ public class Java8Parser extends Parser { public final PostDecrementExpression_lf_postfixExpressionContext postDecrementExpression_lf_postfixExpression() throws RecognitionException { PostDecrementExpression_lf_postfixExpressionContext _localctx = new PostDecrementExpression_lf_postfixExpressionContext(_ctx, getState()); - enterRule(_localctx, 470, RULE_postDecrementExpression_lf_postfixExpression); + enterRule(_localctx, 472, RULE_postDecrementExpression_lf_postfixExpression); try { enterOuterAlt(_localctx, 1); { - setState(2829); + setState(2835); match(DEC); } } @@ -15111,75 +15164,75 @@ public class Java8Parser extends Parser { public final CastExpressionContext castExpression() throws RecognitionException { CastExpressionContext _localctx = new CastExpressionContext(_ctx, getState()); - enterRule(_localctx, 472, RULE_castExpression); + enterRule(_localctx, 474, RULE_castExpression); int _la; try { - setState(2858); - switch ( getInterpreter().adaptivePredict(_input,327,_ctx) ) { + setState(2864); + switch ( getInterpreter().adaptivePredict(_input,328,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(2831); + setState(2837); match(LPAREN); - setState(2832); + setState(2838); primitiveType(); - setState(2833); + setState(2839); match(RPAREN); - setState(2834); + setState(2840); unaryExpression(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(2836); + setState(2842); match(LPAREN); - setState(2837); + setState(2843); referenceType(); - setState(2841); + setState(2847); _errHandler.sync(this); _la = _input.LA(1); while (_la==BITAND) { { { - setState(2838); + setState(2844); additionalBound(); } } - setState(2843); + setState(2849); _errHandler.sync(this); _la = _input.LA(1); } - setState(2844); + setState(2850); match(RPAREN); - setState(2845); + setState(2851); unaryExpressionNotPlusMinus(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(2847); + setState(2853); match(LPAREN); - setState(2848); + setState(2854); referenceType(); - setState(2852); + setState(2858); _errHandler.sync(this); _la = _input.LA(1); while (_la==BITAND) { { { - setState(2849); + setState(2855); additionalBound(); } } - setState(2854); + setState(2860); _errHandler.sync(this); _la = _input.LA(1); } - setState(2855); + setState(2861); match(RPAREN); - setState(2856); + setState(2862); lambdaExpression(); } break; @@ -15204,25 +15257,25 @@ public class Java8Parser extends Parser { return packageOrTypeName_sempred((PackageOrTypeNameContext)_localctx, predIndex); case 31: return ambiguousName_sempred((AmbiguousNameContext)_localctx, predIndex); - case 217: - return conditionalOrExpression_sempred((ConditionalOrExpressionContext)_localctx, predIndex); case 218: - return conditionalAndExpression_sempred((ConditionalAndExpressionContext)_localctx, predIndex); + return conditionalOrExpression_sempred((ConditionalOrExpressionContext)_localctx, predIndex); case 219: - return inclusiveOrExpression_sempred((InclusiveOrExpressionContext)_localctx, predIndex); + return conditionalAndExpression_sempred((ConditionalAndExpressionContext)_localctx, predIndex); case 220: - return exclusiveOrExpression_sempred((ExclusiveOrExpressionContext)_localctx, predIndex); + return inclusiveOrExpression_sempred((InclusiveOrExpressionContext)_localctx, predIndex); case 221: - return andExpression_sempred((AndExpressionContext)_localctx, predIndex); + return exclusiveOrExpression_sempred((ExclusiveOrExpressionContext)_localctx, predIndex); case 222: - return equalityExpression_sempred((EqualityExpressionContext)_localctx, predIndex); + return andExpression_sempred((AndExpressionContext)_localctx, predIndex); case 223: - return relationalExpression_sempred((RelationalExpressionContext)_localctx, predIndex); + return equalityExpression_sempred((EqualityExpressionContext)_localctx, predIndex); case 224: - return shiftExpression_sempred((ShiftExpressionContext)_localctx, predIndex); + return relationalExpression_sempred((RelationalExpressionContext)_localctx, predIndex); case 225: - return additiveExpression_sempred((AdditiveExpressionContext)_localctx, predIndex); + return shiftExpression_sempred((ShiftExpressionContext)_localctx, predIndex); case 226: + return additiveExpression_sempred((AdditiveExpressionContext)_localctx, predIndex); + case 227: return multiplicativeExpression_sempred((MultiplicativeExpressionContext)_localctx, predIndex); } return true; @@ -15341,7 +15394,7 @@ public class Java8Parser extends Parser { private static final int _serializedATNSegments = 2; private static final String _serializedATNSegment0 = - "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3m\u0b2f\4\2\t\2\4"+ + "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3n\u0b35\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"+ @@ -15379,1196 +15432,1198 @@ public class Java8Parser extends Parser { "\t\u00df\4\u00e0\t\u00e0\4\u00e1\t\u00e1\4\u00e2\t\u00e2\4\u00e3\t\u00e3"+ "\4\u00e4\t\u00e4\4\u00e5\t\u00e5\4\u00e6\t\u00e6\4\u00e7\t\u00e7\4\u00e8"+ "\t\u00e8\4\u00e9\t\u00e9\4\u00ea\t\u00ea\4\u00eb\t\u00eb\4\u00ec\t\u00ec"+ - "\4\u00ed\t\u00ed\4\u00ee\t\u00ee\3\2\3\2\3\3\3\3\5\3\u01e1\n\3\3\4\7\4"+ - "\u01e4\n\4\f\4\16\4\u01e7\13\4\3\4\3\4\7\4\u01eb\n\4\f\4\16\4\u01ee\13"+ - "\4\3\4\5\4\u01f1\n\4\3\5\3\5\5\5\u01f5\n\5\3\6\3\6\3\7\3\7\3\b\3\b\3\b"+ - "\5\b\u01fe\n\b\3\t\3\t\5\t\u0202\n\t\3\t\3\t\7\t\u0206\n\t\f\t\16\t\u0209"+ - "\13\t\3\n\7\n\u020c\n\n\f\n\16\n\u020f\13\n\3\n\3\n\5\n\u0213\n\n\3\n"+ - "\3\n\3\n\7\n\u0218\n\n\f\n\16\n\u021b\13\n\3\n\3\n\5\n\u021f\n\n\5\n\u0221"+ - "\n\n\3\13\3\13\7\13\u0225\n\13\f\13\16\13\u0228\13\13\3\13\3\13\5\13\u022c"+ - "\n\13\3\f\7\f\u022f\n\f\f\f\16\f\u0232\13\f\3\f\3\f\5\f\u0236\n\f\3\r"+ - "\3\r\3\16\3\16\3\17\3\17\3\20\7\20\u023f\n\20\f\20\16\20\u0242\13\20\3"+ - "\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\5\21\u024f\n\21"+ - "\3\22\7\22\u0252\n\22\f\22\16\22\u0255\13\22\3\22\3\22\3\22\7\22\u025a"+ - "\n\22\f\22\16\22\u025d\13\22\3\22\3\22\7\22\u0261\n\22\f\22\16\22\u0264"+ - "\13\22\3\23\7\23\u0267\n\23\f\23\16\23\u026a\13\23\3\23\3\23\5\23\u026e"+ - "\n\23\3\24\3\24\3\25\3\25\3\25\3\25\3\25\7\25\u0277\n\25\f\25\16\25\u027a"+ - "\13\25\5\25\u027c\n\25\3\26\3\26\3\26\3\27\3\27\3\27\3\27\3\30\3\30\3"+ - "\30\7\30\u0288\n\30\f\30\16\30\u028b\13\30\3\31\3\31\5\31\u028f\n\31\3"+ - "\32\7\32\u0292\n\32\f\32\16\32\u0295\13\32\3\32\3\32\5\32\u0299\n\32\3"+ - "\33\3\33\3\33\3\33\5\33\u029f\n\33\3\34\3\34\3\34\3\34\3\34\3\34\7\34"+ - "\u02a7\n\34\f\34\16\34\u02aa\13\34\3\35\3\35\3\35\3\35\3\35\5\35\u02b1"+ - "\n\35\3\36\3\36\3\36\3\36\3\36\3\36\7\36\u02b9\n\36\f\36\16\36\u02bc\13"+ - "\36\3\37\3\37\3\37\3\37\3\37\5\37\u02c3\n\37\3 \3 \3!\3!\3!\3!\3!\3!\7"+ - "!\u02cd\n!\f!\16!\u02d0\13!\3\"\5\"\u02d3\n\"\3\"\7\"\u02d6\n\"\f\"\16"+ - "\"\u02d9\13\"\3\"\7\"\u02dc\n\"\f\"\16\"\u02df\13\"\3\"\3\"\3#\7#\u02e4"+ - "\n#\f#\16#\u02e7\13#\3#\3#\3#\3#\7#\u02ed\n#\f#\16#\u02f0\13#\3#\3#\3"+ - "$\3$\3%\3%\3%\3%\5%\u02fa\n%\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*\5*\u0317\n*\3+\3+\5+\u031b"+ - "\n+\3,\7,\u031e\n,\f,\16,\u0321\13,\3,\3,\3,\5,\u0326\n,\3,\5,\u0329\n"+ - ",\3,\5,\u032c\n,\3,\3,\3-\3-\3-\3-\3-\3-\3-\3-\5-\u0338\n-\3.\3.\3.\3"+ - ".\3/\3/\3/\7/\u0341\n/\f/\16/\u0344\13/\3\60\3\60\3\60\3\61\3\61\3\61"+ - "\3\62\3\62\3\62\7\62\u034f\n\62\f\62\16\62\u0352\13\62\3\63\3\63\7\63"+ - "\u0356\n\63\f\63\16\63\u0359\13\63\3\63\3\63\3\64\3\64\3\64\5\64\u0360"+ - "\n\64\3\65\3\65\3\65\3\65\3\65\5\65\u0367\n\65\3\66\7\66\u036a\n\66\f"+ - "\66\16\66\u036d\13\66\3\66\5\66\u0370\n\66\3\66\3\66\3\66\3\67\3\67\3"+ - "\67\3\67\3\67\3\67\3\67\3\67\5\67\u037d\n\67\38\38\38\78\u0382\n8\f8\16"+ - "8\u0385\138\39\39\39\59\u038a\n9\3:\3:\5:\u038e\n:\3;\3;\5;\u0392\n;\3"+ - "<\3<\5<\u0396\n<\3=\3=\5=\u039a\n=\3>\3>\3>\5>\u039f\n>\3?\3?\5?\u03a3"+ - "\n?\3?\3?\7?\u03a7\n?\f?\16?\u03aa\13?\3@\3@\5@\u03ae\n@\3@\3@\3@\7@\u03b3"+ - "\n@\f@\16@\u03b6\13@\3@\3@\5@\u03ba\n@\5@\u03bc\n@\3A\3A\7A\u03c0\nA\f"+ - "A\16A\u03c3\13A\3A\3A\5A\u03c7\nA\3B\3B\5B\u03cb\nB\3C\3C\3D\3D\3E\3E"+ - "\3F\3F\3G\3G\3G\3G\3G\3G\3G\3G\3G\5G\u03de\nG\3H\7H\u03e1\nH\fH\16H\u03e4"+ - "\13H\3H\3H\3H\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\5I\u03f3\nI\3J\5J\u03f6\n"+ - "J\3J\3J\5J\u03fa\nJ\3J\3J\7J\u03fe\nJ\fJ\16J\u0401\13J\3J\5J\u0404\nJ"+ - "\3J\3J\5J\u0408\nJ\5J\u040a\nJ\3K\3K\5K\u040e\nK\3L\3L\3L\5L\u0413\nL"+ - "\3L\3L\5L\u0417\nL\3M\3M\3M\3M\3M\5M\u041e\nM\3N\3N\3N\7N\u0423\nN\fN"+ - "\16N\u0426\13N\3N\3N\3N\7N\u042b\nN\fN\16N\u042e\13N\5N\u0430\nN\3O\7"+ - "O\u0433\nO\fO\16O\u0436\13O\3O\5O\u0439\nO\3O\3O\3P\3P\5P\u043f\nP\3Q"+ - "\7Q\u0442\nQ\fQ\16Q\u0445\13Q\3Q\3Q\7Q\u0449\nQ\fQ\16Q\u044c\13Q\3Q\3"+ - "Q\3Q\3Q\5Q\u0452\nQ\3R\7R\u0455\nR\fR\16R\u0458\13R\3R\3R\3R\5R\u045d"+ - "\nR\3R\3R\3S\3S\3S\3T\3T\3T\7T\u0467\nT\fT\16T\u046a\13T\3U\3U\5U\u046e"+ - "\nU\3V\3V\5V\u0472\nV\3W\3W\3X\3X\3X\3Y\7Y\u047a\nY\fY\16Y\u047d\13Y\3"+ - "Y\3Y\5Y\u0481\nY\3Y\3Y\3Z\3Z\3Z\3Z\5Z\u0489\nZ\3[\5[\u048c\n[\3[\3[\3"+ - "[\5[\u0491\n[\3[\3[\3\\\3\\\3]\3]\5]\u0499\n]\3]\5]\u049c\n]\3]\3]\3^"+ - "\5^\u04a1\n^\3^\3^\3^\5^\u04a6\n^\3^\3^\3^\5^\u04ab\n^\3^\3^\3^\5^\u04b0"+ - "\n^\3^\3^\3^\3^\3^\5^\u04b7\n^\3^\3^\3^\5^\u04bc\n^\3^\3^\3^\3^\3^\3^"+ - "\5^\u04c4\n^\3^\3^\3^\5^\u04c9\n^\3^\3^\3^\5^\u04ce\n^\3_\7_\u04d1\n_"+ - "\f_\16_\u04d4\13_\3_\3_\3_\5_\u04d9\n_\3_\3_\3`\3`\5`\u04df\n`\3`\5`\u04e2"+ - "\n`\3`\5`\u04e5\n`\3`\3`\3a\3a\3a\7a\u04ec\na\fa\16a\u04ef\13a\3b\7b\u04f2"+ - "\nb\fb\16b\u04f5\13b\3b\3b\3b\5b\u04fa\nb\3b\5b\u04fd\nb\3b\5b\u0500\n"+ - "b\3c\3c\3d\3d\7d\u0506\nd\fd\16d\u0509\13d\3e\3e\5e\u050d\ne\3f\7f\u0510"+ - "\nf\ff\16f\u0513\13f\3f\3f\3f\5f\u0518\nf\3f\5f\u051b\nf\3f\3f\3g\3g\3"+ - "g\3g\3g\3g\3g\5g\u0526\ng\3h\3h\3h\3i\3i\7i\u052d\ni\fi\16i\u0530\13i"+ - "\3i\3i\3j\3j\3j\3j\3j\5j\u0539\nj\3k\7k\u053c\nk\fk\16k\u053f\13k\3k\3"+ - "k\3k\3k\3l\3l\3l\3l\5l\u0549\nl\3m\7m\u054c\nm\fm\16m\u054f\13m\3m\3m"+ - "\3m\3n\3n\3n\3n\3n\3n\5n\u055a\nn\3o\7o\u055d\no\fo\16o\u0560\13o\3o\3"+ - "o\3o\3o\3o\3p\3p\7p\u0569\np\fp\16p\u056c\13p\3p\3p\3q\3q\3q\3q\3q\5q"+ - "\u0575\nq\3r\7r\u0578\nr\fr\16r\u057b\13r\3r\3r\3r\3r\3r\5r\u0582\nr\3"+ - "r\5r\u0585\nr\3r\3r\3s\3s\3s\5s\u058c\ns\3t\3t\3t\3u\3u\3u\5u\u0594\n"+ - "u\3v\3v\3v\3v\5v\u059a\nv\3v\3v\3w\3w\3w\7w\u05a1\nw\fw\16w\u05a4\13w"+ - "\3x\3x\3x\3x\3y\3y\3y\5y\u05ad\ny\3z\3z\5z\u05b1\nz\3z\5z\u05b4\nz\3z"+ - "\3z\3{\3{\3{\7{\u05bb\n{\f{\16{\u05be\13{\3|\3|\3|\3}\3}\3}\3}\3}\3}\3"+ - "~\3~\5~\u05cb\n~\3~\5~\u05ce\n~\3~\3~\3\177\3\177\3\177\7\177\u05d5\n"+ - "\177\f\177\16\177\u05d8\13\177\3\u0080\3\u0080\5\u0080\u05dc\n\u0080\3"+ - "\u0080\3\u0080\3\u0081\3\u0081\7\u0081\u05e2\n\u0081\f\u0081\16\u0081"+ - "\u05e5\13\u0081\3\u0082\3\u0082\3\u0082\5\u0082\u05ea\n\u0082\3\u0083"+ - "\3\u0083\3\u0083\3\u0084\7\u0084\u05f0\n\u0084\f\u0084\16\u0084\u05f3"+ - "\13\u0084\3\u0084\3\u0084\3\u0084\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085"+ - "\3\u0085\5\u0085\u05fe\n\u0085\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086"+ - "\5\u0086\u0605\n\u0086\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087"+ - "\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\5\u0087\u0613\n\u0087"+ - "\3\u0088\3\u0088\3\u0089\3\u0089\3\u0089\3\u0089\3\u008a\3\u008a\3\u008a"+ - "\3\u008a\3\u008b\3\u008b\3\u008b\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c"+ - "\3\u008c\3\u008c\5\u008c\u0629\n\u008c\3\u008d\3\u008d\3\u008d\3\u008d"+ - "\3\u008d\3\u008d\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e"+ - "\3\u008e\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f"+ - "\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090"+ - "\3\u0090\5\u0090\u064b\n\u0090\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091"+ - "\3\u0091\3\u0092\3\u0092\7\u0092\u0655\n\u0092\f\u0092\16\u0092\u0658"+ - "\13\u0092\3\u0092\7\u0092\u065b\n\u0092\f\u0092\16\u0092\u065e\13\u0092"+ - "\3\u0092\3\u0092\3\u0093\3\u0093\3\u0093\3\u0094\3\u0094\7\u0094\u0667"+ - "\n\u0094\f\u0094\16\u0094\u066a\13\u0094\3\u0095\3\u0095\3\u0095\3\u0095"+ - "\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\3\u0095\5\u0095\u0676\n\u0095"+ - "\3\u0096\3\u0096\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0098"+ - "\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0099\3\u0099\3\u0099\3\u0099"+ - "\3\u0099\3\u0099\3\u0099\3\u0099\3\u009a\3\u009a\5\u009a\u0690\n\u009a"+ - "\3\u009b\3\u009b\5\u009b\u0694\n\u009b\3\u009c\3\u009c\3\u009c\5\u009c"+ - "\u0699\n\u009c\3\u009c\3\u009c\5\u009c\u069d\n\u009c\3\u009c\3\u009c\5"+ - "\u009c\u06a1\n\u009c\3\u009c\3\u009c\3\u009c\3\u009d\3\u009d\3\u009d\5"+ - "\u009d\u06a9\n\u009d\3\u009d\3\u009d\5\u009d\u06ad\n\u009d\3\u009d\3\u009d"+ - "\5\u009d\u06b1\n\u009d\3\u009d\3\u009d\3\u009d\3\u009e\3\u009e\5\u009e"+ - "\u06b8\n\u009e\3\u009f\3\u009f\3\u00a0\3\u00a0\3\u00a0\7\u00a0\u06bf\n"+ - "\u00a0\f\u00a0\16\u00a0\u06c2\13\u00a0\3\u00a1\3\u00a1\3\u00a1\7\u00a1"+ - "\u06c7\n\u00a1\f\u00a1\16\u00a1\u06ca\13\u00a1\3\u00a1\3\u00a1\3\u00a1"+ - "\3\u00a1\3\u00a1\3\u00a1\3\u00a1\3\u00a2\3\u00a2\3\u00a2\7\u00a2\u06d6"+ - "\n\u00a2\f\u00a2\16\u00a2\u06d9\13\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2"+ - "\3\u00a2\3\u00a2\3\u00a2\3\u00a3\3\u00a3\5\u00a3\u06e4\n\u00a3\3\u00a3"+ + "\4\u00ed\t\u00ed\4\u00ee\t\u00ee\4\u00ef\t\u00ef\3\2\3\2\3\3\3\3\5\3\u01e3"+ + "\n\3\3\4\7\4\u01e6\n\4\f\4\16\4\u01e9\13\4\3\4\3\4\7\4\u01ed\n\4\f\4\16"+ + "\4\u01f0\13\4\3\4\5\4\u01f3\n\4\3\5\3\5\5\5\u01f7\n\5\3\6\3\6\3\7\3\7"+ + "\3\b\3\b\3\b\5\b\u0200\n\b\3\t\3\t\5\t\u0204\n\t\3\t\3\t\7\t\u0208\n\t"+ + "\f\t\16\t\u020b\13\t\3\n\7\n\u020e\n\n\f\n\16\n\u0211\13\n\3\n\3\n\5\n"+ + "\u0215\n\n\3\n\3\n\3\n\7\n\u021a\n\n\f\n\16\n\u021d\13\n\3\n\3\n\5\n\u0221"+ + "\n\n\5\n\u0223\n\n\3\13\3\13\7\13\u0227\n\13\f\13\16\13\u022a\13\13\3"+ + "\13\3\13\5\13\u022e\n\13\3\f\7\f\u0231\n\f\f\f\16\f\u0234\13\f\3\f\3\f"+ + "\5\f\u0238\n\f\3\r\3\r\3\16\3\16\3\17\3\17\3\20\7\20\u0241\n\20\f\20\16"+ + "\20\u0244\13\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21"+ + "\5\21\u0251\n\21\3\22\7\22\u0254\n\22\f\22\16\22\u0257\13\22\3\22\3\22"+ + "\3\22\7\22\u025c\n\22\f\22\16\22\u025f\13\22\3\22\3\22\7\22\u0263\n\22"+ + "\f\22\16\22\u0266\13\22\3\23\7\23\u0269\n\23\f\23\16\23\u026c\13\23\3"+ + "\23\3\23\5\23\u0270\n\23\3\24\3\24\3\25\3\25\3\25\3\25\3\25\7\25\u0279"+ + "\n\25\f\25\16\25\u027c\13\25\5\25\u027e\n\25\3\26\3\26\3\26\3\27\3\27"+ + "\3\27\3\27\3\30\3\30\3\30\7\30\u028a\n\30\f\30\16\30\u028d\13\30\3\31"+ + "\3\31\5\31\u0291\n\31\3\32\7\32\u0294\n\32\f\32\16\32\u0297\13\32\3\32"+ + "\3\32\5\32\u029b\n\32\3\33\3\33\3\33\3\33\5\33\u02a1\n\33\3\34\3\34\3"+ + "\34\3\34\3\34\3\34\7\34\u02a9\n\34\f\34\16\34\u02ac\13\34\3\35\3\35\3"+ + "\35\3\35\3\35\5\35\u02b3\n\35\3\36\3\36\3\36\3\36\3\36\3\36\7\36\u02bb"+ + "\n\36\f\36\16\36\u02be\13\36\3\37\3\37\3\37\3\37\3\37\5\37\u02c5\n\37"+ + "\3 \3 \3!\3!\3!\3!\3!\3!\7!\u02cf\n!\f!\16!\u02d2\13!\3\"\5\"\u02d5\n"+ + "\"\3\"\7\"\u02d8\n\"\f\"\16\"\u02db\13\"\3\"\7\"\u02de\n\"\f\"\16\"\u02e1"+ + "\13\"\3\"\3\"\3#\7#\u02e6\n#\f#\16#\u02e9\13#\3#\3#\3#\3#\7#\u02ef\n#"+ + "\f#\16#\u02f2\13#\3#\3#\3$\3$\3%\3%\3%\3%\5%\u02fc\n%\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"+ + "*\5*\u0319\n*\3+\3+\5+\u031d\n+\3,\7,\u0320\n,\f,\16,\u0323\13,\3,\3,"+ + "\3,\5,\u0328\n,\3,\5,\u032b\n,\3,\5,\u032e\n,\3,\3,\3-\3-\3-\3-\3-\3-"+ + "\3-\3-\5-\u033a\n-\3.\3.\3.\3.\3/\3/\3/\7/\u0343\n/\f/\16/\u0346\13/\3"+ + "\60\3\60\3\60\3\61\3\61\3\61\3\62\3\62\3\62\7\62\u0351\n\62\f\62\16\62"+ + "\u0354\13\62\3\63\3\63\7\63\u0358\n\63\f\63\16\63\u035b\13\63\3\63\3\63"+ + "\3\64\3\64\3\64\5\64\u0362\n\64\3\65\3\65\3\65\3\65\3\65\5\65\u0369\n"+ + "\65\3\66\7\66\u036c\n\66\f\66\16\66\u036f\13\66\3\66\5\66\u0372\n\66\3"+ + "\66\3\66\3\66\3\67\3\67\3\67\3\67\3\67\3\67\3\67\3\67\5\67\u037f\n\67"+ + "\38\38\38\78\u0384\n8\f8\168\u0387\138\39\39\39\59\u038c\n9\3:\3:\5:\u0390"+ + "\n:\3;\3;\5;\u0394\n;\3<\3<\5<\u0398\n<\3=\3=\5=\u039c\n=\3>\3>\3>\5>"+ + "\u03a1\n>\3?\3?\5?\u03a5\n?\3?\3?\7?\u03a9\n?\f?\16?\u03ac\13?\3@\3@\5"+ + "@\u03b0\n@\3@\3@\3@\7@\u03b5\n@\f@\16@\u03b8\13@\3@\3@\5@\u03bc\n@\5@"+ + "\u03be\n@\3A\3A\7A\u03c2\nA\fA\16A\u03c5\13A\3A\3A\5A\u03c9\nA\3B\3B\5"+ + "B\u03cd\nB\3C\3C\3D\3D\3E\3E\3F\3F\3G\3G\3G\3G\3G\3G\3G\3G\3G\5G\u03e0"+ + "\nG\3H\7H\u03e3\nH\fH\16H\u03e6\13H\3H\3H\3H\3I\3I\3I\3I\3I\3I\3I\3I\3"+ + "I\3I\5I\u03f5\nI\3J\5J\u03f8\nJ\3J\3J\5J\u03fc\nJ\3J\3J\7J\u0400\nJ\f"+ + "J\16J\u0403\13J\3J\5J\u0406\nJ\3J\3J\5J\u040a\nJ\5J\u040c\nJ\3K\3K\5K"+ + "\u0410\nK\3L\3L\3L\5L\u0415\nL\3L\3L\5L\u0419\nL\3M\3M\3M\3M\3M\5M\u0420"+ + "\nM\3N\3N\3N\7N\u0425\nN\fN\16N\u0428\13N\3N\3N\3N\7N\u042d\nN\fN\16N"+ + "\u0430\13N\5N\u0432\nN\3O\7O\u0435\nO\fO\16O\u0438\13O\3O\5O\u043b\nO"+ + "\3O\3O\3P\3P\5P\u0441\nP\3Q\7Q\u0444\nQ\fQ\16Q\u0447\13Q\3Q\3Q\7Q\u044b"+ + "\nQ\fQ\16Q\u044e\13Q\3Q\3Q\3Q\3Q\5Q\u0454\nQ\3R\7R\u0457\nR\fR\16R\u045a"+ + "\13R\3R\3R\3R\5R\u045f\nR\3R\3R\3S\3S\3S\3T\3T\3T\7T\u0469\nT\fT\16T\u046c"+ + "\13T\3U\3U\5U\u0470\nU\3V\3V\5V\u0474\nV\3W\3W\3X\3X\3X\3Y\7Y\u047c\n"+ + "Y\fY\16Y\u047f\13Y\3Y\3Y\5Y\u0483\nY\3Y\3Y\3Z\3Z\3Z\3Z\5Z\u048b\nZ\3["+ + "\5[\u048e\n[\3[\3[\3[\5[\u0493\n[\3[\3[\3\\\3\\\3]\3]\5]\u049b\n]\3]\5"+ + "]\u049e\n]\3]\3]\3^\5^\u04a3\n^\3^\3^\3^\5^\u04a8\n^\3^\3^\3^\5^\u04ad"+ + "\n^\3^\3^\3^\5^\u04b2\n^\3^\3^\3^\3^\3^\5^\u04b9\n^\3^\3^\3^\5^\u04be"+ + "\n^\3^\3^\3^\3^\3^\3^\5^\u04c6\n^\3^\3^\3^\5^\u04cb\n^\3^\3^\3^\5^\u04d0"+ + "\n^\3_\7_\u04d3\n_\f_\16_\u04d6\13_\3_\3_\3_\5_\u04db\n_\3_\3_\3`\3`\5"+ + "`\u04e1\n`\3`\5`\u04e4\n`\3`\5`\u04e7\n`\3`\3`\3a\3a\3a\7a\u04ee\na\f"+ + "a\16a\u04f1\13a\3b\7b\u04f4\nb\fb\16b\u04f7\13b\3b\3b\3b\5b\u04fc\nb\3"+ + "b\5b\u04ff\nb\3b\5b\u0502\nb\3c\3c\3d\3d\7d\u0508\nd\fd\16d\u050b\13d"+ + "\3e\3e\5e\u050f\ne\3f\7f\u0512\nf\ff\16f\u0515\13f\3f\3f\3f\5f\u051a\n"+ + "f\3f\5f\u051d\nf\3f\3f\3g\3g\3g\3g\3g\3g\3g\5g\u0528\ng\3h\3h\3h\3i\3"+ + "i\7i\u052f\ni\fi\16i\u0532\13i\3i\3i\3j\3j\3j\3j\3j\5j\u053b\nj\3k\7k"+ + "\u053e\nk\fk\16k\u0541\13k\3k\3k\3k\3k\3l\3l\3l\3l\5l\u054b\nl\3m\7m\u054e"+ + "\nm\fm\16m\u0551\13m\3m\3m\3m\3n\3n\3n\3n\3n\3n\5n\u055c\nn\3o\7o\u055f"+ + "\no\fo\16o\u0562\13o\3o\3o\3o\3o\3o\3p\3p\7p\u056b\np\fp\16p\u056e\13"+ + "p\3p\3p\3q\3q\3q\3q\3q\5q\u0577\nq\3r\7r\u057a\nr\fr\16r\u057d\13r\3r"+ + "\3r\3r\3r\3r\5r\u0584\nr\3r\5r\u0587\nr\3r\3r\3s\3s\3s\5s\u058e\ns\3t"+ + "\3t\3t\3u\3u\3u\5u\u0596\nu\3v\3v\3v\3v\5v\u059c\nv\3v\3v\3w\3w\3w\7w"+ + "\u05a3\nw\fw\16w\u05a6\13w\3x\3x\3x\3x\3y\3y\3y\5y\u05af\ny\3z\3z\5z\u05b3"+ + "\nz\3z\5z\u05b6\nz\3z\3z\3{\3{\3{\7{\u05bd\n{\f{\16{\u05c0\13{\3|\3|\3"+ + "|\3}\3}\3}\3}\3}\3}\3~\3~\5~\u05cd\n~\3~\5~\u05d0\n~\3~\3~\3\177\3\177"+ + "\3\177\7\177\u05d7\n\177\f\177\16\177\u05da\13\177\3\u0080\3\u0080\5\u0080"+ + "\u05de\n\u0080\3\u0080\3\u0080\3\u0081\3\u0081\7\u0081\u05e4\n\u0081\f"+ + "\u0081\16\u0081\u05e7\13\u0081\3\u0082\3\u0082\3\u0082\5\u0082\u05ec\n"+ + "\u0082\3\u0083\3\u0083\3\u0083\3\u0084\3\u0084\5\u0084\u05f3\n\u0084\3"+ + "\u0085\7\u0085\u05f6\n\u0085\f\u0085\16\u0085\u05f9\13\u0085\3\u0085\3"+ + "\u0085\3\u0085\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086\5\u0086"+ + "\u0604\n\u0086\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\5\u0087\u060b\n"+ + "\u0087\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088\3\u0088"+ + "\3\u0088\3\u0088\3\u0088\3\u0088\5\u0088\u0619\n\u0088\3\u0089\3\u0089"+ + "\3\u008a\3\u008a\3\u008a\3\u008a\3\u008b\3\u008b\3\u008b\3\u008b\3\u008c"+ + "\3\u008c\3\u008c\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d"+ + "\5\u008d\u062f\n\u008d\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e"+ + "\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u008f\3\u0090"+ + "\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0091\3\u0091"+ + "\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091\5\u0091"+ + "\u0651\n\u0091\3\u0092\3\u0092\3\u0092\3\u0092\3\u0092\3\u0092\3\u0093"+ + "\3\u0093\7\u0093\u065b\n\u0093\f\u0093\16\u0093\u065e\13\u0093\3\u0093"+ + "\7\u0093\u0661\n\u0093\f\u0093\16\u0093\u0664\13\u0093\3\u0093\3\u0093"+ + "\3\u0094\3\u0094\3\u0094\3\u0095\3\u0095\7\u0095\u066d\n\u0095\f\u0095"+ + "\16\u0095\u0670\13\u0095\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096"+ + "\3\u0096\3\u0096\3\u0096\3\u0096\5\u0096\u067c\n\u0096\3\u0097\3\u0097"+ + "\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0099\3\u0099\3\u0099"+ + "\3\u0099\3\u0099\3\u0099\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a"+ + "\3\u009a\3\u009a\3\u009b\3\u009b\5\u009b\u0696\n\u009b\3\u009c\3\u009c"+ + "\5\u009c\u069a\n\u009c\3\u009d\3\u009d\3\u009d\5\u009d\u069f\n\u009d\3"+ + "\u009d\3\u009d\5\u009d\u06a3\n\u009d\3\u009d\3\u009d\5\u009d\u06a7\n\u009d"+ + "\3\u009d\3\u009d\3\u009d\3\u009e\3\u009e\3\u009e\5\u009e\u06af\n\u009e"+ + "\3\u009e\3\u009e\5\u009e\u06b3\n\u009e\3\u009e\3\u009e\5\u009e\u06b7\n"+ + "\u009e\3\u009e\3\u009e\3\u009e\3\u009f\3\u009f\5\u009f\u06be\n\u009f\3"+ + "\u00a0\3\u00a0\3\u00a1\3\u00a1\3\u00a1\7\u00a1\u06c5\n\u00a1\f\u00a1\16"+ + "\u00a1\u06c8\13\u00a1\3\u00a2\3\u00a2\3\u00a2\7\u00a2\u06cd\n\u00a2\f"+ + "\u00a2\16\u00a2\u06d0\13\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2\3\u00a2"+ + "\3\u00a2\3\u00a2\3\u00a3\3\u00a3\3\u00a3\7\u00a3\u06dc\n\u00a3\f\u00a3"+ + "\16\u00a3\u06df\13\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3\3\u00a3"+ "\3\u00a3\3\u00a4\3\u00a4\5\u00a4\u06ea\n\u00a4\3\u00a4\3\u00a4\3\u00a5"+ - "\3\u00a5\5\u00a5\u06f0\n\u00a5\3\u00a5\3\u00a5\3\u00a6\3\u00a6\3\u00a6"+ - "\3\u00a6\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a8\3\u00a8"+ - "\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8\5\u00a8\u0705\n\u00a8\3\u00a8"+ - "\3\u00a8\3\u00a8\5\u00a8\u070a\n\u00a8\3\u00a9\3\u00a9\7\u00a9\u070e\n"+ - "\u00a9\f\u00a9\16\u00a9\u0711\13\u00a9\3\u00aa\3\u00aa\3\u00aa\3\u00aa"+ - "\3\u00aa\3\u00aa\3\u00ab\7\u00ab\u071a\n\u00ab\f\u00ab\16\u00ab\u071d"+ - "\13\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ac\3\u00ac\3\u00ac\7\u00ac\u0725"+ - "\n\u00ac\f\u00ac\16\u00ac\u0728\13\u00ac\3\u00ad\3\u00ad\3\u00ad\3\u00ae"+ - "\3\u00ae\3\u00ae\3\u00ae\5\u00ae\u0731\n\u00ae\3\u00ae\5\u00ae\u0734\n"+ - "\u00ae\3\u00af\3\u00af\3\u00af\5\u00af\u0739\n\u00af\3\u00af\3\u00af\3"+ - "\u00b0\3\u00b0\3\u00b0\7\u00b0\u0740\n\u00b0\f\u00b0\16\u00b0\u0743\13"+ - "\u00b0\3\u00b1\7\u00b1\u0746\n\u00b1\f\u00b1\16\u00b1\u0749\13\u00b1\3"+ - "\u00b1\3\u00b1\3\u00b1\3\u00b1\3\u00b1\3\u00b2\3\u00b2\5\u00b2\u0752\n"+ - "\u00b2\3\u00b2\7\u00b2\u0755\n\u00b2\f\u00b2\16\u00b2\u0758\13\u00b2\3"+ - "\u00b3\3\u00b3\3\u00b3\3\u00b3\7\u00b3\u075e\n\u00b3\f\u00b3\16\u00b3"+ - "\u0761\13\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3"+ - "\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3\3\u00b3"+ - "\3\u00b3\3\u00b3\3\u00b3\3\u00b3\5\u00b3\u0777\n\u00b3\3\u00b4\3\u00b4"+ - "\3\u00b5\3\u00b5\3\u00b5\3\u00b5\7\u00b5\u077f\n\u00b5\f\u00b5\16\u00b5"+ - "\u0782\13\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5"+ - "\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5\3\u00b5"+ - "\3\u00b5\3\u00b5\3\u00b5\5\u00b5\u0797\n\u00b5\3\u00b6\3\u00b6\3\u00b6"+ - "\3\u00b6\3\u00b6\5\u00b6\u079e\n\u00b6\3\u00b7\3\u00b7\3\u00b8\3\u00b8"+ - "\3\u00b8\3\u00b8\5\u00b8\u07a6\n\u00b8\3\u00b9\3\u00b9\3\u00b9\3\u00b9"+ - "\7\u00b9\u07ac\n\u00b9\f\u00b9\16\u00b9\u07af\13\u00b9\3\u00b9\3\u00b9"+ - "\3\u00b9\3\u00b9\3\u00b9\3\u00b9\7\u00b9\u07b7\n\u00b9\f\u00b9\16\u00b9"+ - "\u07ba\13\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9"+ - "\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9\3\u00b9"+ - "\3\u00b9\3\u00b9\3\u00b9\3\u00b9\5\u00b9\u07d0\n\u00b9\3\u00ba\3\u00ba"+ - "\3\u00bb\3\u00bb\3\u00bb\3\u00bb\7\u00bb\u07d8\n\u00bb\f\u00bb\16\u00bb"+ - "\u07db\13\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\7\u00bb"+ - "\u07e3\n\u00bb\f\u00bb\16\u00bb\u07e6\13\u00bb\3\u00bb\3\u00bb\3\u00bb"+ - "\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb"+ - "\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\3\u00bb\5\u00bb\u07fb"+ - "\n\u00bb\3\u00bc\3\u00bc\5\u00bc\u07ff\n\u00bc\3\u00bc\7\u00bc\u0802\n"+ - "\u00bc\f\u00bc\16\u00bc\u0805\13\u00bc\3\u00bc\3\u00bc\3\u00bc\7\u00bc"+ - "\u080a\n\u00bc\f\u00bc\16\u00bc\u080d\13\u00bc\3\u00bc\7\u00bc\u0810\n"+ - "\u00bc\f\u00bc\16\u00bc\u0813\13\u00bc\3\u00bc\5\u00bc\u0816\n\u00bc\3"+ - "\u00bc\3\u00bc\5\u00bc\u081a\n\u00bc\3\u00bc\3\u00bc\5\u00bc\u081e\n\u00bc"+ - "\3\u00bc\3\u00bc\3\u00bc\3\u00bc\5\u00bc\u0824\n\u00bc\3\u00bc\7\u00bc"+ - "\u0827\n\u00bc\f\u00bc\16\u00bc\u082a\13\u00bc\3\u00bc\3\u00bc\5\u00bc"+ - "\u082e\n\u00bc\3\u00bc\3\u00bc\5\u00bc\u0832\n\u00bc\3\u00bc\3\u00bc\5"+ - "\u00bc\u0836\n\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\5\u00bc\u083c\n\u00bc"+ - "\3\u00bc\7\u00bc\u083f\n\u00bc\f\u00bc\16\u00bc\u0842\13\u00bc\3\u00bc"+ - "\3\u00bc\5\u00bc\u0846\n\u00bc\3\u00bc\3\u00bc\5\u00bc\u084a\n\u00bc\3"+ - "\u00bc\3\u00bc\5\u00bc\u084e\n\u00bc\5\u00bc\u0850\n\u00bc\3\u00bd\3\u00bd"+ - "\3\u00bd\5\u00bd\u0855\n\u00bd\3\u00bd\7\u00bd\u0858\n\u00bd\f\u00bd\16"+ - "\u00bd\u085b\13\u00bd\3\u00bd\3\u00bd\5\u00bd\u085f\n\u00bd\3\u00bd\3"+ - "\u00bd\5\u00bd\u0863\n\u00bd\3\u00bd\3\u00bd\5\u00bd\u0867\n\u00bd\3\u00be"+ - "\3\u00be\5\u00be\u086b\n\u00be\3\u00be\7\u00be\u086e\n\u00be\f\u00be\16"+ - "\u00be\u0871\13\u00be\3\u00be\3\u00be\3\u00be\7\u00be\u0876\n\u00be\f"+ - "\u00be\16\u00be\u0879\13\u00be\3\u00be\7\u00be\u087c\n\u00be\f\u00be\16"+ - "\u00be\u087f\13\u00be\3\u00be\5\u00be\u0882\n\u00be\3\u00be\3\u00be\5"+ - "\u00be\u0886\n\u00be\3\u00be\3\u00be\5\u00be\u088a\n\u00be\3\u00be\3\u00be"+ - "\3\u00be\3\u00be\5\u00be\u0890\n\u00be\3\u00be\7\u00be\u0893\n\u00be\f"+ - "\u00be\16\u00be\u0896\13\u00be\3\u00be\3\u00be\5\u00be\u089a\n\u00be\3"+ - "\u00be\3\u00be\5\u00be\u089e\n\u00be\3\u00be\3\u00be\5\u00be\u08a2\n\u00be"+ - "\5\u00be\u08a4\n\u00be\3\u00bf\3\u00bf\3\u00bf\5\u00bf\u08a9\n\u00bf\3"+ - "\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0\3\u00c0"+ - "\3\u00c0\3\u00c0\3\u00c0\3\u00c0\5\u00c0\u08b8\n\u00c0\3\u00c1\3\u00c1"+ - "\3\u00c1\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c2\3\u00c2"+ - "\3\u00c2\5\u00c2\u08c6\n\u00c2\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3"+ - "\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3\5\u00c3\u08d2\n\u00c3\3\u00c3"+ - "\3\u00c3\3\u00c3\3\u00c3\3\u00c3\7\u00c3\u08d9\n\u00c3\f\u00c3\16\u00c3"+ - "\u08dc\13\u00c3\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4"+ - "\3\u00c4\3\u00c4\3\u00c4\7\u00c4\u08e8\n\u00c4\f\u00c4\16\u00c4\u08eb"+ - "\13\u00c4\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5"+ - "\3\u00c5\3\u00c5\5\u00c5\u08f7\n\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5"+ - "\3\u00c5\7\u00c5\u08fe\n\u00c5\f\u00c5\16\u00c5\u0901\13\u00c5\3\u00c6"+ - "\3\u00c6\3\u00c6\5\u00c6\u0906\n\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6"+ - "\3\u00c6\5\u00c6\u090d\n\u00c6\3\u00c6\3\u00c6\3\u00c6\5\u00c6\u0912\n"+ - "\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\5\u00c6\u0919\n\u00c6\3"+ - "\u00c6\3\u00c6\3\u00c6\5\u00c6\u091e\n\u00c6\3\u00c6\3\u00c6\3\u00c6\3"+ - "\u00c6\3\u00c6\5\u00c6\u0925\n\u00c6\3\u00c6\3\u00c6\3\u00c6\5\u00c6\u092a"+ - "\n\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\5\u00c6\u0931\n\u00c6"+ - "\3\u00c6\3\u00c6\3\u00c6\5\u00c6\u0936\n\u00c6\3\u00c6\3\u00c6\3\u00c6"+ - "\3\u00c6\3\u00c6\3\u00c6\5\u00c6\u093e\n\u00c6\3\u00c6\3\u00c6\3\u00c6"+ - "\5\u00c6\u0943\n\u00c6\3\u00c6\3\u00c6\5\u00c6\u0947\n\u00c6\3\u00c7\3"+ - "\u00c7\5\u00c7\u094b\n\u00c7\3\u00c7\3\u00c7\3\u00c7\5\u00c7\u0950\n\u00c7"+ - "\3\u00c7\3\u00c7\3\u00c8\3\u00c8\3\u00c8\5\u00c8\u0957\n\u00c8\3\u00c8"+ - "\3\u00c8\3\u00c8\3\u00c8\3\u00c8\5\u00c8\u095e\n\u00c8\3\u00c8\3\u00c8"+ - "\3\u00c8\5\u00c8\u0963\n\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c8"+ - "\5\u00c8\u096a\n\u00c8\3\u00c8\3\u00c8\3\u00c8\5\u00c8\u096f\n\u00c8\3"+ - "\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c8\5\u00c8\u0976\n\u00c8\3\u00c8\3"+ - "\u00c8\3\u00c8\5\u00c8\u097b\n\u00c8\3\u00c8\3\u00c8\3\u00c8\3\u00c8\3"+ - "\u00c8\3\u00c8\5\u00c8\u0983\n\u00c8\3\u00c8\3\u00c8\3\u00c8\5\u00c8\u0988"+ - "\n\u00c8\3\u00c8\3\u00c8\5\u00c8\u098c\n\u00c8\3\u00c9\3\u00c9\3\u00c9"+ - "\7\u00c9\u0991\n\u00c9\f\u00c9\16\u00c9\u0994\13\u00c9\3\u00ca\3\u00ca"+ - "\3\u00ca\5\u00ca\u0999\n\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca"+ - "\5\u00ca\u09a0\n\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\5\u00ca"+ - "\u09a7\n\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\5\u00ca\u09ae\n"+ - "\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\5\u00ca\u09b6\n"+ - "\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\5\u00ca\u09bd\n\u00ca\3"+ - "\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\3\u00ca\5\u00ca\u09c5\n\u00ca\3"+ - "\u00cb\3\u00cb\5\u00cb\u09c9\n\u00cb\3\u00cb\3\u00cb\3\u00cc\3\u00cc\3"+ - "\u00cc\5\u00cc\u09d0\n\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\5"+ - "\u00cc\u09d7\n\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\5\u00cc\u09de"+ - "\n\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\5\u00cc\u09e6"+ - "\n\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\5\u00cc\u09ed\n\u00cc"+ - "\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\3\u00cc\5\u00cc\u09f5\n\u00cc"+ - "\3\u00cd\3\u00cd\3\u00cd\3\u00cd\5\u00cd\u09fb\n\u00cd\3\u00cd\3\u00cd"+ - "\3\u00cd\3\u00cd\5\u00cd\u0a01\n\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd"+ - "\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd\5\u00cd\u0a0d\n\u00cd"+ - "\3\u00ce\3\u00ce\7\u00ce\u0a11\n\u00ce\f\u00ce\16\u00ce\u0a14\13\u00ce"+ - "\3\u00cf\7\u00cf\u0a17\n\u00cf\f\u00cf\16\u00cf\u0a1a\13\u00cf\3\u00cf"+ - "\3\u00cf\3\u00cf\3\u00cf\3\u00d0\3\u00d0\3\u00d1\3\u00d1\5\u00d1\u0a24"+ - "\n\u00d1\3\u00d2\3\u00d2\3\u00d2\3\u00d2\3\u00d3\3\u00d3\3\u00d3\5\u00d3"+ - "\u0a2d\n\u00d3\3\u00d3\5\u00d3\u0a30\n\u00d3\3\u00d4\3\u00d4\3\u00d4\7"+ - "\u00d4\u0a35\n\u00d4\f\u00d4\16\u00d4\u0a38\13\u00d4\3\u00d5\3\u00d5\5"+ - "\u00d5\u0a3c\n\u00d5\3\u00d6\3\u00d6\5\u00d6\u0a40\n\u00d6\3\u00d7\3\u00d7"+ - "\3\u00d7\3\u00d7\3\u00d8\3\u00d8\3\u00d8\5\u00d8\u0a49\n\u00d8\3\u00d9"+ - "\3\u00d9\3\u00da\3\u00da\3\u00da\3\u00da\3\u00da\3\u00da\3\u00da\5\u00da"+ - "\u0a54\n\u00da\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db\7\u00db"+ - "\u0a5c\n\u00db\f\u00db\16\u00db\u0a5f\13\u00db\3\u00dc\3\u00dc\3\u00dc"+ - "\3\u00dc\3\u00dc\3\u00dc\7\u00dc\u0a67\n\u00dc\f\u00dc\16\u00dc\u0a6a"+ - "\13\u00dc\3\u00dd\3\u00dd\3\u00dd\3\u00dd\3\u00dd\3\u00dd\7\u00dd\u0a72"+ - "\n\u00dd\f\u00dd\16\u00dd\u0a75\13\u00dd\3\u00de\3\u00de\3\u00de\3\u00de"+ - "\3\u00de\3\u00de\7\u00de\u0a7d\n\u00de\f\u00de\16\u00de\u0a80\13\u00de"+ - "\3\u00df\3\u00df\3\u00df\3\u00df\3\u00df\3\u00df\7\u00df\u0a88\n\u00df"+ - "\f\u00df\16\u00df\u0a8b\13\u00df\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0"+ - "\3\u00e0\3\u00e0\3\u00e0\3\u00e0\7\u00e0\u0a96\n\u00e0\f\u00e0\16\u00e0"+ - "\u0a99\13\u00e0\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1"+ - "\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1"+ - "\3\u00e1\3\u00e1\7\u00e1\u0aad\n\u00e1\f\u00e1\16\u00e1\u0ab0\13\u00e1"+ + "\3\u00a5\5\u00a5\u06f0\n\u00a5\3\u00a5\3\u00a5\3\u00a6\3\u00a6\5\u00a6"+ + "\u06f6\n\u00a6\3\u00a6\3\u00a6\3\u00a7\3\u00a7\3\u00a7\3\u00a7\3\u00a8"+ + "\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a8\3\u00a9\3\u00a9\3\u00a9\3\u00a9"+ + "\3\u00a9\3\u00a9\3\u00a9\5\u00a9\u070b\n\u00a9\3\u00a9\3\u00a9\3\u00a9"+ + "\5\u00a9\u0710\n\u00a9\3\u00aa\3\u00aa\7\u00aa\u0714\n\u00aa\f\u00aa\16"+ + "\u00aa\u0717\13\u00aa\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab\3\u00ab"+ + "\3\u00ac\7\u00ac\u0720\n\u00ac\f\u00ac\16\u00ac\u0723\13\u00ac\3\u00ac"+ + "\3\u00ac\3\u00ac\3\u00ad\3\u00ad\3\u00ad\7\u00ad\u072b\n\u00ad\f\u00ad"+ + "\16\u00ad\u072e\13\u00ad\3\u00ae\3\u00ae\3\u00ae\3\u00af\3\u00af\3\u00af"+ + "\3\u00af\5\u00af\u0737\n\u00af\3\u00af\5\u00af\u073a\n\u00af\3\u00b0\3"+ + "\u00b0\3\u00b0\5\u00b0\u073f\n\u00b0\3\u00b0\3\u00b0\3\u00b1\3\u00b1\3"+ + "\u00b1\7\u00b1\u0746\n\u00b1\f\u00b1\16\u00b1\u0749\13\u00b1\3\u00b2\7"+ + "\u00b2\u074c\n\u00b2\f\u00b2\16\u00b2\u074f\13\u00b2\3\u00b2\3\u00b2\3"+ + "\u00b2\3\u00b2\3\u00b2\3\u00b3\3\u00b3\5\u00b3\u0758\n\u00b3\3\u00b3\7"+ + "\u00b3\u075b\n\u00b3\f\u00b3\16\u00b3\u075e\13\u00b3\3\u00b4\3\u00b4\3"+ + "\u00b4\3\u00b4\7\u00b4\u0764\n\u00b4\f\u00b4\16\u00b4\u0767\13\u00b4\3"+ + "\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4"+ + "\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4\3\u00b4"+ + "\3\u00b4\3\u00b4\5\u00b4\u077d\n\u00b4\3\u00b5\3\u00b5\3\u00b6\3\u00b6"+ + "\3\u00b6\3\u00b6\7\u00b6\u0785\n\u00b6\f\u00b6\16\u00b6\u0788\13\u00b6"+ + "\3\u00b6\3\u00b6\3\u00b6\3\u00b6\3\u00b6\3\u00b6\3\u00b6\3\u00b6\3\u00b6"+ + "\3\u00b6\3\u00b6\3\u00b6\3\u00b6\3\u00b6\3\u00b6\3\u00b6\3\u00b6\3\u00b6"+ + "\3\u00b6\5\u00b6\u079d\n\u00b6\3\u00b7\3\u00b7\3\u00b7\3\u00b7\3\u00b7"+ + "\5\u00b7\u07a4\n\u00b7\3\u00b8\3\u00b8\3\u00b9\3\u00b9\3\u00b9\3\u00b9"+ + "\5\u00b9\u07ac\n\u00b9\3\u00ba\3\u00ba\3\u00ba\3\u00ba\7\u00ba\u07b2\n"+ + "\u00ba\f\u00ba\16\u00ba\u07b5\13\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba"+ + "\3\u00ba\3\u00ba\7\u00ba\u07bd\n\u00ba\f\u00ba\16\u00ba\u07c0\13\u00ba"+ + "\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba"+ + "\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba\3\u00ba"+ + "\3\u00ba\3\u00ba\5\u00ba\u07d6\n\u00ba\3\u00bb\3\u00bb\3\u00bc\3\u00bc"+ + "\3\u00bc\3\u00bc\7\u00bc\u07de\n\u00bc\f\u00bc\16\u00bc\u07e1\13\u00bc"+ + "\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\7\u00bc\u07e9\n\u00bc"+ + "\f\u00bc\16\u00bc\u07ec\13\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc"+ + "\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc"+ + "\3\u00bc\3\u00bc\3\u00bc\3\u00bc\3\u00bc\5\u00bc\u0801\n\u00bc\3\u00bd"+ + "\3\u00bd\5\u00bd\u0805\n\u00bd\3\u00bd\7\u00bd\u0808\n\u00bd\f\u00bd\16"+ + "\u00bd\u080b\13\u00bd\3\u00bd\3\u00bd\3\u00bd\7\u00bd\u0810\n\u00bd\f"+ + "\u00bd\16\u00bd\u0813\13\u00bd\3\u00bd\7\u00bd\u0816\n\u00bd\f\u00bd\16"+ + "\u00bd\u0819\13\u00bd\3\u00bd\5\u00bd\u081c\n\u00bd\3\u00bd\3\u00bd\5"+ + "\u00bd\u0820\n\u00bd\3\u00bd\3\u00bd\5\u00bd\u0824\n\u00bd\3\u00bd\3\u00bd"+ + "\3\u00bd\3\u00bd\5\u00bd\u082a\n\u00bd\3\u00bd\7\u00bd\u082d\n\u00bd\f"+ + "\u00bd\16\u00bd\u0830\13\u00bd\3\u00bd\3\u00bd\5\u00bd\u0834\n\u00bd\3"+ + "\u00bd\3\u00bd\5\u00bd\u0838\n\u00bd\3\u00bd\3\u00bd\5\u00bd\u083c\n\u00bd"+ + "\3\u00bd\3\u00bd\3\u00bd\3\u00bd\5\u00bd\u0842\n\u00bd\3\u00bd\7\u00bd"+ + "\u0845\n\u00bd\f\u00bd\16\u00bd\u0848\13\u00bd\3\u00bd\3\u00bd\5\u00bd"+ + "\u084c\n\u00bd\3\u00bd\3\u00bd\5\u00bd\u0850\n\u00bd\3\u00bd\3\u00bd\5"+ + "\u00bd\u0854\n\u00bd\5\u00bd\u0856\n\u00bd\3\u00be\3\u00be\3\u00be\5\u00be"+ + "\u085b\n\u00be\3\u00be\7\u00be\u085e\n\u00be\f\u00be\16\u00be\u0861\13"+ + "\u00be\3\u00be\3\u00be\5\u00be\u0865\n\u00be\3\u00be\3\u00be\5\u00be\u0869"+ + "\n\u00be\3\u00be\3\u00be\5\u00be\u086d\n\u00be\3\u00bf\3\u00bf\5\u00bf"+ + "\u0871\n\u00bf\3\u00bf\7\u00bf\u0874\n\u00bf\f\u00bf\16\u00bf\u0877\13"+ + "\u00bf\3\u00bf\3\u00bf\3\u00bf\7\u00bf\u087c\n\u00bf\f\u00bf\16\u00bf"+ + "\u087f\13\u00bf\3\u00bf\7\u00bf\u0882\n\u00bf\f\u00bf\16\u00bf\u0885\13"+ + "\u00bf\3\u00bf\5\u00bf\u0888\n\u00bf\3\u00bf\3\u00bf\5\u00bf\u088c\n\u00bf"+ + "\3\u00bf\3\u00bf\5\u00bf\u0890\n\u00bf\3\u00bf\3\u00bf\3\u00bf\3\u00bf"+ + "\5\u00bf\u0896\n\u00bf\3\u00bf\7\u00bf\u0899\n\u00bf\f\u00bf\16\u00bf"+ + "\u089c\13\u00bf\3\u00bf\3\u00bf\5\u00bf\u08a0\n\u00bf\3\u00bf\3\u00bf"+ + "\5\u00bf\u08a4\n\u00bf\3\u00bf\3\u00bf\5\u00bf\u08a8\n\u00bf\5\u00bf\u08aa"+ + "\n\u00bf\3\u00c0\3\u00c0\3\u00c0\5\u00c0\u08af\n\u00c0\3\u00c1\3\u00c1"+ + "\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1\3\u00c1"+ + "\3\u00c1\3\u00c1\5\u00c1\u08be\n\u00c1\3\u00c2\3\u00c2\3\u00c2\3\u00c3"+ + "\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3\3\u00c3\5\u00c3"+ + "\u08cc\n\u00c3\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4\3\u00c4"+ + "\3\u00c4\3\u00c4\3\u00c4\5\u00c4\u08d8\n\u00c4\3\u00c4\3\u00c4\3\u00c4"+ + "\3\u00c4\3\u00c4\7\u00c4\u08df\n\u00c4\f\u00c4\16\u00c4\u08e2\13\u00c4"+ + "\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5\3\u00c5"+ + "\3\u00c5\7\u00c5\u08ee\n\u00c5\f\u00c5\16\u00c5\u08f1\13\u00c5\3\u00c6"+ + "\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6"+ + "\5\u00c6\u08fd\n\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\3\u00c6\7\u00c6"+ + "\u0904\n\u00c6\f\u00c6\16\u00c6\u0907\13\u00c6\3\u00c7\3\u00c7\3\u00c7"+ + "\5\u00c7\u090c\n\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\5\u00c7"+ + "\u0913\n\u00c7\3\u00c7\3\u00c7\3\u00c7\5\u00c7\u0918\n\u00c7\3\u00c7\3"+ + "\u00c7\3\u00c7\3\u00c7\3\u00c7\5\u00c7\u091f\n\u00c7\3\u00c7\3\u00c7\3"+ + "\u00c7\5\u00c7\u0924\n\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\5"+ + "\u00c7\u092b\n\u00c7\3\u00c7\3\u00c7\3\u00c7\5\u00c7\u0930\n\u00c7\3\u00c7"+ + "\3\u00c7\3\u00c7\3\u00c7\3\u00c7\5\u00c7\u0937\n\u00c7\3\u00c7\3\u00c7"+ + "\3\u00c7\5\u00c7\u093c\n\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7\3\u00c7"+ + "\3\u00c7\5\u00c7\u0944\n\u00c7\3\u00c7\3\u00c7\3\u00c7\5\u00c7\u0949\n"+ + "\u00c7\3\u00c7\3\u00c7\5\u00c7\u094d\n\u00c7\3\u00c8\3\u00c8\5\u00c8\u0951"+ + "\n\u00c8\3\u00c8\3\u00c8\3\u00c8\5\u00c8\u0956\n\u00c8\3\u00c8\3\u00c8"+ + "\3\u00c9\3\u00c9\3\u00c9\5\u00c9\u095d\n\u00c9\3\u00c9\3\u00c9\3\u00c9"+ + "\3\u00c9\3\u00c9\5\u00c9\u0964\n\u00c9\3\u00c9\3\u00c9\3\u00c9\5\u00c9"+ + "\u0969\n\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\5\u00c9\u0970\n"+ + "\u00c9\3\u00c9\3\u00c9\3\u00c9\5\u00c9\u0975\n\u00c9\3\u00c9\3\u00c9\3"+ + "\u00c9\3\u00c9\3\u00c9\5\u00c9\u097c\n\u00c9\3\u00c9\3\u00c9\3\u00c9\5"+ + "\u00c9\u0981\n\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\3\u00c9\5"+ + "\u00c9\u0989\n\u00c9\3\u00c9\3\u00c9\3\u00c9\5\u00c9\u098e\n\u00c9\3\u00c9"+ + "\3\u00c9\5\u00c9\u0992\n\u00c9\3\u00ca\3\u00ca\3\u00ca\7\u00ca\u0997\n"+ + "\u00ca\f\u00ca\16\u00ca\u099a\13\u00ca\3\u00cb\3\u00cb\3\u00cb\5\u00cb"+ + "\u099f\n\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\5\u00cb\u09a6\n"+ + "\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\5\u00cb\u09ad\n\u00cb\3"+ + "\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\5\u00cb\u09b4\n\u00cb\3\u00cb\3"+ + "\u00cb\3\u00cb\3\u00cb\3\u00cb\3\u00cb\5\u00cb\u09bc\n\u00cb\3\u00cb\3"+ + "\u00cb\3\u00cb\3\u00cb\3\u00cb\5\u00cb\u09c3\n\u00cb\3\u00cb\3\u00cb\3"+ + "\u00cb\3\u00cb\3\u00cb\3\u00cb\5\u00cb\u09cb\n\u00cb\3\u00cc\3\u00cc\5"+ + "\u00cc\u09cf\n\u00cc\3\u00cc\3\u00cc\3\u00cd\3\u00cd\3\u00cd\5\u00cd\u09d6"+ + "\n\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd\5\u00cd\u09dd\n\u00cd"+ + "\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd\5\u00cd\u09e4\n\u00cd\3\u00cd"+ + "\3\u00cd\3\u00cd\3\u00cd\3\u00cd\3\u00cd\5\u00cd\u09ec\n\u00cd\3\u00cd"+ + "\3\u00cd\3\u00cd\3\u00cd\3\u00cd\5\u00cd\u09f3\n\u00cd\3\u00cd\3\u00cd"+ + "\3\u00cd\3\u00cd\3\u00cd\3\u00cd\5\u00cd\u09fb\n\u00cd\3\u00ce\3\u00ce"+ + "\3\u00ce\3\u00ce\5\u00ce\u0a01\n\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce"+ + "\5\u00ce\u0a07\n\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce\3\u00ce"+ + "\3\u00ce\3\u00ce\3\u00ce\3\u00ce\5\u00ce\u0a13\n\u00ce\3\u00cf\3\u00cf"+ + "\7\u00cf\u0a17\n\u00cf\f\u00cf\16\u00cf\u0a1a\13\u00cf\3\u00d0\7\u00d0"+ + "\u0a1d\n\u00d0\f\u00d0\16\u00d0\u0a20\13\u00d0\3\u00d0\3\u00d0\3\u00d0"+ + "\3\u00d0\3\u00d1\3\u00d1\3\u00d2\3\u00d2\5\u00d2\u0a2a\n\u00d2\3\u00d3"+ + "\3\u00d3\3\u00d3\3\u00d3\3\u00d4\3\u00d4\3\u00d4\5\u00d4\u0a33\n\u00d4"+ + "\3\u00d4\5\u00d4\u0a36\n\u00d4\3\u00d5\3\u00d5\3\u00d5\7\u00d5\u0a3b\n"+ + "\u00d5\f\u00d5\16\u00d5\u0a3e\13\u00d5\3\u00d6\3\u00d6\5\u00d6\u0a42\n"+ + "\u00d6\3\u00d7\3\u00d7\5\u00d7\u0a46\n\u00d7\3\u00d8\3\u00d8\3\u00d8\3"+ + "\u00d8\3\u00d9\3\u00d9\3\u00d9\5\u00d9\u0a4f\n\u00d9\3\u00da\3\u00da\3"+ + "\u00db\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db\3\u00db\5\u00db\u0a5a\n"+ + "\u00db\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\3\u00dc\7\u00dc\u0a62\n"+ + "\u00dc\f\u00dc\16\u00dc\u0a65\13\u00dc\3\u00dd\3\u00dd\3\u00dd\3\u00dd"+ + "\3\u00dd\3\u00dd\7\u00dd\u0a6d\n\u00dd\f\u00dd\16\u00dd\u0a70\13\u00dd"+ + "\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\3\u00de\7\u00de\u0a78\n\u00de"+ + "\f\u00de\16\u00de\u0a7b\13\u00de\3\u00df\3\u00df\3\u00df\3\u00df\3\u00df"+ + "\3\u00df\7\u00df\u0a83\n\u00df\f\u00df\16\u00df\u0a86\13\u00df\3\u00e0"+ + "\3\u00e0\3\u00e0\3\u00e0\3\u00e0\3\u00e0\7\u00e0\u0a8e\n\u00e0\f\u00e0"+ + "\16\u00e0\u0a91\13\u00e0\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1\3\u00e1"+ + "\3\u00e1\3\u00e1\3\u00e1\7\u00e1\u0a9c\n\u00e1\f\u00e1\16\u00e1\u0a9f"+ + "\13\u00e1\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2"+ "\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2"+ - "\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\3\u00e2\7\u00e2\u0ac2"+ - "\n\u00e2\f\u00e2\16\u00e2\u0ac5\13\u00e2\3\u00e3\3\u00e3\3\u00e3\3\u00e3"+ - "\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\7\u00e3\u0ad0\n\u00e3\f\u00e3"+ - "\16\u00e3\u0ad3\13\u00e3\3\u00e4\3\u00e4\3\u00e4\3\u00e4\3\u00e4\3\u00e4"+ - "\3\u00e4\3\u00e4\3\u00e4\3\u00e4\3\u00e4\3\u00e4\7\u00e4\u0ae1\n\u00e4"+ - "\f\u00e4\16\u00e4\u0ae4\13\u00e4\3\u00e5\3\u00e5\3\u00e5\3\u00e5\3\u00e5"+ - "\3\u00e5\3\u00e5\5\u00e5\u0aed\n\u00e5\3\u00e6\3\u00e6\3\u00e6\3\u00e7"+ - "\3\u00e7\3\u00e7\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\3\u00e8\5\u00e8"+ - "\u0afb\n\u00e8\3\u00e9\3\u00e9\5\u00e9\u0aff\n\u00e9\3\u00e9\3\u00e9\7"+ - "\u00e9\u0b03\n\u00e9\f\u00e9\16\u00e9\u0b06\13\u00e9\3\u00ea\3\u00ea\3"+ - "\u00ea\3\u00eb\3\u00eb\3\u00ec\3\u00ec\3\u00ec\3\u00ed\3\u00ed\3\u00ee"+ - "\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee\7\u00ee\u0b1a"+ - "\n\u00ee\f\u00ee\16\u00ee\u0b1d\13\u00ee\3\u00ee\3\u00ee\3\u00ee\3\u00ee"+ - "\3\u00ee\3\u00ee\7\u00ee\u0b25\n\u00ee\f\u00ee\16\u00ee\u0b28\13\u00ee"+ - "\3\u00ee\3\u00ee\3\u00ee\5\u00ee\u0b2d\n\u00ee\3\u00ee\2\17\66:@\u01b4"+ - "\u01b6\u01b8\u01ba\u01bc\u01be\u01c0\u01c2\u01c4\u01c6\u00ef\2\4\6\b\n"+ - "\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\"+ - "^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090"+ - "\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8"+ - "\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc\u00be\u00c0"+ - "\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8"+ - "\u00da\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea\u00ec\u00ee\u00f0"+ - "\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102\u0104\u0106\u0108"+ - "\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a\u011c\u011e\u0120"+ - "\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132\u0134\u0136\u0138"+ - "\u013a\u013c\u013e\u0140\u0142\u0144\u0146\u0148\u014a\u014c\u014e\u0150"+ - "\u0152\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162\u0164\u0166\u0168"+ - "\u016a\u016c\u016e\u0170\u0172\u0174\u0176\u0178\u017a\u017c\u017e\u0180"+ - "\u0182\u0184\u0186\u0188\u018a\u018c\u018e\u0190\u0192\u0194\u0196\u0198"+ - "\u019a\u019c\u019e\u01a0\u01a2\u01a4\u01a6\u01a8\u01aa\u01ac\u01ae\u01b0"+ - "\u01b2\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0\u01c2\u01c4\u01c6\u01c8"+ - "\u01ca\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u01da\2\6\3\2\65:\7\2"+ - "\7\7\n\n\35\35\37\37\'\'\4\2\20\20\26\26\4\2DD]g\u0c22\2\u01dc\3\2\2\2"+ - "\4\u01e0\3\2\2\2\6\u01f0\3\2\2\2\b\u01f4\3\2\2\2\n\u01f6\3\2\2\2\f\u01f8"+ - "\3\2\2\2\16\u01fd\3\2\2\2\20\u0201\3\2\2\2\22\u0220\3\2\2\2\24\u0222\3"+ - "\2\2\2\26\u0230\3\2\2\2\30\u0237\3\2\2\2\32\u0239\3\2\2\2\34\u023b\3\2"+ - "\2\2\36\u0240\3\2\2\2 \u024e\3\2\2\2\"\u0253\3\2\2\2$\u0268\3\2\2\2&\u026f"+ - "\3\2\2\2(\u027b\3\2\2\2*\u027d\3\2\2\2,\u0280\3\2\2\2.\u0284\3\2\2\2\60"+ - "\u028e\3\2\2\2\62\u0293\3\2\2\2\64\u029e\3\2\2\2\66\u02a0\3\2\2\28\u02b0"+ - "\3\2\2\2:\u02b2\3\2\2\2<\u02c2\3\2\2\2>\u02c4\3\2\2\2@\u02c6\3\2\2\2B"+ - "\u02d2\3\2\2\2D\u02e5\3\2\2\2F\u02f3\3\2\2\2H\u02f9\3\2\2\2J\u02fb\3\2"+ - "\2\2L\u02ff\3\2\2\2N\u0305\3\2\2\2P\u030c\3\2\2\2R\u0316\3\2\2\2T\u031a"+ - "\3\2\2\2V\u031f\3\2\2\2X\u0337\3\2\2\2Z\u0339\3\2\2\2\\\u033d\3\2\2\2"+ - "^\u0345\3\2\2\2`\u0348\3\2\2\2b\u034b\3\2\2\2d\u0353\3\2\2\2f\u035f\3"+ - "\2\2\2h\u0366\3\2\2\2j\u036b\3\2\2\2l\u037c\3\2\2\2n\u037e\3\2\2\2p\u0386"+ - "\3\2\2\2r\u038b\3\2\2\2t\u0391\3\2\2\2v\u0395\3\2\2\2x\u0399\3\2\2\2z"+ - "\u039e\3\2\2\2|\u03a2\3\2\2\2~\u03bb\3\2\2\2\u0080\u03bd\3\2\2\2\u0082"+ - "\u03c8\3\2\2\2\u0084\u03cc\3\2\2\2\u0086\u03ce\3\2\2\2\u0088\u03d0\3\2"+ - "\2\2\u008a\u03d2\3\2\2\2\u008c\u03dd\3\2\2\2\u008e\u03e2\3\2\2\2\u0090"+ - "\u03f2\3\2\2\2\u0092\u0409\3\2\2\2\u0094\u040d\3\2\2\2\u0096\u040f\3\2"+ - "\2\2\u0098\u041d\3\2\2\2\u009a\u042f\3\2\2\2\u009c\u0434\3\2\2\2\u009e"+ - "\u043e\3\2\2\2\u00a0\u0451\3\2\2\2\u00a2\u0456\3\2\2\2\u00a4\u0460\3\2"+ - "\2\2\u00a6\u0463\3\2\2\2\u00a8\u046d\3\2\2\2\u00aa\u0471\3\2\2\2\u00ac"+ - "\u0473\3\2\2\2\u00ae\u0475\3\2\2\2\u00b0\u047b\3\2\2\2\u00b2\u0488\3\2"+ - "\2\2\u00b4\u048b\3\2\2\2\u00b6\u0494\3\2\2\2\u00b8\u0496\3\2\2\2\u00ba"+ - "\u04cd\3\2\2\2\u00bc\u04d2\3\2\2\2\u00be\u04dc\3\2\2\2\u00c0\u04e8\3\2"+ - "\2\2\u00c2\u04f3\3\2\2\2\u00c4\u0501\3\2\2\2\u00c6\u0503\3\2\2\2\u00c8"+ - "\u050c\3\2\2\2\u00ca\u0511\3\2\2\2\u00cc\u0525\3\2\2\2\u00ce\u0527\3\2"+ - "\2\2\u00d0\u052a\3\2\2\2\u00d2\u0538\3\2\2\2\u00d4\u053d\3\2\2\2\u00d6"+ - "\u0548\3\2\2\2\u00d8\u054d\3\2\2\2\u00da\u0559\3\2\2\2\u00dc\u055e\3\2"+ - "\2\2\u00de\u0566\3\2\2\2\u00e0\u0574\3\2\2\2\u00e2\u0579\3\2\2\2\u00e4"+ - "\u058b\3\2\2\2\u00e6\u058d\3\2\2\2\u00e8\u0593\3\2\2\2\u00ea\u0595\3\2"+ - "\2\2\u00ec\u059d\3\2\2\2\u00ee\u05a5\3\2\2\2\u00f0\u05ac\3\2\2\2\u00f2"+ - "\u05ae\3\2\2\2\u00f4\u05b7\3\2\2\2\u00f6\u05bf\3\2\2\2\u00f8\u05c2\3\2"+ - "\2\2\u00fa\u05c8\3\2\2\2\u00fc\u05d1\3\2\2\2\u00fe\u05d9\3\2\2\2\u0100"+ - "\u05df\3\2\2\2\u0102\u05e9\3\2\2\2\u0104\u05eb\3\2\2\2\u0106\u05f1\3\2"+ - "\2\2\u0108\u05fd\3\2\2\2\u010a\u0604\3\2\2\2\u010c\u0612\3\2\2\2\u010e"+ - "\u0614\3\2\2\2\u0110\u0616\3\2\2\2\u0112\u061a\3\2\2\2\u0114\u061e\3\2"+ - "\2\2\u0116\u0628\3\2\2\2\u0118\u062a\3\2\2\2\u011a\u0630\3\2\2\2\u011c"+ - "\u0638\3\2\2\2\u011e\u064a\3\2\2\2\u0120\u064c\3\2\2\2\u0122\u0652\3\2"+ - "\2\2\u0124\u0661\3\2\2\2\u0126\u0664\3\2\2\2\u0128\u0675\3\2\2\2\u012a"+ - "\u0677\3\2\2\2\u012c\u0679\3\2\2\2\u012e\u067f\3\2\2\2\u0130\u0685\3\2"+ - "\2\2\u0132\u068f\3\2\2\2\u0134\u0693\3\2\2\2\u0136\u0695\3\2\2\2\u0138"+ - "\u06a5\3\2\2\2\u013a\u06b7\3\2\2\2\u013c\u06b9\3\2\2\2\u013e\u06bb\3\2"+ - "\2\2\u0140\u06c3\3\2\2\2\u0142\u06d2\3\2\2\2\u0144\u06e1\3\2\2\2\u0146"+ - "\u06e7\3\2\2\2\u0148\u06ed\3\2\2\2\u014a\u06f3\3\2\2\2\u014c\u06f7\3\2"+ - "\2\2\u014e\u0709\3\2\2\2\u0150\u070b\3\2\2\2\u0152\u0712\3\2\2\2\u0154"+ - "\u071b\3\2\2\2\u0156\u0721\3\2\2\2\u0158\u0729\3\2\2\2\u015a\u072c\3\2"+ - "\2\2\u015c\u0735\3\2\2\2\u015e\u073c\3\2\2\2\u0160\u0747\3\2\2\2\u0162"+ - "\u0751\3\2\2\2\u0164\u0776\3\2\2\2\u0166\u0778\3\2\2\2\u0168\u0796\3\2"+ - "\2\2\u016a\u079d\3\2\2\2\u016c\u079f\3\2\2\2\u016e\u07a5\3\2\2\2\u0170"+ - "\u07cf\3\2\2\2\u0172\u07d1\3\2\2\2\u0174\u07fa\3\2\2\2\u0176\u084f\3\2"+ - "\2\2\u0178\u0851\3\2\2\2\u017a\u08a3\3\2\2\2\u017c\u08a8\3\2\2\2\u017e"+ - "\u08b7\3\2\2\2\u0180\u08b9\3\2\2\2\u0182\u08c5\3\2\2\2\u0184\u08d1\3\2"+ - "\2\2\u0186\u08dd\3\2\2\2\u0188\u08f6\3\2\2\2\u018a\u0946\3\2\2\2\u018c"+ - "\u0948\3\2\2\2\u018e\u098b\3\2\2\2\u0190\u098d\3\2\2\2\u0192\u09c4\3\2"+ - "\2\2\u0194\u09c6\3\2\2\2\u0196\u09f4\3\2\2\2\u0198\u0a0c\3\2\2\2\u019a"+ - "\u0a0e\3\2\2\2\u019c\u0a18\3\2\2\2\u019e\u0a1f\3\2\2\2\u01a0\u0a23\3\2"+ - "\2\2\u01a2\u0a25\3\2\2\2\u01a4\u0a2f\3\2\2\2\u01a6\u0a31\3\2\2\2\u01a8"+ - "\u0a3b\3\2\2\2\u01aa\u0a3f\3\2\2\2\u01ac\u0a41\3\2\2\2\u01ae\u0a48\3\2"+ - "\2\2\u01b0\u0a4a\3\2\2\2\u01b2\u0a53\3\2\2\2\u01b4\u0a55\3\2\2\2\u01b6"+ - "\u0a60\3\2\2\2\u01b8\u0a6b\3\2\2\2\u01ba\u0a76\3\2\2\2\u01bc\u0a81\3\2"+ - "\2\2\u01be\u0a8c\3\2\2\2\u01c0\u0a9a\3\2\2\2\u01c2\u0ab1\3\2\2\2\u01c4"+ - "\u0ac6\3\2\2\2\u01c6\u0ad4\3\2\2\2\u01c8\u0aec\3\2\2\2\u01ca\u0aee\3\2"+ - "\2\2\u01cc\u0af1\3\2\2\2\u01ce\u0afa\3\2\2\2\u01d0\u0afe\3\2\2\2\u01d2"+ - "\u0b07\3\2\2\2\u01d4\u0b0a\3\2\2\2\u01d6\u0b0c\3\2\2\2\u01d8\u0b0f\3\2"+ - "\2\2\u01da\u0b2c\3\2\2\2\u01dc\u01dd\t\2\2\2\u01dd\3\3\2\2\2\u01de\u01e1"+ - "\5\6\4\2\u01df\u01e1\5\16\b\2\u01e0\u01de\3\2\2\2\u01e0\u01df\3\2\2\2"+ - "\u01e1\5\3\2\2\2\u01e2\u01e4\5\u00e8u\2\u01e3\u01e2\3\2\2\2\u01e4\u01e7"+ - "\3\2\2\2\u01e5\u01e3\3\2\2\2\u01e5\u01e6\3\2\2\2\u01e6\u01e8\3\2\2\2\u01e7"+ - "\u01e5\3\2\2\2\u01e8\u01f1\5\b\5\2\u01e9\u01eb\5\u00e8u\2\u01ea\u01e9"+ - "\3\2\2\2\u01eb\u01ee\3\2\2\2\u01ec\u01ea\3\2\2\2\u01ec\u01ed\3\2\2\2\u01ed"+ - "\u01ef\3\2\2\2\u01ee\u01ec\3\2\2\2\u01ef\u01f1\7\5\2\2\u01f0\u01e5\3\2"+ - "\2\2\u01f0\u01ec\3\2\2\2\u01f1\7\3\2\2\2\u01f2\u01f5\5\n\6\2\u01f3\u01f5"+ - "\5\f\7\2\u01f4\u01f2\3\2\2\2\u01f4\u01f3\3\2\2\2\u01f5\t\3\2\2\2\u01f6"+ - "\u01f7\t\3\2\2\u01f7\13\3\2\2\2\u01f8\u01f9\t\4\2\2\u01f9\r\3\2\2\2\u01fa"+ - "\u01fe\5\20\t\2\u01fb\u01fe\5\36\20\2\u01fc\u01fe\5 \21\2\u01fd\u01fa"+ - "\3\2\2\2\u01fd\u01fb\3\2\2\2\u01fd\u01fc\3\2\2\2\u01fe\17\3\2\2\2\u01ff"+ - "\u0202\5\26\f\2\u0200\u0202\5\34\17\2\u0201\u01ff\3\2\2\2\u0201\u0200"+ - "\3\2\2\2\u0202\u0207\3\2\2\2\u0203\u0206\5\24\13\2\u0204\u0206\5\32\16"+ - "\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\21\3\2\2\2\u0209\u0207\3\2\2\2\u020a"+ - "\u020c\5\u00e8u\2\u020b\u020a\3\2\2\2\u020c\u020f\3\2\2\2\u020d\u020b"+ - "\3\2\2\2\u020d\u020e\3\2\2\2\u020e\u0210\3\2\2\2\u020f\u020d\3\2\2\2\u0210"+ - "\u0212\7h\2\2\u0211\u0213\5,\27\2\u0212\u0211\3\2\2\2\u0212\u0213\3\2"+ - "\2\2\u0213\u0221\3\2\2\2\u0214\u0215\5\20\t\2\u0215\u0219\7C\2\2\u0216"+ - "\u0218\5\u00e8u\2\u0217\u0216\3\2\2\2\u0218\u021b\3\2\2\2\u0219\u0217"+ - "\3\2\2\2\u0219\u021a\3\2\2\2\u021a\u021c\3\2\2\2\u021b\u0219\3\2\2\2\u021c"+ - "\u021e\7h\2\2\u021d\u021f\5,\27\2\u021e\u021d\3\2\2\2\u021e\u021f\3\2"+ - "\2\2\u021f\u0221\3\2\2\2\u0220\u020d\3\2\2\2\u0220\u0214\3\2\2\2\u0221"+ - "\23\3\2\2\2\u0222\u0226\7C\2\2\u0223\u0225\5\u00e8u\2\u0224\u0223\3\2"+ - "\2\2\u0225\u0228\3\2\2\2\u0226\u0224\3\2\2\2\u0226\u0227\3\2\2\2\u0227"+ - "\u0229\3\2\2\2\u0228\u0226\3\2\2\2\u0229\u022b\7h\2\2\u022a\u022c\5,\27"+ - "\2\u022b\u022a\3\2\2\2\u022b\u022c\3\2\2\2\u022c\25\3\2\2\2\u022d\u022f"+ - "\5\u00e8u\2\u022e\u022d\3\2\2\2\u022f\u0232\3\2\2\2\u0230\u022e\3\2\2"+ - "\2\u0230\u0231\3\2\2\2\u0231\u0233\3\2\2\2\u0232\u0230\3\2\2\2\u0233\u0235"+ - "\7h\2\2\u0234\u0236\5,\27\2\u0235\u0234\3\2\2\2\u0235\u0236\3\2\2\2\u0236"+ - "\27\3\2\2\2\u0237\u0238\5\22\n\2\u0238\31\3\2\2\2\u0239\u023a\5\24\13"+ - "\2\u023a\33\3\2\2\2\u023b\u023c\5\26\f\2\u023c\35\3\2\2\2\u023d\u023f"+ - "\5\u00e8u\2\u023e\u023d\3\2\2\2\u023f\u0242\3\2\2\2\u0240\u023e\3\2\2"+ - "\2\u0240\u0241\3\2\2\2\u0241\u0243\3\2\2\2\u0242\u0240\3\2\2\2\u0243\u0244"+ - "\7h\2\2\u0244\37\3\2\2\2\u0245\u0246\5\6\4\2\u0246\u0247\5\"\22\2\u0247"+ - "\u024f\3\2\2\2\u0248\u0249\5\20\t\2\u0249\u024a\5\"\22\2\u024a\u024f\3"+ - "\2\2\2\u024b\u024c\5\36\20\2\u024c\u024d\5\"\22\2\u024d\u024f\3\2\2\2"+ - "\u024e\u0245\3\2\2\2\u024e\u0248\3\2\2\2\u024e\u024b\3\2\2\2\u024f!\3"+ - "\2\2\2\u0250\u0252\5\u00e8u\2\u0251\u0250\3\2\2\2\u0252\u0255\3\2\2\2"+ - "\u0253\u0251\3\2\2\2\u0253\u0254\3\2\2\2\u0254\u0256\3\2\2\2\u0255\u0253"+ - "\3\2\2\2\u0256\u0257\7?\2\2\u0257\u0262\7@\2\2\u0258\u025a\5\u00e8u\2"+ - "\u0259\u0258\3\2\2\2\u025a\u025d\3\2\2\2\u025b\u0259\3\2\2\2\u025b\u025c"+ - "\3\2\2\2\u025c\u025e\3\2\2\2\u025d\u025b\3\2\2\2\u025e\u025f\7?\2\2\u025f"+ - "\u0261\7@\2\2\u0260\u025b\3\2\2\2\u0261\u0264\3\2\2\2\u0262\u0260\3\2"+ - "\2\2\u0262\u0263\3\2\2\2\u0263#\3\2\2\2\u0264\u0262\3\2\2\2\u0265\u0267"+ - "\5&\24\2\u0266\u0265\3\2\2\2\u0267\u026a\3\2\2\2\u0268\u0266\3\2\2\2\u0268"+ - "\u0269\3\2\2\2\u0269\u026b\3\2\2\2\u026a\u0268\3\2\2\2\u026b\u026d\7h"+ - "\2\2\u026c\u026e\5(\25\2\u026d\u026c\3\2\2\2\u026d\u026e\3\2\2\2\u026e"+ - "%\3\2\2\2\u026f\u0270\5\u00e8u\2\u0270\'\3\2\2\2\u0271\u0272\7\23\2\2"+ - "\u0272\u027c\5\36\20\2\u0273\u0274\7\23\2\2\u0274\u0278\5\20\t\2\u0275"+ - "\u0277\5*\26\2\u0276\u0275\3\2\2\2\u0277\u027a\3\2\2\2\u0278\u0276\3\2"+ - "\2\2\u0278\u0279\3\2\2\2\u0279\u027c\3\2\2\2\u027a\u0278\3\2\2\2\u027b"+ - "\u0271\3\2\2\2\u027b\u0273\3\2\2\2\u027c)\3\2\2\2\u027d\u027e\7W\2\2\u027e"+ - "\u027f\5\30\r\2\u027f+\3\2\2\2\u0280\u0281\7F\2\2\u0281\u0282\5.\30\2"+ - "\u0282\u0283\7E\2\2\u0283-\3\2\2\2\u0284\u0289\5\60\31\2\u0285\u0286\7"+ - "B\2\2\u0286\u0288\5\60\31\2\u0287\u0285\3\2\2\2\u0288\u028b\3\2\2\2\u0289"+ - "\u0287\3\2\2\2\u0289\u028a\3\2\2\2\u028a/\3\2\2\2\u028b\u0289\3\2\2\2"+ - "\u028c\u028f\5\16\b\2\u028d\u028f\5\62\32\2\u028e\u028c\3\2\2\2\u028e"+ - "\u028d\3\2\2\2\u028f\61\3\2\2\2\u0290\u0292\5\u00e8u\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"+ - "\u0296\3\2\2\2\u0295\u0293\3\2\2\2\u0296\u0298\7I\2\2\u0297\u0299\5\64"+ - "\33\2\u0298\u0297\3\2\2\2\u0298\u0299\3\2\2\2\u0299\63\3\2\2\2\u029a\u029b"+ - "\7\23\2\2\u029b\u029f\5\16\b\2\u029c\u029d\7*\2\2\u029d\u029f\5\16\b\2"+ - "\u029e\u029a\3\2\2\2\u029e\u029c\3\2\2\2\u029f\65\3\2\2\2\u02a0\u02a1"+ - "\b\34\1\2\u02a1\u02a2\7h\2\2\u02a2\u02a8\3\2\2\2\u02a3\u02a4\f\3\2\2\u02a4"+ - "\u02a5\7C\2\2\u02a5\u02a7\7h\2\2\u02a6\u02a3\3\2\2\2\u02a7\u02aa\3\2\2"+ - "\2\u02a8\u02a6\3\2\2\2\u02a8\u02a9\3\2\2\2\u02a9\67\3\2\2\2\u02aa\u02a8"+ - "\3\2\2\2\u02ab\u02b1\7h\2\2\u02ac\u02ad\5:\36\2\u02ad\u02ae\7C\2\2\u02ae"+ - "\u02af\7h\2\2\u02af\u02b1\3\2\2\2\u02b0\u02ab\3\2\2\2\u02b0\u02ac\3\2"+ - "\2\2\u02b19\3\2\2\2\u02b2\u02b3\b\36\1\2\u02b3\u02b4\7h\2\2\u02b4\u02ba"+ - "\3\2\2\2\u02b5\u02b6\f\3\2\2\u02b6\u02b7\7C\2\2\u02b7\u02b9\7h\2\2\u02b8"+ - "\u02b5\3\2\2\2\u02b9\u02bc\3\2\2\2\u02ba\u02b8\3\2\2\2\u02ba\u02bb\3\2"+ - "\2\2\u02bb;\3\2\2\2\u02bc\u02ba\3\2\2\2\u02bd\u02c3\7h\2\2\u02be\u02bf"+ - "\5@!\2\u02bf\u02c0\7C\2\2\u02c0\u02c1\7h\2\2\u02c1\u02c3\3\2\2\2\u02c2"+ - "\u02bd\3\2\2\2\u02c2\u02be\3\2\2\2\u02c3=\3\2\2\2\u02c4\u02c5\7h\2\2\u02c5"+ - "?\3\2\2\2\u02c6\u02c7\b!\1\2\u02c7\u02c8\7h\2\2\u02c8\u02ce\3\2\2\2\u02c9"+ - "\u02ca\f\3\2\2\u02ca\u02cb\7C\2\2\u02cb\u02cd\7h\2\2\u02cc\u02c9\3\2\2"+ - "\2\u02cd\u02d0\3\2\2\2\u02ce\u02cc\3\2\2\2\u02ce\u02cf\3\2\2\2\u02cfA"+ - "\3\2\2\2\u02d0\u02ce\3\2\2\2\u02d1\u02d3\5D#\2\u02d2\u02d1\3\2\2\2\u02d2"+ - "\u02d3\3\2\2\2\u02d3\u02d7\3\2\2\2\u02d4\u02d6\5H%\2\u02d5\u02d4\3\2\2"+ - "\2\u02d6\u02d9\3\2\2\2\u02d7\u02d5\3\2\2\2\u02d7\u02d8\3\2\2\2\u02d8\u02dd"+ - "\3\2\2\2\u02d9\u02d7\3\2\2\2\u02da\u02dc\5R*\2\u02db\u02da\3\2\2\2\u02dc"+ - "\u02df\3\2\2\2\u02dd\u02db\3\2\2\2\u02dd\u02de\3\2\2\2\u02de\u02e0\3\2"+ - "\2\2\u02df\u02dd\3\2\2\2\u02e0\u02e1\7\2\2\3\u02e1C\3\2\2\2\u02e2\u02e4"+ - "\5F$\2\u02e3\u02e2\3\2\2\2\u02e4\u02e7\3\2\2\2\u02e5\u02e3\3\2\2\2\u02e5"+ - "\u02e6\3\2\2\2\u02e6\u02e8\3\2\2\2\u02e7\u02e5\3\2\2\2\u02e8\u02e9\7\""+ - "\2\2\u02e9\u02ee\7h\2\2\u02ea\u02eb\7C\2\2\u02eb\u02ed\7h\2\2\u02ec\u02ea"+ - "\3\2\2\2\u02ed\u02f0\3\2\2\2\u02ee\u02ec\3\2\2\2\u02ee\u02ef\3\2\2\2\u02ef"+ - "\u02f1\3\2\2\2\u02f0\u02ee\3\2\2\2\u02f1\u02f2\7A\2\2\u02f2E\3\2\2\2\u02f3"+ - "\u02f4\5\u00e8u\2\u02f4G\3\2\2\2\u02f5\u02fa\5J&\2\u02f6\u02fa\5L\'\2"+ - "\u02f7\u02fa\5N(\2\u02f8\u02fa\5P)\2\u02f9\u02f5\3\2\2\2\u02f9\u02f6\3"+ - "\2\2\2\u02f9\u02f7\3\2\2\2\u02f9\u02f8\3\2\2\2\u02faI\3\2\2\2\u02fb\u02fc"+ - "\7\33\2\2\u02fc\u02fd\58\35\2\u02fd\u02fe\7A\2\2\u02feK\3\2\2\2\u02ff"+ - "\u0300\7\33\2\2\u0300\u0301\5:\36\2\u0301\u0302\7C\2\2\u0302\u0303\7U"+ - "\2\2\u0303\u0304\7A\2\2\u0304M\3\2\2\2\u0305\u0306\7\33\2\2\u0306\u0307"+ - "\7(\2\2\u0307\u0308\58\35\2\u0308\u0309\7C\2\2\u0309\u030a\7h\2\2\u030a"+ - "\u030b\7A\2\2\u030bO\3\2\2\2\u030c\u030d\7\33\2\2\u030d\u030e\7(\2\2\u030e"+ - "\u030f\58\35\2\u030f\u0310\7C\2\2\u0310\u0311\7U\2\2\u0311\u0312\7A\2"+ - "\2\u0312Q\3\2\2\2\u0313\u0317\5T+\2\u0314\u0317\5\u00c8e\2\u0315\u0317"+ - "\7A\2\2\u0316\u0313\3\2\2\2\u0316\u0314\3\2\2\2\u0316\u0315\3\2\2\2\u0317"+ - "S\3\2\2\2\u0318\u031b\5V,\2\u0319\u031b\5\u00bc_\2\u031a\u0318\3\2\2\2"+ - "\u031a\u0319\3\2\2\2\u031bU\3\2\2\2\u031c\u031e\5X-\2\u031d\u031c\3\2"+ - "\2\2\u031e\u0321\3\2\2\2\u031f\u031d\3\2\2\2\u031f\u0320\3\2\2\2\u0320"+ - "\u0322\3\2\2\2\u0321\u031f\3\2\2\2\u0322\u0323\7\13\2\2\u0323\u0325\7"+ - "h\2\2\u0324\u0326\5Z.\2\u0325\u0324\3\2\2\2\u0325\u0326\3\2\2\2\u0326"+ - "\u0328\3\2\2\2\u0327\u0329\5^\60\2\u0328\u0327\3\2\2\2\u0328\u0329\3\2"+ - "\2\2\u0329\u032b\3\2\2\2\u032a\u032c\5`\61\2\u032b\u032a\3\2\2\2\u032b"+ - "\u032c\3\2\2\2\u032c\u032d\3\2\2\2\u032d\u032e\5d\63\2\u032eW\3\2\2\2"+ - "\u032f\u0338\5\u00e8u\2\u0330\u0338\7%\2\2\u0331\u0338\7$\2\2\u0332\u0338"+ - "\7#\2\2\u0333\u0338\7\3\2\2\u0334\u0338\7(\2\2\u0335\u0338\7\24\2\2\u0336"+ - "\u0338\7)\2\2\u0337\u032f\3\2\2\2\u0337\u0330\3\2\2\2\u0337\u0331\3\2"+ - "\2\2\u0337\u0332\3\2\2\2\u0337\u0333\3\2\2\2\u0337\u0334\3\2\2\2\u0337"+ - "\u0335\3\2\2\2\u0337\u0336\3\2\2\2\u0338Y\3\2\2\2\u0339\u033a\7F\2\2\u033a"+ - "\u033b\5\\/\2\u033b\u033c\7E\2\2\u033c[\3\2\2\2\u033d\u0342\5$\23\2\u033e"+ - "\u033f\7B\2\2\u033f\u0341\5$\23\2\u0340\u033e\3\2\2\2\u0341\u0344\3\2"+ - "\2\2\u0342\u0340\3\2\2\2\u0342\u0343\3\2\2\2\u0343]\3\2\2\2\u0344\u0342"+ - "\3\2\2\2\u0345\u0346\7\23\2\2\u0346\u0347\5\22\n\2\u0347_\3\2\2\2\u0348"+ - "\u0349\7\32\2\2\u0349\u034a\5b\62\2\u034aa\3\2\2\2\u034b\u0350\5\30\r"+ - "\2\u034c\u034d\7B\2\2\u034d\u034f\5\30\r\2\u034e\u034c\3\2\2\2\u034f\u0352"+ - "\3\2\2\2\u0350\u034e\3\2\2\2\u0350\u0351\3\2\2\2\u0351c\3\2\2\2\u0352"+ - "\u0350\3\2\2\2\u0353\u0357\7=\2\2\u0354\u0356\5f\64\2\u0355\u0354\3\2"+ - "\2\2\u0356\u0359\3\2\2\2\u0357\u0355\3\2\2\2\u0357\u0358\3\2\2\2\u0358"+ - "\u035a\3\2\2\2\u0359\u0357\3\2\2\2\u035a\u035b\7>\2\2\u035be\3\2\2\2\u035c"+ - "\u0360\5h\65\2\u035d\u0360\5\u00acW\2\u035e\u0360\5\u00aeX\2\u035f\u035c"+ - "\3\2\2\2\u035f\u035d\3\2\2\2\u035f\u035e\3\2\2\2\u0360g\3\2\2\2\u0361"+ - "\u0367\5j\66\2\u0362\u0367\5\u008eH\2\u0363\u0367\5T+\2\u0364\u0367\5"+ - "\u00c8e\2\u0365\u0367\7A\2\2\u0366\u0361\3\2\2\2\u0366\u0362\3\2\2\2\u0366"+ - "\u0363\3\2\2\2\u0366\u0364\3\2\2\2\u0366\u0365\3\2\2\2\u0367i\3\2\2\2"+ - "\u0368\u036a\5l\67\2\u0369\u0368\3\2\2\2\u036a\u036d\3\2\2\2\u036b\u0369"+ - "\3\2\2\2\u036b\u036c\3\2\2\2\u036c\u036f\3\2\2\2\u036d\u036b\3\2\2\2\u036e"+ - "\u0370\5v<\2\u036f\u036e\3\2\2\2\u036f\u0370\3\2\2\2\u0370\u0371\3\2\2"+ - "\2\u0371\u0372\5n8\2\u0372\u0373\7A\2\2\u0373k\3\2\2\2\u0374\u037d\5\u00e8"+ - "u\2\u0375\u037d\7%\2\2\u0376\u037d\7$\2\2\u0377\u037d\7#\2\2\u0378\u037d"+ - "\7(\2\2\u0379\u037d\7\24\2\2\u037a\u037d\7\60\2\2\u037b\u037d\7\63\2\2"+ - "\u037c\u0374\3\2\2\2\u037c\u0375\3\2\2\2\u037c\u0376\3\2\2\2\u037c\u0377"+ - "\3\2\2\2\u037c\u0378\3\2\2\2\u037c\u0379\3\2\2\2\u037c\u037a\3\2\2\2\u037c"+ - "\u037b\3\2\2\2\u037dm\3\2\2\2\u037e\u0383\5p9\2\u037f\u0380\7B\2\2\u0380"+ - "\u0382\5p9\2\u0381\u037f\3\2\2\2\u0382\u0385\3\2\2\2\u0383\u0381\3\2\2"+ - "\2\u0383\u0384\3\2\2\2\u0384o\3\2\2\2\u0385\u0383\3\2\2\2\u0386\u0389"+ - "\5r:\2\u0387\u0388\7D\2\2\u0388\u038a\5t;\2\u0389\u0387\3\2\2\2\u0389"+ - "\u038a\3\2\2\2\u038aq\3\2\2\2\u038b\u038d\7h\2\2\u038c\u038e\5\"\22\2"+ - "\u038d\u038c\3\2\2\2\u038d\u038e\3\2\2\2\u038es\3\2\2\2\u038f\u0392\5"+ - "\u01a0\u00d1\2\u0390\u0392\5\u00fa~\2\u0391\u038f\3\2\2\2\u0391\u0390"+ - "\3\2\2\2\u0392u\3\2\2\2\u0393\u0396\5x=\2\u0394\u0396\5z>\2\u0395\u0393"+ - "\3\2\2\2\u0395\u0394\3\2\2\2\u0396w\3\2\2\2\u0397\u039a\5\b\5\2\u0398"+ - "\u039a\7\5\2\2\u0399\u0397\3\2\2\2\u0399\u0398\3\2\2\2\u039ay\3\2\2\2"+ - "\u039b\u039f\5|?\2\u039c\u039f\5\u008aF\2\u039d\u039f\5\u008cG\2\u039e"+ - "\u039b\3\2\2\2\u039e\u039c\3\2\2\2\u039e\u039d\3\2\2\2\u039f{\3\2\2\2"+ - "\u03a0\u03a3\5\u0082B\2\u03a1\u03a3\5\u0088E\2\u03a2\u03a0\3\2\2\2\u03a2"+ - "\u03a1\3\2\2\2\u03a3\u03a8\3\2\2\2\u03a4\u03a7\5\u0080A\2\u03a5\u03a7"+ - "\5\u0086D\2\u03a6\u03a4\3\2\2\2\u03a6\u03a5\3\2\2\2\u03a7\u03aa\3\2\2"+ - "\2\u03a8\u03a6\3\2\2\2\u03a8\u03a9\3\2\2\2\u03a9}\3\2\2\2\u03aa\u03a8"+ - "\3\2\2\2\u03ab\u03ad\7h\2\2\u03ac\u03ae\5,\27\2\u03ad\u03ac\3\2\2\2\u03ad"+ - "\u03ae\3\2\2\2\u03ae\u03bc\3\2\2\2\u03af\u03b0\5|?\2\u03b0\u03b4\7C\2"+ - "\2\u03b1\u03b3\5\u00e8u\2\u03b2\u03b1\3\2\2\2\u03b3\u03b6\3\2\2\2\u03b4"+ - "\u03b2\3\2\2\2\u03b4\u03b5\3\2\2\2\u03b5\u03b7\3\2\2\2\u03b6\u03b4\3\2"+ - "\2\2\u03b7\u03b9\7h\2\2\u03b8\u03ba\5,\27\2\u03b9\u03b8\3\2\2\2\u03b9"+ - "\u03ba\3\2\2\2\u03ba\u03bc\3\2\2\2\u03bb\u03ab\3\2\2\2\u03bb\u03af\3\2"+ - "\2\2\u03bc\177\3\2\2\2\u03bd\u03c1\7C\2\2\u03be\u03c0\5\u00e8u\2\u03bf"+ - "\u03be\3\2\2\2\u03c0\u03c3\3\2\2\2\u03c1\u03bf\3\2\2\2\u03c1\u03c2\3\2"+ - "\2\2\u03c2\u03c4\3\2\2\2\u03c3\u03c1\3\2\2\2\u03c4\u03c6\7h\2\2\u03c5"+ - "\u03c7\5,\27\2\u03c6\u03c5\3\2\2\2\u03c6\u03c7\3\2\2\2\u03c7\u0081\3\2"+ - "\2\2\u03c8\u03ca\7h\2\2\u03c9\u03cb\5,\27\2\u03ca\u03c9\3\2\2\2\u03ca"+ - "\u03cb\3\2\2\2\u03cb\u0083\3\2\2\2\u03cc\u03cd\5~@\2\u03cd\u0085\3\2\2"+ - "\2\u03ce\u03cf\5\u0080A\2\u03cf\u0087\3\2\2\2\u03d0\u03d1\5\u0082B\2\u03d1"+ - "\u0089\3\2\2\2\u03d2\u03d3\7h\2\2\u03d3\u008b\3\2\2\2\u03d4\u03d5\5x="+ - "\2\u03d5\u03d6\5\"\22\2\u03d6\u03de\3\2\2\2\u03d7\u03d8\5|?\2\u03d8\u03d9"+ - "\5\"\22\2\u03d9\u03de\3\2\2\2\u03da\u03db\5\u008aF\2\u03db\u03dc\5\"\22"+ - "\2\u03dc\u03de\3\2\2\2\u03dd\u03d4\3\2\2\2\u03dd\u03d7\3\2\2\2\u03dd\u03da"+ - "\3\2\2\2\u03de\u008d\3\2\2\2\u03df\u03e1\5\u0090I\2\u03e0\u03df\3\2\2"+ - "\2\u03e1\u03e4\3\2\2\2\u03e2\u03e0\3\2\2\2\u03e2\u03e3\3\2\2\2\u03e3\u03e5"+ - "\3\2\2\2\u03e4\u03e2\3\2\2\2\u03e5\u03e6\5\u0092J\2\u03e6\u03e7\5\u00aa"+ - "V\2\u03e7\u008f\3\2\2\2\u03e8\u03f3\5\u00e8u\2\u03e9\u03f3\7%\2\2\u03ea"+ - "\u03f3\7$\2\2\u03eb\u03f3\7#\2\2\u03ec\u03f3\7\3\2\2\u03ed\u03f3\7(\2"+ - "\2\u03ee\u03f3\7\24\2\2\u03ef\u03f3\7,\2\2\u03f0\u03f3\7 \2\2\u03f1\u03f3"+ - "\7)\2\2\u03f2\u03e8\3\2\2\2\u03f2\u03e9\3\2\2\2\u03f2\u03ea\3\2\2\2\u03f2"+ - "\u03eb\3\2\2\2\u03f2\u03ec\3\2\2\2\u03f2\u03ed\3\2\2\2\u03f2\u03ee\3\2"+ - "\2\2\u03f2\u03ef\3\2\2\2\u03f2\u03f0\3\2\2\2\u03f2\u03f1\3\2\2\2\u03f3"+ - "\u0091\3\2\2\2\u03f4\u03f6\5\u0094K\2\u03f5\u03f4\3\2\2\2\u03f5\u03f6"+ - "\3\2\2\2\u03f6\u03f7\3\2\2\2\u03f7\u03f9\5\u0096L\2\u03f8\u03fa\5\u00a4"+ - "S\2\u03f9\u03f8\3\2\2\2\u03f9\u03fa\3\2\2\2\u03fa\u040a\3\2\2\2\u03fb"+ - "\u03ff\5Z.\2\u03fc\u03fe\5\u00e8u\2\u03fd\u03fc\3\2\2\2\u03fe\u0401\3"+ - "\2\2\2\u03ff\u03fd\3\2\2\2\u03ff\u0400\3\2\2\2\u0400\u0403\3\2\2\2\u0401"+ - "\u03ff\3\2\2\2\u0402\u0404\5\u0094K\2\u0403\u0402\3\2\2\2\u0403\u0404"+ - "\3\2\2\2\u0404\u0405\3\2\2\2\u0405\u0407\5\u0096L\2\u0406\u0408\5\u00a4"+ - "S\2\u0407\u0406\3\2\2\2\u0407\u0408\3\2\2\2\u0408\u040a\3\2\2\2\u0409"+ - "\u03f5\3\2\2\2\u0409\u03fb\3\2\2\2\u040a\u0093\3\2\2\2\u040b\u040e\5v"+ - "<\2\u040c\u040e\7\62\2\2\u040d\u040b\3\2\2\2\u040d\u040c\3\2\2\2\u040e"+ - "\u0095\3\2\2\2\u040f\u0410\7h\2\2\u0410\u0412\7;\2\2\u0411\u0413\5\u0098"+ - "M\2\u0412\u0411\3\2\2\2\u0412\u0413\3\2\2\2\u0413\u0414\3\2\2\2\u0414"+ - "\u0416\7<\2\2\u0415\u0417\5\"\22\2\u0416\u0415\3\2\2\2\u0416\u0417\3\2"+ - "\2\2\u0417\u0097\3\2\2\2\u0418\u0419\5\u009aN\2\u0419\u041a\7B\2\2\u041a"+ - "\u041b\5\u00a0Q\2\u041b\u041e\3\2\2\2\u041c\u041e\5\u00a0Q\2\u041d\u0418"+ - "\3\2\2\2\u041d\u041c\3\2\2\2\u041e\u0099\3\2\2\2\u041f\u0424\5\u009cO"+ - "\2\u0420\u0421\7B\2\2\u0421\u0423\5\u009cO\2\u0422\u0420\3\2\2\2\u0423"+ - "\u0426\3\2\2\2\u0424\u0422\3\2\2\2\u0424\u0425\3\2\2\2\u0425\u0430\3\2"+ - "\2\2\u0426\u0424\3\2\2\2\u0427\u042c\5\u00a2R\2\u0428\u0429\7B\2\2\u0429"+ - "\u042b\5\u009cO\2\u042a\u0428\3\2\2\2\u042b\u042e\3\2\2\2\u042c\u042a"+ - "\3\2\2\2\u042c\u042d\3\2\2\2\u042d\u0430\3\2\2\2\u042e\u042c\3\2\2\2\u042f"+ - "\u041f\3\2\2\2\u042f\u0427\3\2\2\2\u0430\u009b\3\2\2\2\u0431\u0433\5\u009e"+ - "P\2\u0432\u0431\3\2\2\2\u0433\u0436\3\2\2\2\u0434\u0432\3\2\2\2\u0434"+ - "\u0435\3\2\2\2\u0435\u0438\3\2\2\2\u0436\u0434\3\2\2\2\u0437\u0439\5v"+ - "<\2\u0438\u0437\3\2\2\2\u0438\u0439\3\2\2\2\u0439\u043a\3\2\2\2\u043a"+ - "\u043b\5r:\2\u043b\u009d\3\2\2\2\u043c\u043f\5\u00e8u\2\u043d\u043f\7"+ - "\24\2\2\u043e\u043c\3\2\2\2\u043e\u043d\3\2\2\2\u043f\u009f\3\2\2\2\u0440"+ - "\u0442\5\u009eP\2\u0441\u0440\3\2\2\2\u0442\u0445\3\2\2\2\u0443\u0441"+ - "\3\2\2\2\u0443\u0444\3\2\2\2\u0444\u0446\3\2\2\2\u0445\u0443\3\2\2\2\u0446"+ - "\u044a\5v<\2\u0447\u0449\5\u00e8u\2\u0448\u0447\3\2\2\2\u0449\u044c\3"+ - "\2\2\2\u044a\u0448\3\2\2\2\u044a\u044b\3\2\2\2\u044b\u044d\3\2\2\2\u044c"+ - "\u044a\3\2\2\2\u044d\u044e\7j\2\2\u044e\u044f\5r:\2\u044f\u0452\3\2\2"+ - "\2\u0450\u0452\5\u009cO\2\u0451\u0443\3\2\2\2\u0451\u0450\3\2\2\2\u0452"+ - "\u00a1\3\2\2\2\u0453\u0455\5\u00e8u\2\u0454\u0453\3\2\2\2\u0455\u0458"+ - "\3\2\2\2\u0456\u0454\3\2\2\2\u0456\u0457\3\2\2\2\u0457\u0459\3\2\2\2\u0458"+ - "\u0456\3\2\2\2\u0459\u045c\5v<\2\u045a\u045b\7h\2\2\u045b\u045d\7C\2\2"+ - "\u045c\u045a\3\2\2\2\u045c\u045d\3\2\2\2\u045d\u045e\3\2\2\2\u045e\u045f"+ - "\7-\2\2\u045f\u00a3\3\2\2\2\u0460\u0461\7/\2\2\u0461\u0462\5\u00a6T\2"+ - "\u0462\u00a5\3\2\2\2\u0463\u0468\5\u00a8U\2\u0464\u0465\7B\2\2\u0465\u0467"+ - "\5\u00a8U\2\u0466\u0464\3\2\2\2\u0467\u046a\3\2\2\2\u0468\u0466\3\2\2"+ - "\2\u0468\u0469\3\2\2\2\u0469\u00a7\3\2\2\2\u046a\u0468\3\2\2\2\u046b\u046e"+ - "\5\22\n\2\u046c\u046e\5\36\20\2\u046d\u046b\3\2\2\2\u046d\u046c\3\2\2"+ - "\2\u046e\u00a9\3\2\2\2\u046f\u0472\5\u00fe\u0080\2\u0470\u0472\7A\2\2"+ - "\u0471\u046f\3\2\2\2\u0471\u0470\3\2\2\2\u0472\u00ab\3\2\2\2\u0473\u0474"+ - "\5\u00fe\u0080\2\u0474\u00ad\3\2\2\2\u0475\u0476\7(\2\2\u0476\u0477\5"+ - "\u00fe\u0080\2\u0477\u00af\3\2\2\2\u0478\u047a\5\u00b2Z\2\u0479\u0478"+ - "\3\2\2\2\u047a\u047d\3\2\2\2\u047b\u0479\3\2\2\2\u047b\u047c\3\2\2\2\u047c"+ - "\u047e\3\2\2\2\u047d\u047b\3\2\2\2\u047e\u0480\5\u00b4[\2\u047f\u0481"+ - "\5\u00a4S\2\u0480\u047f\3\2\2\2\u0480\u0481\3\2\2\2\u0481\u0482\3\2\2"+ - "\2\u0482\u0483\5\u00b8]\2\u0483\u00b1\3\2\2\2\u0484\u0489\5\u00e8u\2\u0485"+ - "\u0489\7%\2\2\u0486\u0489\7$\2\2\u0487\u0489\7#\2\2\u0488\u0484\3\2\2"+ - "\2\u0488\u0485\3\2\2\2\u0488\u0486\3\2\2\2\u0488\u0487\3\2\2\2\u0489\u00b3"+ - "\3\2\2\2\u048a\u048c\5Z.\2\u048b\u048a\3\2\2\2\u048b\u048c\3\2\2\2\u048c"+ - "\u048d\3\2\2\2\u048d\u048e\5\u00b6\\\2\u048e\u0490\7;\2\2\u048f\u0491"+ - "\5\u0098M\2\u0490\u048f\3\2\2\2\u0490\u0491\3\2\2\2\u0491\u0492\3\2\2"+ - "\2\u0492\u0493\7<\2\2\u0493\u00b5\3\2\2\2\u0494\u0495\7h\2\2\u0495\u00b7"+ - "\3\2\2\2\u0496\u0498\7=\2\2\u0497\u0499\5\u00ba^\2\u0498\u0497\3\2\2\2"+ - "\u0498\u0499\3\2\2\2\u0499\u049b\3\2\2\2\u049a\u049c\5\u0100\u0081\2\u049b"+ - "\u049a\3\2\2\2\u049b\u049c\3\2\2\2\u049c\u049d\3\2\2\2\u049d\u049e\7>"+ - "\2\2\u049e\u00b9\3\2\2\2\u049f\u04a1\5,\27\2\u04a0\u049f\3\2\2\2\u04a0"+ - "\u04a1\3\2\2\2\u04a1\u04a2\3\2\2\2\u04a2\u04a3\7-\2\2\u04a3\u04a5\7;\2"+ - "\2\u04a4\u04a6\5\u0190\u00c9\2\u04a5\u04a4\3\2\2\2\u04a5\u04a6\3\2\2\2"+ - "\u04a6\u04a7\3\2\2\2\u04a7\u04a8\7<\2\2\u04a8\u04ce\7A\2\2\u04a9\u04ab"+ - "\5,\27\2\u04aa\u04a9\3\2\2\2\u04aa\u04ab\3\2\2\2\u04ab\u04ac\3\2\2\2\u04ac"+ - "\u04ad\7*\2\2\u04ad\u04af\7;\2\2\u04ae\u04b0\5\u0190\u00c9\2\u04af\u04ae"+ - "\3\2\2\2\u04af\u04b0\3\2\2\2\u04b0\u04b1\3\2\2\2\u04b1\u04b2\7<\2\2\u04b2"+ - "\u04ce\7A\2\2\u04b3\u04b4\5<\37\2\u04b4\u04b6\7C\2\2\u04b5\u04b7\5,\27"+ - "\2\u04b6\u04b5\3\2\2\2\u04b6\u04b7\3\2\2\2\u04b7\u04b8\3\2\2\2\u04b8\u04b9"+ - "\7*\2\2\u04b9\u04bb\7;\2\2\u04ba\u04bc\5\u0190\u00c9\2\u04bb\u04ba\3\2"+ - "\2\2\u04bb\u04bc\3\2\2\2\u04bc\u04bd\3\2\2\2\u04bd\u04be\7<\2\2\u04be"+ - "\u04bf\7A\2\2\u04bf\u04ce\3\2\2\2\u04c0\u04c1\5\u0162\u00b2\2\u04c1\u04c3"+ - "\7C\2\2\u04c2\u04c4\5,\27\2\u04c3\u04c2\3\2\2\2\u04c3\u04c4\3\2\2\2\u04c4"+ - "\u04c5\3\2\2\2\u04c5\u04c6\7*\2\2\u04c6\u04c8\7;\2\2\u04c7\u04c9\5\u0190"+ - "\u00c9\2\u04c8\u04c7\3\2\2\2\u04c8\u04c9\3\2\2\2\u04c9\u04ca\3\2\2\2\u04ca"+ - "\u04cb\7<\2\2\u04cb\u04cc\7A\2\2\u04cc\u04ce\3\2\2\2\u04cd\u04a0\3\2\2"+ - "\2\u04cd\u04aa\3\2\2\2\u04cd\u04b3\3\2\2\2\u04cd\u04c0\3\2\2\2\u04ce\u00bb"+ - "\3\2\2\2\u04cf\u04d1\5X-\2\u04d0\u04cf\3\2\2\2\u04d1\u04d4\3\2\2\2\u04d2"+ - "\u04d0\3\2\2\2\u04d2\u04d3\3\2\2\2\u04d3\u04d5\3\2\2\2\u04d4\u04d2\3\2"+ - "\2\2\u04d5\u04d6\7\22\2\2\u04d6\u04d8\7h\2\2\u04d7\u04d9\5`\61\2\u04d8"+ - "\u04d7\3\2\2\2\u04d8\u04d9\3\2\2\2\u04d9\u04da\3\2\2\2\u04da\u04db\5\u00be"+ - "`\2\u04db\u00bd\3\2\2\2\u04dc\u04de\7=\2\2\u04dd\u04df\5\u00c0a\2\u04de"+ - "\u04dd\3\2\2\2\u04de\u04df\3\2\2\2\u04df\u04e1\3\2\2\2\u04e0\u04e2\7B"+ - "\2\2\u04e1\u04e0\3\2\2\2\u04e1\u04e2\3\2\2\2\u04e2\u04e4\3\2\2\2\u04e3"+ - "\u04e5\5\u00c6d\2\u04e4\u04e3\3\2\2\2\u04e4\u04e5\3\2\2\2\u04e5\u04e6"+ - "\3\2\2\2\u04e6\u04e7\7>\2\2\u04e7\u00bf\3\2\2\2\u04e8\u04ed\5\u00c2b\2"+ - "\u04e9\u04ea\7B\2\2\u04ea\u04ec\5\u00c2b\2\u04eb\u04e9\3\2\2\2\u04ec\u04ef"+ - "\3\2\2\2\u04ed\u04eb\3\2\2\2\u04ed\u04ee\3\2\2\2\u04ee\u00c1\3\2\2\2\u04ef"+ - "\u04ed\3\2\2\2\u04f0\u04f2\5\u00c4c\2\u04f1\u04f0\3\2\2\2\u04f2\u04f5"+ - "\3\2\2\2\u04f3\u04f1\3\2\2\2\u04f3\u04f4\3\2\2\2\u04f4\u04f6\3\2\2\2\u04f5"+ - "\u04f3\3\2\2\2\u04f6\u04fc\7h\2\2\u04f7\u04f9\7;\2\2\u04f8\u04fa\5\u0190"+ - "\u00c9\2\u04f9\u04f8\3\2\2\2\u04f9\u04fa\3\2\2\2\u04fa\u04fb\3\2\2\2\u04fb"+ - "\u04fd\7<\2\2\u04fc\u04f7\3\2\2\2\u04fc\u04fd\3\2\2\2\u04fd\u04ff\3\2"+ - "\2\2\u04fe\u0500\5d\63\2\u04ff\u04fe\3\2\2\2\u04ff\u0500\3\2\2\2\u0500"+ - "\u00c3\3\2\2\2\u0501\u0502\5\u00e8u\2\u0502\u00c5\3\2\2\2\u0503\u0507"+ - "\7A\2\2\u0504\u0506\5f\64\2\u0505\u0504\3\2\2\2\u0506\u0509\3\2\2\2\u0507"+ - "\u0505\3\2\2\2\u0507\u0508\3\2\2\2\u0508\u00c7\3\2\2\2\u0509\u0507\3\2"+ - "\2\2\u050a\u050d\5\u00caf\2\u050b\u050d\5\u00dco\2\u050c\u050a\3\2\2\2"+ - "\u050c\u050b\3\2\2\2\u050d\u00c9\3\2\2\2\u050e\u0510\5\u00ccg\2\u050f"+ - "\u050e\3\2\2\2\u0510\u0513\3\2\2\2\u0511\u050f\3\2\2\2\u0511\u0512\3\2"+ - "\2\2\u0512\u0514\3\2\2\2\u0513\u0511\3\2\2\2\u0514\u0515\7\36\2\2\u0515"+ - "\u0517\7h\2\2\u0516\u0518\5Z.\2\u0517\u0516\3\2\2\2\u0517\u0518\3\2\2"+ - "\2\u0518\u051a\3\2\2\2\u0519\u051b\5\u00ceh\2\u051a\u0519\3\2\2\2\u051a"+ - "\u051b\3\2\2\2\u051b\u051c\3\2\2\2\u051c\u051d\5\u00d0i\2\u051d\u00cb"+ - "\3\2\2\2\u051e\u0526\5\u00e8u\2\u051f\u0526\7%\2\2\u0520\u0526\7$\2\2"+ - "\u0521\u0526\7#\2\2\u0522\u0526\7\3\2\2\u0523\u0526\7(\2\2\u0524\u0526"+ - "\7)\2\2\u0525\u051e\3\2\2\2\u0525\u051f\3\2\2\2\u0525\u0520\3\2\2\2\u0525"+ - "\u0521\3\2\2\2\u0525\u0522\3\2\2\2\u0525\u0523\3\2\2\2\u0525\u0524\3\2"+ - "\2\2\u0526\u00cd\3\2\2\2\u0527\u0528\7\23\2\2\u0528\u0529\5b\62\2\u0529"+ - "\u00cf\3\2\2\2\u052a\u052e\7=\2\2\u052b\u052d\5\u00d2j\2\u052c\u052b\3"+ - "\2\2\2\u052d\u0530\3\2\2\2\u052e\u052c\3\2\2\2\u052e\u052f\3\2\2\2\u052f"+ - "\u0531\3\2\2\2\u0530\u052e\3\2\2\2\u0531\u0532\7>\2\2\u0532\u00d1\3\2"+ - "\2\2\u0533\u0539\5\u00d4k\2\u0534\u0539\5\u00d8m\2\u0535\u0539\5T+\2\u0536"+ - "\u0539\5\u00c8e\2\u0537\u0539\7A\2\2\u0538\u0533\3\2\2\2\u0538\u0534\3"+ - "\2\2\2\u0538\u0535\3\2\2\2\u0538\u0536\3\2\2\2\u0538\u0537\3\2\2\2\u0539"+ - "\u00d3\3\2\2\2\u053a\u053c\5\u00d6l\2\u053b\u053a\3\2\2\2\u053c\u053f"+ - "\3\2\2\2\u053d\u053b\3\2\2\2\u053d\u053e\3\2\2\2\u053e\u0540\3\2\2\2\u053f"+ - "\u053d\3\2\2\2\u0540\u0541\5v<\2\u0541\u0542\5n8\2\u0542\u0543\7A\2\2"+ - "\u0543\u00d5\3\2\2\2\u0544\u0549\5\u00e8u\2\u0545\u0549\7%\2\2\u0546\u0549"+ - "\7(\2\2\u0547\u0549\7\24\2\2\u0548\u0544\3\2\2\2\u0548\u0545\3\2\2\2\u0548"+ - "\u0546\3\2\2\2\u0548\u0547\3\2\2\2\u0549\u00d7\3\2\2\2\u054a\u054c\5\u00da"+ - "n\2\u054b\u054a\3\2\2\2\u054c\u054f\3\2\2\2\u054d\u054b\3\2\2\2\u054d"+ - "\u054e\3\2\2\2\u054e\u0550\3\2\2\2\u054f\u054d\3\2\2\2\u0550\u0551\5\u0092"+ - "J\2\u0551\u0552\5\u00aaV\2\u0552\u00d9\3\2\2\2\u0553\u055a\5\u00e8u\2"+ - "\u0554\u055a\7%\2\2\u0555\u055a\7\3\2\2\u0556\u055a\7\16\2\2\u0557\u055a"+ - "\7(\2\2\u0558\u055a\7)\2\2\u0559\u0553\3\2\2\2\u0559\u0554\3\2\2\2\u0559"+ - "\u0555\3\2\2\2\u0559\u0556\3\2\2\2\u0559\u0557\3\2\2\2\u0559\u0558\3\2"+ - "\2\2\u055a\u00db\3\2\2\2\u055b\u055d\5\u00ccg\2\u055c\u055b\3\2\2\2\u055d"+ - "\u0560\3\2\2\2\u055e\u055c\3\2\2\2\u055e\u055f\3\2\2\2\u055f\u0561\3\2"+ - "\2\2\u0560\u055e\3\2\2\2\u0561\u0562\7i\2\2\u0562\u0563\7\36\2\2\u0563"+ - "\u0564\7h\2\2\u0564\u0565\5\u00dep\2\u0565\u00dd\3\2\2\2\u0566\u056a\7"+ - "=\2\2\u0567\u0569\5\u00e0q\2\u0568\u0567\3\2\2\2\u0569\u056c\3\2\2\2\u056a"+ - "\u0568\3\2\2\2\u056a\u056b\3\2\2\2\u056b\u056d\3\2\2\2\u056c\u056a\3\2"+ - "\2\2\u056d\u056e\7>\2\2\u056e\u00df\3\2\2\2\u056f\u0575\5\u00e2r\2\u0570"+ - "\u0575\5\u00d4k\2\u0571\u0575\5T+\2\u0572\u0575\5\u00c8e\2\u0573\u0575"+ - "\7A\2\2\u0574\u056f\3\2\2\2\u0574\u0570\3\2\2\2\u0574\u0571\3\2\2\2\u0574"+ - "\u0572\3\2\2\2\u0574\u0573\3\2\2\2\u0575\u00e1\3\2\2\2\u0576\u0578\5\u00e4"+ - "s\2\u0577\u0576\3\2\2\2\u0578\u057b\3\2\2\2\u0579\u0577\3\2\2\2\u0579"+ - "\u057a\3\2\2\2\u057a\u057c\3\2\2\2\u057b\u0579\3\2\2\2\u057c\u057d\5v"+ - "<\2\u057d\u057e\7h\2\2\u057e\u057f\7;\2\2\u057f\u0581\7<\2\2\u0580\u0582"+ - "\5\"\22\2\u0581\u0580\3\2\2\2\u0581\u0582\3\2\2\2\u0582\u0584\3\2\2\2"+ - "\u0583\u0585\5\u00e6t\2\u0584\u0583\3\2\2\2\u0584\u0585\3\2\2\2\u0585"+ - "\u0586\3\2\2\2\u0586\u0587\7A\2\2\u0587\u00e3\3\2\2\2\u0588\u058c\5\u00e8"+ - "u\2\u0589\u058c\7%\2\2\u058a\u058c\7\3\2\2\u058b\u0588\3\2\2\2\u058b\u0589"+ - "\3\2\2\2\u058b\u058a\3\2\2\2\u058c\u00e5\3\2\2\2\u058d\u058e\7\16\2\2"+ - "\u058e\u058f\5\u00f0y\2\u058f\u00e7\3\2\2\2\u0590\u0594\5\u00eav\2\u0591"+ - "\u0594\5\u00f6|\2\u0592\u0594\5\u00f8}\2\u0593\u0590\3\2\2\2\u0593\u0591"+ - "\3\2\2\2\u0593\u0592\3\2\2\2\u0594\u00e9\3\2\2\2\u0595\u0596\7i\2\2\u0596"+ - "\u0597\58\35\2\u0597\u0599\7;\2\2\u0598\u059a\5\u00ecw\2\u0599\u0598\3"+ - "\2\2\2\u0599\u059a\3\2\2\2\u059a\u059b\3\2\2\2\u059b\u059c\7<\2\2\u059c"+ - "\u00eb\3\2\2\2\u059d\u05a2\5\u00eex\2\u059e\u059f\7B\2\2\u059f\u05a1\5"+ - "\u00eex\2\u05a0\u059e\3\2\2\2\u05a1\u05a4\3\2\2\2\u05a2\u05a0\3\2\2\2"+ - "\u05a2\u05a3\3\2\2\2\u05a3\u00ed\3\2\2\2\u05a4\u05a2\3\2\2\2\u05a5\u05a6"+ - "\7h\2\2\u05a6\u05a7\7D\2\2\u05a7\u05a8\5\u00f0y\2\u05a8\u00ef\3\2\2\2"+ - "\u05a9\u05ad\5\u01b2\u00da\2\u05aa\u05ad\5\u00f2z\2\u05ab\u05ad\5\u00e8"+ - "u\2\u05ac\u05a9\3\2\2\2\u05ac\u05aa\3\2\2\2\u05ac\u05ab\3\2\2\2\u05ad"+ - "\u00f1\3\2\2\2\u05ae\u05b0\7=\2\2\u05af\u05b1\5\u00f4{\2\u05b0\u05af\3"+ - "\2\2\2\u05b0\u05b1\3\2\2\2\u05b1\u05b3\3\2\2\2\u05b2\u05b4\7B\2\2\u05b3"+ - "\u05b2\3\2\2\2\u05b3\u05b4\3\2\2\2\u05b4\u05b5\3\2\2\2\u05b5\u05b6\7>"+ - "\2\2\u05b6\u00f3\3\2\2\2\u05b7\u05bc\5\u00f0y\2\u05b8\u05b9\7B\2\2\u05b9"+ - "\u05bb\5\u00f0y\2\u05ba\u05b8\3\2\2\2\u05bb\u05be\3\2\2\2\u05bc\u05ba"+ - "\3\2\2\2\u05bc\u05bd\3\2\2\2\u05bd\u00f5\3\2\2\2\u05be\u05bc\3\2\2\2\u05bf"+ - "\u05c0\7i\2\2\u05c0\u05c1\58\35\2\u05c1\u00f7\3\2\2\2\u05c2\u05c3\7i\2"+ - "\2\u05c3\u05c4\58\35\2\u05c4\u05c5\7;\2\2\u05c5\u05c6\5\u00f0y\2\u05c6"+ - "\u05c7\7<\2\2\u05c7\u00f9\3\2\2\2\u05c8\u05ca\7=\2\2\u05c9\u05cb\5\u00fc"+ - "\177\2\u05ca\u05c9\3\2\2\2\u05ca\u05cb\3\2\2\2\u05cb\u05cd\3\2\2\2\u05cc"+ - "\u05ce\7B\2\2\u05cd\u05cc\3\2\2\2\u05cd\u05ce\3\2\2\2\u05ce\u05cf\3\2"+ - "\2\2\u05cf\u05d0\7>\2\2\u05d0\u00fb\3\2\2\2\u05d1\u05d6\5t;\2\u05d2\u05d3"+ - "\7B\2\2\u05d3\u05d5\5t;\2\u05d4\u05d2\3\2\2\2\u05d5\u05d8\3\2\2\2\u05d6"+ - "\u05d4\3\2\2\2\u05d6\u05d7\3\2\2\2\u05d7\u00fd\3\2\2\2\u05d8\u05d6\3\2"+ - "\2\2\u05d9\u05db\7=\2\2\u05da\u05dc\5\u0100\u0081\2\u05db\u05da\3\2\2"+ - "\2\u05db\u05dc\3\2\2\2\u05dc\u05dd\3\2\2\2\u05dd\u05de\7>\2\2\u05de\u00ff"+ - "\3\2\2\2\u05df\u05e3\5\u0102\u0082\2\u05e0\u05e2\5\u0102\u0082\2\u05e1"+ - "\u05e0\3\2\2\2\u05e2\u05e5\3\2\2\2\u05e3\u05e1\3\2\2\2\u05e3\u05e4\3\2"+ - "\2\2\u05e4\u0101\3\2\2\2\u05e5\u05e3\3\2\2\2\u05e6\u05ea\5\u0104\u0083"+ - "\2\u05e7\u05ea\5T+\2\u05e8\u05ea\5\u0108\u0085\2\u05e9\u05e6\3\2\2\2\u05e9"+ - "\u05e7\3\2\2\2\u05e9\u05e8\3\2\2\2\u05ea\u0103\3\2\2\2\u05eb\u05ec\5\u0106"+ - "\u0084\2\u05ec\u05ed\7A\2\2\u05ed\u0105\3\2\2\2\u05ee\u05f0\5\u009eP\2"+ - "\u05ef\u05ee\3\2\2\2\u05f0\u05f3\3\2\2\2\u05f1\u05ef\3\2\2\2\u05f1\u05f2"+ - "\3\2\2\2\u05f2\u05f4\3\2\2\2\u05f3\u05f1\3\2\2\2\u05f4\u05f5\5v<\2\u05f5"+ - "\u05f6\5n8\2\u05f6\u0107\3\2\2\2\u05f7\u05fe\5\u010c\u0087\2\u05f8\u05fe"+ - "\5\u0110\u0089\2\u05f9\u05fe\5\u0118\u008d\2\u05fa\u05fe\5\u011a\u008e"+ - "\2\u05fb\u05fe\5\u012c\u0097\2\u05fc\u05fe\5\u0132\u009a\2\u05fd\u05f7"+ - "\3\2\2\2\u05fd\u05f8\3\2\2\2\u05fd\u05f9\3\2\2\2\u05fd\u05fa\3\2\2\2\u05fd"+ - "\u05fb\3\2\2\2\u05fd\u05fc\3\2\2\2\u05fe\u0109\3\2\2\2\u05ff\u0605\5\u010c"+ - "\u0087\2\u0600\u0605\5\u0112\u008a\2\u0601\u0605\5\u011c\u008f\2\u0602"+ - "\u0605\5\u012e\u0098\2\u0603\u0605\5\u0134\u009b\2\u0604\u05ff\3\2\2\2"+ - "\u0604\u0600\3\2\2\2\u0604\u0601\3\2\2\2\u0604\u0602\3\2\2\2\u0604\u0603"+ - "\3\2\2\2\u0605\u010b\3\2\2\2\u0606\u0613\5\u00fe\u0080\2\u0607\u0613\5"+ - "\u010e\u0088\2\u0608\u0613\5\u0114\u008b\2\u0609\u0613\5\u011e\u0090\2"+ - "\u060a\u0613\5\u0120\u0091\2\u060b\u0613\5\u0130\u0099\2\u060c\u0613\5"+ - "\u0144\u00a3\2\u060d\u0613\5\u0146\u00a4\2\u060e\u0613\5\u0148\u00a5\2"+ - "\u060f\u0613\5\u014c\u00a7\2\u0610\u0613\5\u014a\u00a6\2\u0611\u0613\5"+ - "\u014e\u00a8\2\u0612\u0606\3\2\2\2\u0612\u0607\3\2\2\2\u0612\u0608\3\2"+ - "\2\2\u0612\u0609\3\2\2\2\u0612\u060a\3\2\2\2\u0612\u060b\3\2\2\2\u0612"+ - "\u060c\3\2\2\2\u0612\u060d\3\2\2\2\u0612\u060e\3\2\2\2\u0612\u060f\3\2"+ - "\2\2\u0612\u0610\3\2\2\2\u0612\u0611\3\2\2\2\u0613\u010d\3\2\2\2\u0614"+ - "\u0615\7A\2\2\u0615\u010f\3\2\2\2\u0616\u0617\7h\2\2\u0617\u0618\7J\2"+ - "\2\u0618\u0619\5\u0108\u0085\2\u0619\u0111\3\2\2\2\u061a\u061b\7h\2\2"+ - "\u061b\u061c\7J\2\2\u061c\u061d\5\u010a\u0086\2\u061d\u0113\3\2\2\2\u061e"+ - "\u061f\5\u0116\u008c\2\u061f\u0620\7A\2\2\u0620\u0115\3\2\2\2\u0621\u0629"+ - "\5\u01ac\u00d7\2\u0622\u0629\5\u01ca\u00e6\2\u0623\u0629\5\u01cc\u00e7"+ - "\2\u0624\u0629\5\u01d2\u00ea\2\u0625\u0629\5\u01d6\u00ec\2\u0626\u0629"+ - "\5\u018a\u00c6\2\u0627\u0629\5\u0176\u00bc\2\u0628\u0621\3\2\2\2\u0628"+ - "\u0622\3\2\2\2\u0628\u0623\3\2\2\2\u0628\u0624\3\2\2\2\u0628\u0625\3\2"+ - "\2\2\u0628\u0626\3\2\2\2\u0628\u0627\3\2\2\2\u0629\u0117\3\2\2\2\u062a"+ - "\u062b\7\30\2\2\u062b\u062c\7;\2\2\u062c\u062d\5\u01a0\u00d1\2\u062d\u062e"+ - "\7<\2\2\u062e\u062f\5\u0108\u0085\2\u062f\u0119\3\2\2\2\u0630\u0631\7"+ - "\30\2\2\u0631\u0632\7;\2\2\u0632\u0633\5\u01a0\u00d1\2\u0633\u0634\7<"+ - "\2\2\u0634\u0635\5\u010a\u0086\2\u0635\u0636\7\21\2\2\u0636\u0637\5\u0108"+ - "\u0085\2\u0637\u011b\3\2\2\2\u0638\u0639\7\30\2\2\u0639\u063a\7;\2\2\u063a"+ - "\u063b\5\u01a0\u00d1\2\u063b\u063c\7<\2\2\u063c\u063d\5\u010a\u0086\2"+ - "\u063d\u063e\7\21\2\2\u063e\u063f\5\u010a\u0086\2\u063f\u011d\3\2\2\2"+ - "\u0640\u0641\7\4\2\2\u0641\u0642\5\u01a0\u00d1\2\u0642\u0643\7A\2\2\u0643"+ - "\u064b\3\2\2\2\u0644\u0645\7\4\2\2\u0645\u0646\5\u01a0\u00d1\2\u0646\u0647"+ - "\7J\2\2\u0647\u0648\5\u01a0\u00d1\2\u0648\u0649\7A\2\2\u0649\u064b\3\2"+ - "\2\2\u064a\u0640\3\2\2\2\u064a\u0644\3\2\2\2\u064b\u011f\3\2\2\2\u064c"+ - "\u064d\7+\2\2\u064d\u064e\7;\2\2\u064e\u064f\5\u01a0\u00d1\2\u064f\u0650"+ - "\7<\2\2\u0650\u0651\5\u0122\u0092\2\u0651\u0121\3\2\2\2\u0652\u0656\7"+ - "=\2\2\u0653\u0655\5\u0124\u0093\2\u0654\u0653\3\2\2\2\u0655\u0658\3\2"+ - "\2\2\u0656\u0654\3\2\2\2\u0656\u0657\3\2\2\2\u0657\u065c\3\2\2\2\u0658"+ - "\u0656\3\2\2\2\u0659\u065b\5\u0128\u0095\2\u065a\u0659\3\2\2\2\u065b\u065e"+ - "\3\2\2\2\u065c\u065a\3\2\2\2\u065c\u065d\3\2\2\2\u065d\u065f\3\2\2\2\u065e"+ - "\u065c\3\2\2\2\u065f\u0660\7>\2\2\u0660\u0123\3\2\2\2\u0661\u0662\5\u0126"+ - "\u0094\2\u0662\u0663\5\u0100\u0081\2\u0663\u0125\3\2\2\2\u0664\u0668\5"+ - "\u0128\u0095\2\u0665\u0667\5\u0128\u0095\2\u0666\u0665\3\2\2\2\u0667\u066a"+ - "\3\2\2\2\u0668\u0666\3\2\2\2\u0668\u0669\3\2\2\2\u0669\u0127\3\2\2\2\u066a"+ - "\u0668\3\2\2\2\u066b\u066c\7\b\2\2\u066c\u066d\5\u019e\u00d0\2\u066d\u066e"+ - "\7J\2\2\u066e\u0676\3\2\2\2\u066f\u0670\7\b\2\2\u0670\u0671\5\u012a\u0096"+ - "\2\u0671\u0672\7J\2\2\u0672\u0676\3\2\2\2\u0673\u0674\7\16\2\2\u0674\u0676"+ - "\7J\2\2\u0675\u066b\3\2\2\2\u0675\u066f\3\2\2\2\u0675\u0673\3\2\2\2\u0676"+ - "\u0129\3\2\2\2\u0677\u0678\7h\2\2\u0678\u012b\3\2\2\2\u0679\u067a\7\64"+ - "\2\2\u067a\u067b\7;\2\2\u067b\u067c\5\u01a0\u00d1\2\u067c\u067d\7<\2\2"+ - "\u067d\u067e\5\u0108\u0085\2\u067e\u012d\3\2\2\2\u067f\u0680\7\64\2\2"+ - "\u0680\u0681\7;\2\2\u0681\u0682\5\u01a0\u00d1\2\u0682\u0683\7<\2\2\u0683"+ - "\u0684\5\u010a\u0086\2\u0684\u012f\3\2\2\2\u0685\u0686\7\17\2\2\u0686"+ - "\u0687\5\u0108\u0085\2\u0687\u0688\7\64\2\2\u0688\u0689\7;\2\2\u0689\u068a"+ - "\5\u01a0\u00d1\2\u068a\u068b\7<\2\2\u068b\u068c\7A\2\2\u068c\u0131\3\2"+ - "\2\2\u068d\u0690\5\u0136\u009c\2\u068e\u0690\5\u0140\u00a1\2\u068f\u068d"+ - "\3\2\2\2\u068f\u068e\3\2\2\2\u0690\u0133\3\2\2\2\u0691\u0694\5\u0138\u009d"+ - "\2\u0692\u0694\5\u0142\u00a2\2\u0693\u0691\3\2\2\2\u0693\u0692\3\2\2\2"+ - "\u0694\u0135\3\2\2\2\u0695\u0696\7\27\2\2\u0696\u0698\7;\2\2\u0697\u0699"+ - "\5\u013a\u009e\2\u0698\u0697\3\2\2\2\u0698\u0699\3\2\2\2\u0699\u069a\3"+ - "\2\2\2\u069a\u069c\7A\2\2\u069b\u069d\5\u01a0\u00d1\2\u069c\u069b\3\2"+ - "\2\2\u069c\u069d\3\2\2\2\u069d\u069e\3\2\2\2\u069e\u06a0\7A\2\2\u069f"+ - "\u06a1\5\u013c\u009f\2\u06a0\u069f\3\2\2\2\u06a0\u06a1\3\2\2\2\u06a1\u06a2"+ - "\3\2\2\2\u06a2\u06a3\7<\2\2\u06a3\u06a4\5\u0108\u0085\2\u06a4\u0137\3"+ - "\2\2\2\u06a5\u06a6\7\27\2\2\u06a6\u06a8\7;\2\2\u06a7\u06a9\5\u013a\u009e"+ - "\2\u06a8\u06a7\3\2\2\2\u06a8\u06a9\3\2\2\2\u06a9\u06aa\3\2\2\2\u06aa\u06ac"+ - "\7A\2\2\u06ab\u06ad\5\u01a0\u00d1\2\u06ac\u06ab\3\2\2\2\u06ac\u06ad\3"+ - "\2\2\2\u06ad\u06ae\3\2\2\2\u06ae\u06b0\7A\2\2\u06af\u06b1\5\u013c\u009f"+ - "\2\u06b0\u06af\3\2\2\2\u06b0\u06b1\3\2\2\2\u06b1\u06b2\3\2\2\2\u06b2\u06b3"+ - "\7<\2\2\u06b3\u06b4\5\u010a\u0086\2\u06b4\u0139\3\2\2\2\u06b5\u06b8\5"+ - "\u013e\u00a0\2\u06b6\u06b8\5\u0106\u0084\2\u06b7\u06b5\3\2\2\2\u06b7\u06b6"+ - "\3\2\2\2\u06b8\u013b\3\2\2\2\u06b9\u06ba\5\u013e\u00a0\2\u06ba\u013d\3"+ - "\2\2\2\u06bb\u06c0\5\u0116\u008c\2\u06bc\u06bd\7B\2\2\u06bd\u06bf\5\u0116"+ - "\u008c\2\u06be\u06bc\3\2\2\2\u06bf\u06c2\3\2\2\2\u06c0\u06be\3\2\2\2\u06c0"+ - "\u06c1\3\2\2\2\u06c1\u013f\3\2\2\2\u06c2\u06c0\3\2\2\2\u06c3\u06c4\7\27"+ - "\2\2\u06c4\u06c8\7;\2\2\u06c5\u06c7\5\u009eP\2\u06c6\u06c5\3\2\2\2\u06c7"+ - "\u06ca\3\2\2\2\u06c8\u06c6\3\2\2\2\u06c8\u06c9\3\2\2\2\u06c9\u06cb\3\2"+ - "\2\2\u06ca\u06c8\3\2\2\2\u06cb\u06cc\5v<\2\u06cc\u06cd\5r:\2\u06cd\u06ce"+ - "\7J\2\2\u06ce\u06cf\5\u01a0\u00d1\2\u06cf\u06d0\7<\2\2\u06d0\u06d1\5\u0108"+ - "\u0085\2\u06d1\u0141\3\2\2\2\u06d2\u06d3\7\27\2\2\u06d3\u06d7\7;\2\2\u06d4"+ - "\u06d6\5\u009eP\2\u06d5\u06d4\3\2\2\2\u06d6\u06d9\3\2\2\2\u06d7\u06d5"+ - "\3\2\2\2\u06d7\u06d8\3\2\2\2\u06d8\u06da\3\2\2\2\u06d9\u06d7\3\2\2\2\u06da"+ - "\u06db\5v<\2\u06db\u06dc\5r:\2\u06dc\u06dd\7J\2\2\u06dd\u06de\5\u01a0"+ - "\u00d1\2\u06de\u06df\7<\2\2\u06df\u06e0\5\u010a\u0086\2\u06e0\u0143\3"+ - "\2\2\2\u06e1\u06e3\7\6\2\2\u06e2\u06e4\7h\2\2\u06e3\u06e2\3\2\2\2\u06e3"+ - "\u06e4\3\2\2\2\u06e4\u06e5\3\2\2\2\u06e5\u06e6\7A\2\2\u06e6\u0145\3\2"+ - "\2\2\u06e7\u06e9\7\r\2\2\u06e8\u06ea\7h\2\2\u06e9\u06e8\3\2\2\2\u06e9"+ - "\u06ea\3\2\2\2\u06ea\u06eb\3\2\2\2\u06eb\u06ec\7A\2\2\u06ec\u0147\3\2"+ - "\2\2\u06ed\u06ef\7&\2\2\u06ee\u06f0\5\u01a0\u00d1\2\u06ef\u06ee\3\2\2"+ - "\2\u06ef\u06f0\3\2\2\2\u06f0\u06f1\3\2\2\2\u06f1\u06f2\7A\2\2\u06f2\u0149"+ - "\3\2\2\2\u06f3\u06f4\7.\2\2\u06f4\u06f5\5\u01a0\u00d1\2\u06f5\u06f6\7"+ - "A\2\2\u06f6\u014b\3\2\2\2\u06f7\u06f8\7,\2\2\u06f8\u06f9\7;\2\2\u06f9"+ - "\u06fa\5\u01a0\u00d1\2\u06fa\u06fb\7<\2\2\u06fb\u06fc\5\u00fe\u0080\2"+ - "\u06fc\u014d\3\2\2\2\u06fd\u06fe\7\61\2\2\u06fe\u06ff\5\u00fe\u0080\2"+ - "\u06ff\u0700\5\u0150\u00a9\2\u0700\u070a\3\2\2\2\u0701\u0702\7\61\2\2"+ - "\u0702\u0704\5\u00fe\u0080\2\u0703\u0705\5\u0150\u00a9\2\u0704\u0703\3"+ - "\2\2\2\u0704\u0705\3\2\2\2\u0705\u0706\3\2\2\2\u0706\u0707\5\u0158\u00ad"+ - "\2\u0707\u070a\3\2\2\2\u0708\u070a\5\u015a\u00ae\2\u0709\u06fd\3\2\2\2"+ - "\u0709\u0701\3\2\2\2\u0709\u0708\3\2\2\2\u070a\u014f\3\2\2\2\u070b\u070f"+ - "\5\u0152\u00aa\2\u070c\u070e\5\u0152\u00aa\2\u070d\u070c\3\2\2\2\u070e"+ - "\u0711\3\2\2\2\u070f\u070d\3\2\2\2\u070f\u0710\3\2\2\2\u0710\u0151\3\2"+ - "\2\2\u0711\u070f\3\2\2\2\u0712\u0713\7\t\2\2\u0713\u0714\7;\2\2\u0714"+ - "\u0715\5\u0154\u00ab\2\u0715\u0716\7<\2\2\u0716\u0717\5\u00fe\u0080\2"+ - "\u0717\u0153\3\2\2\2\u0718\u071a\5\u009eP\2\u0719\u0718\3\2\2\2\u071a"+ - "\u071d\3\2\2\2\u071b\u0719\3\2\2\2\u071b\u071c\3\2\2\2\u071c\u071e\3\2"+ - "\2\2\u071d\u071b\3\2\2\2\u071e\u071f\5\u0156\u00ac\2\u071f\u0720\5r:\2"+ - "\u0720\u0155\3\2\2\2\u0721\u0726\5~@\2\u0722\u0723\7X\2\2\u0723\u0725"+ - "\5\22\n\2\u0724\u0722\3\2\2\2\u0725\u0728\3\2\2\2\u0726\u0724\3\2\2\2"+ - "\u0726\u0727\3\2\2\2\u0727\u0157\3\2\2\2\u0728\u0726\3\2\2\2\u0729\u072a"+ - "\7\25\2\2\u072a\u072b\5\u00fe\u0080\2\u072b\u0159\3\2\2\2\u072c\u072d"+ - "\7\61\2\2\u072d\u072e\5\u015c\u00af\2\u072e\u0730\5\u00fe\u0080\2\u072f"+ - "\u0731\5\u0150\u00a9\2\u0730\u072f\3\2\2\2\u0730\u0731\3\2\2\2\u0731\u0733"+ - "\3\2\2\2\u0732\u0734\5\u0158\u00ad\2\u0733\u0732\3\2\2\2\u0733\u0734\3"+ - "\2\2\2\u0734\u015b\3\2\2\2\u0735\u0736\7;\2\2\u0736\u0738\5\u015e\u00b0"+ - "\2\u0737\u0739\7A\2\2\u0738\u0737\3\2\2\2\u0738\u0739\3\2\2\2\u0739\u073a"+ - "\3\2\2\2\u073a\u073b\7<\2\2\u073b\u015d\3\2\2\2\u073c\u0741\5\u0160\u00b1"+ - "\2\u073d\u073e\7A\2\2\u073e\u0740\5\u0160\u00b1\2\u073f\u073d\3\2\2\2"+ - "\u0740\u0743\3\2\2\2\u0741\u073f\3\2\2\2\u0741\u0742\3\2\2\2\u0742\u015f"+ - "\3\2\2\2\u0743\u0741\3\2\2\2\u0744\u0746\5\u009eP\2\u0745\u0744\3\2\2"+ - "\2\u0746\u0749\3\2\2\2\u0747\u0745\3\2\2\2\u0747\u0748\3\2\2\2\u0748\u074a"+ - "\3\2\2\2\u0749\u0747\3\2\2\2\u074a\u074b\5v<\2\u074b\u074c\5r:\2\u074c"+ - "\u074d\7D\2\2\u074d\u074e\5\u01a0\u00d1\2\u074e\u0161\3\2\2\2\u074f\u0752"+ - "\5\u0170\u00b9\2\u0750\u0752\5\u0198\u00cd\2\u0751\u074f\3\2\2\2\u0751"+ - "\u0750\3\2\2\2\u0752\u0756\3\2\2\2\u0753\u0755\5\u016a\u00b6\2\u0754\u0753"+ - "\3\2\2\2\u0755\u0758\3\2\2\2\u0756\u0754\3\2\2\2\u0756\u0757\3\2\2\2\u0757"+ - "\u0163\3\2\2\2\u0758\u0756\3\2\2\2\u0759\u0777\5\2\2\2\u075a\u075f\58"+ - "\35\2\u075b\u075c\7?\2\2\u075c\u075e\7@\2\2\u075d\u075b\3\2\2\2\u075e"+ - "\u0761\3\2\2\2\u075f\u075d\3\2\2\2\u075f\u0760\3\2\2\2\u0760\u0762\3\2"+ - "\2\2\u0761\u075f\3\2\2\2\u0762\u0763\7C\2\2\u0763\u0764\7\13\2\2\u0764"+ - "\u0777\3\2\2\2\u0765\u0766\7\62\2\2\u0766\u0767\7C\2\2\u0767\u0777\7\13"+ - "\2\2\u0768\u0777\7-\2\2\u0769\u076a\58\35\2\u076a\u076b\7C\2\2\u076b\u076c"+ - "\7-\2\2\u076c\u0777\3\2\2\2\u076d\u076e\7;\2\2\u076e\u076f\5\u01a0\u00d1"+ - "\2\u076f\u0770\7<\2\2\u0770\u0777\3\2\2\2\u0771\u0777\5\u0176\u00bc\2"+ - "\u0772\u0777\5\u017e\u00c0\2\u0773\u0777\5\u0184\u00c3\2\u0774\u0777\5"+ - "\u018a\u00c6\2\u0775\u0777\5\u0192\u00ca\2\u0776\u0759\3\2\2\2\u0776\u075a"+ - "\3\2\2\2\u0776\u0765\3\2\2\2\u0776\u0768\3\2\2\2\u0776\u0769\3\2\2\2\u0776"+ - "\u076d\3\2\2\2\u0776\u0771\3\2\2\2\u0776\u0772\3\2\2\2\u0776\u0773\3\2"+ - "\2\2\u0776\u0774\3\2\2\2\u0776\u0775\3\2\2\2\u0777\u0165\3\2\2\2\u0778"+ - "\u0779\3\2\2\2\u0779\u0167\3\2\2\2\u077a\u0797\5\2\2\2\u077b\u0780\58"+ - "\35\2\u077c\u077d\7?\2\2\u077d\u077f\7@\2\2\u077e\u077c\3\2\2\2\u077f"+ - "\u0782\3\2\2\2\u0780\u077e\3\2\2\2\u0780\u0781\3\2\2\2\u0781\u0783\3\2"+ - "\2\2\u0782\u0780\3\2\2\2\u0783\u0784\7C\2\2\u0784\u0785\7\13\2\2\u0785"+ - "\u0797\3\2\2\2\u0786\u0787\7\62\2\2\u0787\u0788\7C\2\2\u0788\u0797\7\13"+ - "\2\2\u0789\u0797\7-\2\2\u078a\u078b\58\35\2\u078b\u078c\7C\2\2\u078c\u078d"+ - "\7-\2\2\u078d\u0797\3\2\2\2\u078e\u078f\7;\2\2\u078f\u0790\5\u01a0\u00d1"+ - "\2\u0790\u0791\7<\2\2\u0791\u0797\3\2\2\2\u0792\u0797\5\u0176\u00bc\2"+ - "\u0793\u0797\5\u017e\u00c0\2\u0794\u0797\5\u018a\u00c6\2\u0795\u0797\5"+ - "\u0192\u00ca\2\u0796\u077a\3\2\2\2\u0796\u077b\3\2\2\2\u0796\u0786\3\2"+ - "\2\2\u0796\u0789\3\2\2\2\u0796\u078a\3\2\2\2\u0796\u078e\3\2\2\2\u0796"+ - "\u0792\3\2\2\2\u0796\u0793\3\2\2\2\u0796\u0794\3\2\2\2\u0796\u0795\3\2"+ - "\2\2\u0797\u0169\3\2\2\2\u0798\u079e\5\u0178\u00bd\2\u0799\u079e\5\u0180"+ - "\u00c1\2\u079a\u079e\5\u0186\u00c4\2\u079b\u079e\5\u018c\u00c7\2\u079c"+ - "\u079e\5\u0194\u00cb\2\u079d\u0798\3\2\2\2\u079d\u0799\3\2\2\2\u079d\u079a"+ - "\3\2\2\2\u079d\u079b\3\2\2\2\u079d\u079c\3\2\2\2\u079e\u016b\3\2\2\2\u079f"+ - "\u07a0\3\2\2\2\u07a0\u016d\3\2\2\2\u07a1\u07a6\5\u0178\u00bd\2\u07a2\u07a6"+ - "\5\u0180\u00c1\2\u07a3\u07a6\5\u018c\u00c7\2\u07a4\u07a6\5\u0194\u00cb"+ - "\2\u07a5\u07a1\3\2\2\2\u07a5\u07a2\3\2\2\2\u07a5\u07a3\3\2\2\2\u07a5\u07a4"+ - "\3\2\2\2\u07a6\u016f\3\2\2\2\u07a7\u07d0\5\2\2\2\u07a8\u07ad\58\35\2\u07a9"+ - "\u07aa\7?\2\2\u07aa\u07ac\7@\2\2\u07ab\u07a9\3\2\2\2\u07ac\u07af\3\2\2"+ - "\2\u07ad\u07ab\3\2\2\2\u07ad\u07ae\3\2\2\2\u07ae\u07b0\3\2\2\2\u07af\u07ad"+ - "\3\2\2\2\u07b0\u07b1\7C\2\2\u07b1\u07b2\7\13\2\2\u07b2\u07d0\3\2\2\2\u07b3"+ - "\u07b8\5x=\2\u07b4\u07b5\7?\2\2\u07b5\u07b7\7@\2\2\u07b6\u07b4\3\2\2\2"+ - "\u07b7\u07ba\3\2\2\2\u07b8\u07b6\3\2\2\2\u07b8\u07b9\3\2\2\2\u07b9\u07bb"+ - "\3\2\2\2\u07ba\u07b8\3\2\2\2\u07bb\u07bc\7C\2\2\u07bc\u07bd\7\13\2\2\u07bd"+ - "\u07d0\3\2\2\2\u07be\u07bf\7\62\2\2\u07bf\u07c0\7C\2\2\u07c0\u07d0\7\13"+ - "\2\2\u07c1\u07d0\7-\2\2\u07c2\u07c3\58\35\2\u07c3\u07c4\7C\2\2\u07c4\u07c5"+ - "\7-\2\2\u07c5\u07d0\3\2\2\2\u07c6\u07c7\7;\2\2\u07c7\u07c8\5\u01a0\u00d1"+ - "\2\u07c8\u07c9\7<\2\2\u07c9\u07d0\3\2\2\2\u07ca\u07d0\5\u017a\u00be\2"+ - "\u07cb\u07d0\5\u0182\u00c2\2\u07cc\u07d0\5\u0188\u00c5\2\u07cd\u07d0\5"+ - "\u018e\u00c8\2\u07ce\u07d0\5\u0196\u00cc\2\u07cf\u07a7\3\2\2\2\u07cf\u07a8"+ - "\3\2\2\2\u07cf\u07b3\3\2\2\2\u07cf\u07be\3\2\2\2\u07cf\u07c1\3\2\2\2\u07cf"+ - "\u07c2\3\2\2\2\u07cf\u07c6\3\2\2\2\u07cf\u07ca\3\2\2\2\u07cf\u07cb\3\2"+ - "\2\2\u07cf\u07cc\3\2\2\2\u07cf\u07cd\3\2\2\2\u07cf\u07ce\3\2\2\2\u07d0"+ - "\u0171\3\2\2\2\u07d1\u07d2\3\2\2\2\u07d2\u0173\3\2\2\2\u07d3\u07fb\5\2"+ - "\2\2\u07d4\u07d9\58\35\2\u07d5\u07d6\7?\2\2\u07d6\u07d8\7@\2\2\u07d7\u07d5"+ - "\3\2\2\2\u07d8\u07db\3\2\2\2\u07d9\u07d7\3\2\2\2\u07d9\u07da\3\2\2\2\u07da"+ - "\u07dc\3\2\2\2\u07db\u07d9\3\2\2\2\u07dc\u07dd\7C\2\2\u07dd\u07de\7\13"+ - "\2\2\u07de\u07fb\3\2\2\2\u07df\u07e4\5x=\2\u07e0\u07e1\7?\2\2\u07e1\u07e3"+ - "\7@\2\2\u07e2\u07e0\3\2\2\2\u07e3\u07e6\3\2\2\2\u07e4\u07e2\3\2\2\2\u07e4"+ - "\u07e5\3\2\2\2\u07e5\u07e7\3\2\2\2\u07e6\u07e4\3\2\2\2\u07e7\u07e8\7C"+ - "\2\2\u07e8\u07e9\7\13\2\2\u07e9\u07fb\3\2\2\2\u07ea\u07eb\7\62\2\2\u07eb"+ - "\u07ec\7C\2\2\u07ec\u07fb\7\13\2\2\u07ed\u07fb\7-\2\2\u07ee\u07ef\58\35"+ - "\2\u07ef\u07f0\7C\2\2\u07f0\u07f1\7-\2\2\u07f1\u07fb\3\2\2\2\u07f2\u07f3"+ - "\7;\2\2\u07f3\u07f4\5\u01a0\u00d1\2\u07f4\u07f5\7<\2\2\u07f5\u07fb\3\2"+ - "\2\2\u07f6\u07fb\5\u017a\u00be\2\u07f7\u07fb\5\u0182\u00c2\2\u07f8\u07fb"+ - "\5\u018e\u00c8\2\u07f9\u07fb\5\u0196\u00cc\2\u07fa\u07d3\3\2\2\2\u07fa"+ - "\u07d4\3\2\2\2\u07fa\u07df\3\2\2\2\u07fa\u07ea\3\2\2\2\u07fa\u07ed\3\2"+ - "\2\2\u07fa\u07ee\3\2\2\2\u07fa\u07f2\3\2\2\2\u07fa\u07f6\3\2\2\2\u07fa"+ - "\u07f7\3\2\2\2\u07fa\u07f8\3\2\2\2\u07fa\u07f9\3\2\2\2\u07fb\u0175\3\2"+ - "\2\2\u07fc\u07fe\7!\2\2\u07fd\u07ff\5,\27\2\u07fe\u07fd\3\2\2\2\u07fe"+ - "\u07ff\3\2\2\2\u07ff\u0803\3\2\2\2\u0800\u0802\5\u00e8u\2\u0801\u0800"+ - "\3\2\2\2\u0802\u0805\3\2\2\2\u0803\u0801\3\2\2\2\u0803\u0804\3\2\2\2\u0804"+ - "\u0806\3\2\2\2\u0805\u0803\3\2\2\2\u0806\u0811\7h\2\2\u0807\u080b\7C\2"+ - "\2\u0808\u080a\5\u00e8u\2\u0809\u0808\3\2\2\2\u080a\u080d\3\2\2\2\u080b"+ - "\u0809\3\2\2\2\u080b\u080c\3\2\2\2\u080c\u080e\3\2\2\2\u080d\u080b\3\2"+ - "\2\2\u080e\u0810\7h\2\2\u080f\u0807\3\2\2\2\u0810\u0813\3\2\2\2\u0811"+ - "\u080f\3\2\2\2\u0811\u0812\3\2\2\2\u0812\u0815\3\2\2\2\u0813\u0811\3\2"+ - "\2\2\u0814\u0816\5\u017c\u00bf\2\u0815\u0814\3\2\2\2\u0815\u0816\3\2\2"+ - "\2\u0816\u0817\3\2\2\2\u0817\u0819\7;\2\2\u0818\u081a\5\u0190\u00c9\2"+ - "\u0819\u0818\3\2\2\2\u0819\u081a\3\2\2\2\u081a\u081b\3\2\2\2\u081b\u081d"+ - "\7<\2\2\u081c\u081e\5d\63\2\u081d\u081c\3\2\2\2\u081d\u081e\3\2\2\2\u081e"+ - "\u0850\3\2\2\2\u081f\u0820\5<\37\2\u0820\u0821\7C\2\2\u0821\u0823\7!\2"+ - "\2\u0822\u0824\5,\27\2\u0823\u0822\3\2\2\2\u0823\u0824\3\2\2\2\u0824\u0828"+ - "\3\2\2\2\u0825\u0827\5\u00e8u\2\u0826\u0825\3\2\2\2\u0827\u082a\3\2\2"+ - "\2\u0828\u0826\3\2\2\2\u0828\u0829\3\2\2\2\u0829\u082b\3\2\2\2\u082a\u0828"+ - "\3\2\2\2\u082b\u082d\7h\2\2\u082c\u082e\5\u017c\u00bf\2\u082d\u082c\3"+ - "\2\2\2\u082d\u082e\3\2\2\2\u082e\u082f\3\2\2\2\u082f\u0831\7;\2\2\u0830"+ - "\u0832\5\u0190\u00c9\2\u0831\u0830\3\2\2\2\u0831\u0832\3\2\2\2\u0832\u0833"+ - "\3\2\2\2\u0833\u0835\7<\2\2\u0834\u0836\5d\63\2\u0835\u0834\3\2\2\2\u0835"+ - "\u0836\3\2\2\2\u0836\u0850\3\2\2\2\u0837\u0838\5\u0162\u00b2\2\u0838\u0839"+ - "\7C\2\2\u0839\u083b\7!\2\2\u083a\u083c\5,\27\2\u083b\u083a\3\2\2\2\u083b"+ - "\u083c\3\2\2\2\u083c\u0840\3\2\2\2\u083d\u083f\5\u00e8u\2\u083e\u083d"+ - "\3\2\2\2\u083f\u0842\3\2\2\2\u0840\u083e\3\2\2\2\u0840\u0841\3\2\2\2\u0841"+ - "\u0843\3\2\2\2\u0842\u0840\3\2\2\2\u0843\u0845\7h\2\2\u0844\u0846\5\u017c"+ - "\u00bf\2\u0845\u0844\3\2\2\2\u0845\u0846\3\2\2\2\u0846\u0847\3\2\2\2\u0847"+ - "\u0849\7;\2\2\u0848\u084a\5\u0190\u00c9\2\u0849\u0848\3\2\2\2\u0849\u084a"+ - "\3\2\2\2\u084a\u084b\3\2\2\2\u084b\u084d\7<\2\2\u084c\u084e\5d\63\2\u084d"+ - "\u084c\3\2\2\2\u084d\u084e\3\2\2\2\u084e\u0850\3\2\2\2\u084f\u07fc\3\2"+ - "\2\2\u084f\u081f\3\2\2\2\u084f\u0837\3\2\2\2\u0850\u0177\3\2\2\2\u0851"+ - "\u0852\7C\2\2\u0852\u0854\7!\2\2\u0853\u0855\5,\27\2\u0854\u0853\3\2\2"+ - "\2\u0854\u0855\3\2\2\2\u0855\u0859\3\2\2\2\u0856\u0858\5\u00e8u\2\u0857"+ - "\u0856\3\2\2\2\u0858\u085b\3\2\2\2\u0859\u0857\3\2\2\2\u0859\u085a\3\2"+ - "\2\2\u085a\u085c\3\2\2\2\u085b\u0859\3\2\2\2\u085c\u085e\7h\2\2\u085d"+ - "\u085f\5\u017c\u00bf\2\u085e\u085d\3\2\2\2\u085e\u085f\3\2\2\2\u085f\u0860"+ - "\3\2\2\2\u0860\u0862\7;\2\2\u0861\u0863\5\u0190\u00c9\2\u0862\u0861\3"+ - "\2\2\2\u0862\u0863\3\2\2\2\u0863\u0864\3\2\2\2\u0864\u0866\7<\2\2\u0865"+ - "\u0867\5d\63\2\u0866\u0865\3\2\2\2\u0866\u0867\3\2\2\2\u0867\u0179\3\2"+ - "\2\2\u0868\u086a\7!\2\2\u0869\u086b\5,\27\2\u086a\u0869\3\2\2\2\u086a"+ - "\u086b\3\2\2\2\u086b\u086f\3\2\2\2\u086c\u086e\5\u00e8u\2\u086d\u086c"+ - "\3\2\2\2\u086e\u0871\3\2\2\2\u086f\u086d\3\2\2\2\u086f\u0870\3\2\2\2\u0870"+ - "\u0872\3\2\2\2\u0871\u086f\3\2\2\2\u0872\u087d\7h\2\2\u0873\u0877\7C\2"+ - "\2\u0874\u0876\5\u00e8u\2\u0875\u0874\3\2\2\2\u0876\u0879\3\2\2\2\u0877"+ - "\u0875\3\2\2\2\u0877\u0878\3\2\2\2\u0878\u087a\3\2\2\2\u0879\u0877\3\2"+ - "\2\2\u087a\u087c\7h\2\2\u087b\u0873\3\2\2\2\u087c\u087f\3\2\2\2\u087d"+ - "\u087b\3\2\2\2\u087d\u087e\3\2\2\2\u087e\u0881\3\2\2\2\u087f\u087d\3\2"+ - "\2\2\u0880\u0882\5\u017c\u00bf\2\u0881\u0880\3\2\2\2\u0881\u0882\3\2\2"+ - "\2\u0882\u0883\3\2\2\2\u0883\u0885\7;\2\2\u0884\u0886\5\u0190\u00c9\2"+ - "\u0885\u0884\3\2\2\2\u0885\u0886\3\2\2\2\u0886\u0887\3\2\2\2\u0887\u0889"+ - "\7<\2\2\u0888\u088a\5d\63\2\u0889\u0888\3\2\2\2\u0889\u088a\3\2\2\2\u088a"+ - "\u08a4\3\2\2\2\u088b\u088c\5<\37\2\u088c\u088d\7C\2\2\u088d\u088f\7!\2"+ - "\2\u088e\u0890\5,\27\2\u088f\u088e\3\2\2\2\u088f\u0890\3\2\2\2\u0890\u0894"+ - "\3\2\2\2\u0891\u0893\5\u00e8u\2\u0892\u0891\3\2\2\2\u0893\u0896\3\2\2"+ - "\2\u0894\u0892\3\2\2\2\u0894\u0895\3\2\2\2\u0895\u0897\3\2\2\2\u0896\u0894"+ - "\3\2\2\2\u0897\u0899\7h\2\2\u0898\u089a\5\u017c\u00bf\2\u0899\u0898\3"+ - "\2\2\2\u0899\u089a\3\2\2\2\u089a\u089b\3\2\2\2\u089b\u089d\7;\2\2\u089c"+ - "\u089e\5\u0190\u00c9\2\u089d\u089c\3\2\2\2\u089d\u089e\3\2\2\2\u089e\u089f"+ - "\3\2\2\2\u089f\u08a1\7<\2\2\u08a0\u08a2\5d\63\2\u08a1\u08a0\3\2\2\2\u08a1"+ - "\u08a2\3\2\2\2\u08a2\u08a4\3\2\2\2\u08a3\u0868\3\2\2\2\u08a3\u088b\3\2"+ - "\2\2\u08a4\u017b\3\2\2\2\u08a5\u08a9\5,\27\2\u08a6\u08a7\7F\2\2\u08a7"+ - "\u08a9\7E\2\2\u08a8\u08a5\3\2\2\2\u08a8\u08a6\3\2\2\2\u08a9\u017d\3\2"+ - "\2\2\u08aa\u08ab\5\u0162\u00b2\2\u08ab\u08ac\7C\2\2\u08ac\u08ad\7h\2\2"+ - "\u08ad\u08b8\3\2\2\2\u08ae\u08af\7*\2\2\u08af\u08b0\7C\2\2\u08b0\u08b8"+ - "\7h\2\2\u08b1\u08b2\58\35\2\u08b2\u08b3\7C\2\2\u08b3\u08b4\7*\2\2\u08b4"+ - "\u08b5\7C\2\2\u08b5\u08b6\7h\2\2\u08b6\u08b8\3\2\2\2\u08b7\u08aa\3\2\2"+ - "\2\u08b7\u08ae\3\2\2\2\u08b7\u08b1\3\2\2\2\u08b8\u017f\3\2\2\2\u08b9\u08ba"+ - "\7C\2\2\u08ba\u08bb\7h\2\2\u08bb\u0181\3\2\2\2\u08bc\u08bd\7*\2\2\u08bd"+ - "\u08be\7C\2\2\u08be\u08c6\7h\2\2\u08bf\u08c0\58\35\2\u08c0\u08c1\7C\2"+ - "\2\u08c1\u08c2\7*\2\2\u08c2\u08c3\7C\2\2\u08c3\u08c4\7h\2\2\u08c4\u08c6"+ - "\3\2\2\2\u08c5\u08bc\3\2\2\2\u08c5\u08bf\3\2\2\2\u08c6\u0183\3\2\2\2\u08c7"+ - "\u08c8\5<\37\2\u08c8\u08c9\7?\2\2\u08c9\u08ca\5\u01a0\u00d1\2\u08ca\u08cb"+ - "\7@\2\2\u08cb\u08d2\3\2\2\2\u08cc\u08cd\5\u0168\u00b5\2\u08cd\u08ce\7"+ - "?\2\2\u08ce\u08cf\5\u01a0\u00d1\2\u08cf\u08d0\7@\2\2\u08d0\u08d2\3\2\2"+ - "\2\u08d1\u08c7\3\2\2\2\u08d1\u08cc\3\2\2\2\u08d2\u08da\3\2\2\2\u08d3\u08d4"+ - "\5\u0166\u00b4\2\u08d4\u08d5\7?\2\2\u08d5\u08d6\5\u01a0\u00d1\2\u08d6"+ - "\u08d7\7@\2\2\u08d7\u08d9\3\2\2\2\u08d8\u08d3\3\2\2\2\u08d9\u08dc\3\2"+ - "\2\2\u08da\u08d8\3\2\2\2\u08da\u08db\3\2\2\2\u08db\u0185\3\2\2\2\u08dc"+ - "\u08da\3\2\2\2\u08dd\u08de\5\u016e\u00b8\2\u08de\u08df\7?\2\2\u08df\u08e0"+ - "\5\u01a0\u00d1\2\u08e0\u08e1\7@\2\2\u08e1\u08e9\3\2\2\2\u08e2\u08e3\5"+ - "\u016c\u00b7\2\u08e3\u08e4\7?\2\2\u08e4\u08e5\5\u01a0\u00d1\2\u08e5\u08e6"+ - "\7@\2\2\u08e6\u08e8\3\2\2\2\u08e7\u08e2\3\2\2\2\u08e8\u08eb\3\2\2\2\u08e9"+ - "\u08e7\3\2\2\2\u08e9\u08ea\3\2\2\2\u08ea\u0187\3\2\2\2\u08eb\u08e9\3\2"+ - "\2\2\u08ec\u08ed\5<\37\2\u08ed\u08ee\7?\2\2\u08ee\u08ef\5\u01a0\u00d1"+ - "\2\u08ef\u08f0\7@\2\2\u08f0\u08f7\3\2\2\2\u08f1\u08f2\5\u0174\u00bb\2"+ - "\u08f2\u08f3\7?\2\2\u08f3\u08f4\5\u01a0\u00d1\2\u08f4\u08f5\7@\2\2\u08f5"+ - "\u08f7\3\2\2\2\u08f6\u08ec\3\2\2\2\u08f6\u08f1\3\2\2\2\u08f7\u08ff\3\2"+ - "\2\2\u08f8\u08f9\5\u0172\u00ba\2\u08f9\u08fa\7?\2\2\u08fa\u08fb\5\u01a0"+ - "\u00d1\2\u08fb\u08fc\7@\2\2\u08fc\u08fe\3\2\2\2\u08fd\u08f8\3\2\2\2\u08fe"+ - "\u0901\3\2\2\2\u08ff\u08fd\3\2\2\2\u08ff\u0900\3\2\2\2\u0900\u0189\3\2"+ - "\2\2\u0901\u08ff\3\2\2\2\u0902\u0903\5> \2\u0903\u0905\7;\2\2\u0904\u0906"+ - "\5\u0190\u00c9\2\u0905\u0904\3\2\2\2\u0905\u0906\3\2\2\2\u0906\u0907\3"+ - "\2\2\2\u0907\u0908\7<\2\2\u0908\u0947\3\2\2\2\u0909\u090a\58\35\2\u090a"+ - "\u090c\7C\2\2\u090b\u090d\5,\27\2\u090c\u090b\3\2\2\2\u090c\u090d\3\2"+ - "\2\2\u090d\u090e\3\2\2\2\u090e\u090f\7h\2\2\u090f\u0911\7;\2\2\u0910\u0912"+ - "\5\u0190\u00c9\2\u0911\u0910\3\2\2\2\u0911\u0912\3\2\2\2\u0912\u0913\3"+ - "\2\2\2\u0913\u0914\7<\2\2\u0914\u0947\3\2\2\2\u0915\u0916\5<\37\2\u0916"+ - "\u0918\7C\2\2\u0917\u0919\5,\27\2\u0918\u0917\3\2\2\2\u0918\u0919\3\2"+ - "\2\2\u0919\u091a\3\2\2\2\u091a\u091b\7h\2\2\u091b\u091d\7;\2\2\u091c\u091e"+ - "\5\u0190\u00c9\2\u091d\u091c\3\2\2\2\u091d\u091e\3\2\2\2\u091e\u091f\3"+ - "\2\2\2\u091f\u0920\7<\2\2\u0920\u0947\3\2\2\2\u0921\u0922\5\u0162\u00b2"+ - "\2\u0922\u0924\7C\2\2\u0923\u0925\5,\27\2\u0924\u0923\3\2\2\2\u0924\u0925"+ - "\3\2\2\2\u0925\u0926\3\2\2\2\u0926\u0927\7h\2\2\u0927\u0929\7;\2\2\u0928"+ - "\u092a\5\u0190\u00c9\2\u0929\u0928\3\2\2\2\u0929\u092a\3\2\2\2\u092a\u092b"+ - "\3\2\2\2\u092b\u092c\7<\2\2\u092c\u0947\3\2\2\2\u092d\u092e\7*\2\2\u092e"+ - "\u0930\7C\2\2\u092f\u0931\5,\27\2\u0930\u092f\3\2\2\2\u0930\u0931\3\2"+ - "\2\2\u0931\u0932\3\2\2\2\u0932\u0933\7h\2\2\u0933\u0935\7;\2\2\u0934\u0936"+ - "\5\u0190\u00c9\2\u0935\u0934\3\2\2\2\u0935\u0936\3\2\2\2\u0936\u0937\3"+ - "\2\2\2\u0937\u0947\7<\2\2\u0938\u0939\58\35\2\u0939\u093a\7C\2\2\u093a"+ - "\u093b\7*\2\2\u093b\u093d\7C\2\2\u093c\u093e\5,\27\2\u093d\u093c\3\2\2"+ - "\2\u093d\u093e\3\2\2\2\u093e\u093f\3\2\2\2\u093f\u0940\7h\2\2\u0940\u0942"+ - "\7;\2\2\u0941\u0943\5\u0190\u00c9\2\u0942\u0941\3\2\2\2\u0942\u0943\3"+ - "\2\2\2\u0943\u0944\3\2\2\2\u0944\u0945\7<\2\2\u0945\u0947\3\2\2\2\u0946"+ - "\u0902\3\2\2\2\u0946\u0909\3\2\2\2\u0946\u0915\3\2\2\2\u0946\u0921\3\2"+ - "\2\2\u0946\u092d\3\2\2\2\u0946\u0938\3\2\2\2\u0947\u018b\3\2\2\2\u0948"+ - "\u094a\7C\2\2\u0949\u094b\5,\27\2\u094a\u0949\3\2\2\2\u094a\u094b\3\2"+ - "\2\2\u094b\u094c\3\2\2\2\u094c\u094d\7h\2\2\u094d\u094f\7;\2\2\u094e\u0950"+ - "\5\u0190\u00c9\2\u094f\u094e\3\2\2\2\u094f\u0950\3\2\2\2\u0950\u0951\3"+ - "\2\2\2\u0951\u0952\7<\2\2\u0952\u018d\3\2\2\2\u0953\u0954\5> \2\u0954"+ - "\u0956\7;\2\2\u0955\u0957\5\u0190\u00c9\2\u0956\u0955\3\2\2\2\u0956\u0957"+ - "\3\2\2\2\u0957\u0958\3\2\2\2\u0958\u0959\7<\2\2\u0959\u098c\3\2\2\2\u095a"+ - "\u095b\58\35\2\u095b\u095d\7C\2\2\u095c\u095e\5,\27\2\u095d\u095c\3\2"+ - "\2\2\u095d\u095e\3\2\2\2\u095e\u095f\3\2\2\2\u095f\u0960\7h\2\2\u0960"+ - "\u0962\7;\2\2\u0961\u0963\5\u0190\u00c9\2\u0962\u0961\3\2\2\2\u0962\u0963"+ - "\3\2\2\2\u0963\u0964\3\2\2\2\u0964\u0965\7<\2\2\u0965\u098c\3\2\2\2\u0966"+ - "\u0967\5<\37\2\u0967\u0969\7C\2\2\u0968\u096a\5,\27\2"; + "\3\u00e2\7\u00e2\u0ab3\n\u00e2\f\u00e2\16\u00e2\u0ab6\13\u00e2\3\u00e3"+ + "\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3"+ + "\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\3\u00e3\7\u00e3\u0ac8\n\u00e3"+ + "\f\u00e3\16\u00e3\u0acb\13\u00e3\3\u00e4\3\u00e4\3\u00e4\3\u00e4\3\u00e4"+ + "\3\u00e4\3\u00e4\3\u00e4\3\u00e4\7\u00e4\u0ad6\n\u00e4\f\u00e4\16\u00e4"+ + "\u0ad9\13\u00e4\3\u00e5\3\u00e5\3\u00e5\3\u00e5\3\u00e5\3\u00e5\3\u00e5"+ + "\3\u00e5\3\u00e5\3\u00e5\3\u00e5\3\u00e5\7\u00e5\u0ae7\n\u00e5\f\u00e5"+ + "\16\u00e5\u0aea\13\u00e5\3\u00e6\3\u00e6\3\u00e6\3\u00e6\3\u00e6\3\u00e6"+ + "\3\u00e6\5\u00e6\u0af3\n\u00e6\3\u00e7\3\u00e7\3\u00e7\3\u00e8\3\u00e8"+ + "\3\u00e8\3\u00e9\3\u00e9\3\u00e9\3\u00e9\3\u00e9\3\u00e9\5\u00e9\u0b01"+ + "\n\u00e9\3\u00ea\3\u00ea\5\u00ea\u0b05\n\u00ea\3\u00ea\3\u00ea\7\u00ea"+ + "\u0b09\n\u00ea\f\u00ea\16\u00ea\u0b0c\13\u00ea\3\u00eb\3\u00eb\3\u00eb"+ + "\3\u00ec\3\u00ec\3\u00ed\3\u00ed\3\u00ed\3\u00ee\3\u00ee\3\u00ef\3\u00ef"+ + "\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef\7\u00ef\u0b20\n\u00ef"+ + "\f\u00ef\16\u00ef\u0b23\13\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef\3\u00ef"+ + "\3\u00ef\7\u00ef\u0b2b\n\u00ef\f\u00ef\16\u00ef\u0b2e\13\u00ef\3\u00ef"+ + "\3\u00ef\3\u00ef\5\u00ef\u0b33\n\u00ef\3\u00ef\2\17\66:@\u01b6\u01b8\u01ba"+ + "\u01bc\u01be\u01c0\u01c2\u01c4\u01c6\u01c8\u00f0\2\4\6\b\n\f\16\20\22"+ + "\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhjlnp"+ + "rtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092\u0094"+ + "\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa\u00ac"+ + "\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2\u00c4"+ + "\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da\u00dc"+ + "\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea\u00ec\u00ee\u00f0\u00f2\u00f4"+ + "\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102\u0104\u0106\u0108\u010a\u010c"+ + "\u010e\u0110\u0112\u0114\u0116\u0118\u011a\u011c\u011e\u0120\u0122\u0124"+ + "\u0126\u0128\u012a\u012c\u012e\u0130\u0132\u0134\u0136\u0138\u013a\u013c"+ + "\u013e\u0140\u0142\u0144\u0146\u0148\u014a\u014c\u014e\u0150\u0152\u0154"+ + "\u0156\u0158\u015a\u015c\u015e\u0160\u0162\u0164\u0166\u0168\u016a\u016c"+ + "\u016e\u0170\u0172\u0174\u0176\u0178\u017a\u017c\u017e\u0180\u0182\u0184"+ + "\u0186\u0188\u018a\u018c\u018e\u0190\u0192\u0194\u0196\u0198\u019a\u019c"+ + "\u019e\u01a0\u01a2\u01a4\u01a6\u01a8\u01aa\u01ac\u01ae\u01b0\u01b2\u01b4"+ + "\u01b6\u01b8\u01ba\u01bc\u01be\u01c0\u01c2\u01c4\u01c6\u01c8\u01ca\u01cc"+ + "\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u01da\u01dc\2\6\3\2\66;\7\2\b\b\13"+ + "\13\36\36 ((\4\2\21\21\27\27\4\2EE^h\u0c28\2\u01de\3\2\2\2\4\u01e2\3"+ + "\2\2\2\6\u01f2\3\2\2\2\b\u01f6\3\2\2\2\n\u01f8\3\2\2\2\f\u01fa\3\2\2\2"+ + "\16\u01ff\3\2\2\2\20\u0203\3\2\2\2\22\u0222\3\2\2\2\24\u0224\3\2\2\2\26"+ + "\u0232\3\2\2\2\30\u0239\3\2\2\2\32\u023b\3\2\2\2\34\u023d\3\2\2\2\36\u0242"+ + "\3\2\2\2 \u0250\3\2\2\2\"\u0255\3\2\2\2$\u026a\3\2\2\2&\u0271\3\2\2\2"+ + "(\u027d\3\2\2\2*\u027f\3\2\2\2,\u0282\3\2\2\2.\u0286\3\2\2\2\60\u0290"+ + "\3\2\2\2\62\u0295\3\2\2\2\64\u02a0\3\2\2\2\66\u02a2\3\2\2\28\u02b2\3\2"+ + "\2\2:\u02b4\3\2\2\2<\u02c4\3\2\2\2>\u02c6\3\2\2\2@\u02c8\3\2\2\2B\u02d4"+ + "\3\2\2\2D\u02e7\3\2\2\2F\u02f5\3\2\2\2H\u02fb\3\2\2\2J\u02fd\3\2\2\2L"+ + "\u0301\3\2\2\2N\u0307\3\2\2\2P\u030e\3\2\2\2R\u0318\3\2\2\2T\u031c\3\2"+ + "\2\2V\u0321\3\2\2\2X\u0339\3\2\2\2Z\u033b\3\2\2\2\\\u033f\3\2\2\2^\u0347"+ + "\3\2\2\2`\u034a\3\2\2\2b\u034d\3\2\2\2d\u0355\3\2\2\2f\u0361\3\2\2\2h"+ + "\u0368\3\2\2\2j\u036d\3\2\2\2l\u037e\3\2\2\2n\u0380\3\2\2\2p\u0388\3\2"+ + "\2\2r\u038d\3\2\2\2t\u0393\3\2\2\2v\u0397\3\2\2\2x\u039b\3\2\2\2z\u03a0"+ + "\3\2\2\2|\u03a4\3\2\2\2~\u03bd\3\2\2\2\u0080\u03bf\3\2\2\2\u0082\u03ca"+ + "\3\2\2\2\u0084\u03ce\3\2\2\2\u0086\u03d0\3\2\2\2\u0088\u03d2\3\2\2\2\u008a"+ + "\u03d4\3\2\2\2\u008c\u03df\3\2\2\2\u008e\u03e4\3\2\2\2\u0090\u03f4\3\2"+ + "\2\2\u0092\u040b\3\2\2\2\u0094\u040f\3\2\2\2\u0096\u0411\3\2\2\2\u0098"+ + "\u041f\3\2\2\2\u009a\u0431\3\2\2\2\u009c\u0436\3\2\2\2\u009e\u0440\3\2"+ + "\2\2\u00a0\u0453\3\2\2\2\u00a2\u0458\3\2\2\2\u00a4\u0462\3\2\2\2\u00a6"+ + "\u0465\3\2\2\2\u00a8\u046f\3\2\2\2\u00aa\u0473\3\2\2\2\u00ac\u0475\3\2"+ + "\2\2\u00ae\u0477\3\2\2\2\u00b0\u047d\3\2\2\2\u00b2\u048a\3\2\2\2\u00b4"+ + "\u048d\3\2\2\2\u00b6\u0496\3\2\2\2\u00b8\u0498\3\2\2\2\u00ba\u04cf\3\2"+ + "\2\2\u00bc\u04d4\3\2\2\2\u00be\u04de\3\2\2\2\u00c0\u04ea\3\2\2\2\u00c2"+ + "\u04f5\3\2\2\2\u00c4\u0503\3\2\2\2\u00c6\u0505\3\2\2\2\u00c8\u050e\3\2"+ + "\2\2\u00ca\u0513\3\2\2\2\u00cc\u0527\3\2\2\2\u00ce\u0529\3\2\2\2\u00d0"+ + "\u052c\3\2\2\2\u00d2\u053a\3\2\2\2\u00d4\u053f\3\2\2\2\u00d6\u054a\3\2"+ + "\2\2\u00d8\u054f\3\2\2\2\u00da\u055b\3\2\2\2\u00dc\u0560\3\2\2\2\u00de"+ + "\u0568\3\2\2\2\u00e0\u0576\3\2\2\2\u00e2\u057b\3\2\2\2\u00e4\u058d\3\2"+ + "\2\2\u00e6\u058f\3\2\2\2\u00e8\u0595\3\2\2\2\u00ea\u0597\3\2\2\2\u00ec"+ + "\u059f\3\2\2\2\u00ee\u05a7\3\2\2\2\u00f0\u05ae\3\2\2\2\u00f2\u05b0\3\2"+ + "\2\2\u00f4\u05b9\3\2\2\2\u00f6\u05c1\3\2\2\2\u00f8\u05c4\3\2\2\2\u00fa"+ + "\u05ca\3\2\2\2\u00fc\u05d3\3\2\2\2\u00fe\u05db\3\2\2\2\u0100\u05e1\3\2"+ + "\2\2\u0102\u05eb\3\2\2\2\u0104\u05ed\3\2\2\2\u0106\u05f2\3\2\2\2\u0108"+ + "\u05f7\3\2\2\2\u010a\u0603\3\2\2\2\u010c\u060a\3\2\2\2\u010e\u0618\3\2"+ + "\2\2\u0110\u061a\3\2\2\2\u0112\u061c\3\2\2\2\u0114\u0620\3\2\2\2\u0116"+ + "\u0624\3\2\2\2\u0118\u062e\3\2\2\2\u011a\u0630\3\2\2\2\u011c\u0636\3\2"+ + "\2\2\u011e\u063e\3\2\2\2\u0120\u0650\3\2\2\2\u0122\u0652\3\2\2\2\u0124"+ + "\u0658\3\2\2\2\u0126\u0667\3\2\2\2\u0128\u066a\3\2\2\2\u012a\u067b\3\2"+ + "\2\2\u012c\u067d\3\2\2\2\u012e\u067f\3\2\2\2\u0130\u0685\3\2\2\2\u0132"+ + "\u068b\3\2\2\2\u0134\u0695\3\2\2\2\u0136\u0699\3\2\2\2\u0138\u069b\3\2"+ + "\2\2\u013a\u06ab\3\2\2\2\u013c\u06bd\3\2\2\2\u013e\u06bf\3\2\2\2\u0140"+ + "\u06c1\3\2\2\2\u0142\u06c9\3\2\2\2\u0144\u06d8\3\2\2\2\u0146\u06e7\3\2"+ + "\2\2\u0148\u06ed\3\2\2\2\u014a\u06f3\3\2\2\2\u014c\u06f9\3\2\2\2\u014e"+ + "\u06fd\3\2\2\2\u0150\u070f\3\2\2\2\u0152\u0711\3\2\2\2\u0154\u0718\3\2"+ + "\2\2\u0156\u0721\3\2\2\2\u0158\u0727\3\2\2\2\u015a\u072f\3\2\2\2\u015c"+ + "\u0732\3\2\2\2\u015e\u073b\3\2\2\2\u0160\u0742\3\2\2\2\u0162\u074d\3\2"+ + "\2\2\u0164\u0757\3\2\2\2\u0166\u077c\3\2\2\2\u0168\u077e\3\2\2\2\u016a"+ + "\u079c\3\2\2\2\u016c\u07a3\3\2\2\2\u016e\u07a5\3\2\2\2\u0170\u07ab\3\2"+ + "\2\2\u0172\u07d5\3\2\2\2\u0174\u07d7\3\2\2\2\u0176\u0800\3\2\2\2\u0178"+ + "\u0855\3\2\2\2\u017a\u0857\3\2\2\2\u017c\u08a9\3\2\2\2\u017e\u08ae\3\2"+ + "\2\2\u0180\u08bd\3\2\2\2\u0182\u08bf\3\2\2\2\u0184\u08cb\3\2\2\2\u0186"+ + "\u08d7\3\2\2\2\u0188\u08e3\3\2\2\2\u018a\u08fc\3\2\2\2\u018c\u094c\3\2"+ + "\2\2\u018e\u094e\3\2\2\2\u0190\u0991\3\2\2\2\u0192\u0993\3\2\2\2\u0194"+ + "\u09ca\3\2\2\2\u0196\u09cc\3\2\2\2\u0198\u09fa\3\2\2\2\u019a\u0a12\3\2"+ + "\2\2\u019c\u0a14\3\2\2\2\u019e\u0a1e\3\2\2\2\u01a0\u0a25\3\2\2\2\u01a2"+ + "\u0a29\3\2\2\2\u01a4\u0a2b\3\2\2\2\u01a6\u0a35\3\2\2\2\u01a8\u0a37\3\2"+ + "\2\2\u01aa\u0a41\3\2\2\2\u01ac\u0a45\3\2\2\2\u01ae\u0a47\3\2\2\2\u01b0"+ + "\u0a4e\3\2\2\2\u01b2\u0a50\3\2\2\2\u01b4\u0a59\3\2\2\2\u01b6\u0a5b\3\2"+ + "\2\2\u01b8\u0a66\3\2\2\2\u01ba\u0a71\3\2\2\2\u01bc\u0a7c\3\2\2\2\u01be"+ + "\u0a87\3\2\2\2\u01c0\u0a92\3\2\2\2\u01c2\u0aa0\3\2\2\2\u01c4\u0ab7\3\2"+ + "\2\2\u01c6\u0acc\3\2\2\2\u01c8\u0ada\3\2\2\2\u01ca\u0af2\3\2\2\2\u01cc"+ + "\u0af4\3\2\2\2\u01ce\u0af7\3\2\2\2\u01d0\u0b00\3\2\2\2\u01d2\u0b04\3\2"+ + "\2\2\u01d4\u0b0d\3\2\2\2\u01d6\u0b10\3\2\2\2\u01d8\u0b12\3\2\2\2\u01da"+ + "\u0b15\3\2\2\2\u01dc\u0b32\3\2\2\2\u01de\u01df\t\2\2\2\u01df\3\3\2\2\2"+ + "\u01e0\u01e3\5\6\4\2\u01e1\u01e3\5\16\b\2\u01e2\u01e0\3\2\2\2\u01e2\u01e1"+ + "\3\2\2\2\u01e3\5\3\2\2\2\u01e4\u01e6\5\u00e8u\2\u01e5\u01e4\3\2\2\2\u01e6"+ + "\u01e9\3\2\2\2\u01e7\u01e5\3\2\2\2\u01e7\u01e8\3\2\2\2\u01e8\u01ea\3\2"+ + "\2\2\u01e9\u01e7\3\2\2\2\u01ea\u01f3\5\b\5\2\u01eb\u01ed\5\u00e8u\2\u01ec"+ + "\u01eb\3\2\2\2\u01ed\u01f0\3\2\2\2\u01ee\u01ec\3\2\2\2\u01ee\u01ef\3\2"+ + "\2\2\u01ef\u01f1\3\2\2\2\u01f0\u01ee\3\2\2\2\u01f1\u01f3\7\6\2\2\u01f2"+ + "\u01e7\3\2\2\2\u01f2\u01ee\3\2\2\2\u01f3\7\3\2\2\2\u01f4\u01f7\5\n\6\2"+ + "\u01f5\u01f7\5\f\7\2\u01f6\u01f4\3\2\2\2\u01f6\u01f5\3\2\2\2\u01f7\t\3"+ + "\2\2\2\u01f8\u01f9\t\3\2\2\u01f9\13\3\2\2\2\u01fa\u01fb\t\4\2\2\u01fb"+ + "\r\3\2\2\2\u01fc\u0200\5\20\t\2\u01fd\u0200\5\36\20\2\u01fe\u0200\5 \21"+ + "\2\u01ff\u01fc\3\2\2\2\u01ff\u01fd\3\2\2\2\u01ff\u01fe\3\2\2\2\u0200\17"+ + "\3\2\2\2\u0201\u0204\5\26\f\2\u0202\u0204\5\34\17\2\u0203\u0201\3\2\2"+ + "\2\u0203\u0202\3\2\2\2\u0204\u0209\3\2\2\2\u0205\u0208\5\24\13\2\u0206"+ + "\u0208\5\32\16\2\u0207\u0205\3\2\2\2\u0207\u0206\3\2\2\2\u0208\u020b\3"+ + "\2\2\2\u0209\u0207\3\2\2\2\u0209\u020a\3\2\2\2\u020a\21\3\2\2\2\u020b"+ + "\u0209\3\2\2\2\u020c\u020e\5\u00e8u\2\u020d\u020c\3\2\2\2\u020e\u0211"+ + "\3\2\2\2\u020f\u020d\3\2\2\2\u020f\u0210\3\2\2\2\u0210\u0212\3\2\2\2\u0211"+ + "\u020f\3\2\2\2\u0212\u0214\7i\2\2\u0213\u0215\5,\27\2\u0214\u0213\3\2"+ + "\2\2\u0214\u0215\3\2\2\2\u0215\u0223\3\2\2\2\u0216\u0217\5\20\t\2\u0217"+ + "\u021b\7D\2\2\u0218\u021a\5\u00e8u\2\u0219\u0218\3\2\2\2\u021a\u021d\3"+ + "\2\2\2\u021b\u0219\3\2\2\2\u021b\u021c\3\2\2\2\u021c\u021e\3\2\2\2\u021d"+ + "\u021b\3\2\2\2\u021e\u0220\7i\2\2\u021f\u0221\5,\27\2\u0220\u021f\3\2"+ + "\2\2\u0220\u0221\3\2\2\2\u0221\u0223\3\2\2\2\u0222\u020f\3\2\2\2\u0222"+ + "\u0216\3\2\2\2\u0223\23\3\2\2\2\u0224\u0228\7D\2\2\u0225\u0227\5\u00e8"+ + "u\2\u0226\u0225\3\2\2\2\u0227\u022a\3\2\2\2\u0228\u0226\3\2\2\2\u0228"+ + "\u0229\3\2\2\2\u0229\u022b\3\2\2\2\u022a\u0228\3\2\2\2\u022b\u022d\7i"+ + "\2\2\u022c\u022e\5,\27\2\u022d\u022c\3\2\2\2\u022d\u022e\3\2\2\2\u022e"+ + "\25\3\2\2\2\u022f\u0231\5\u00e8u\2\u0230\u022f\3\2\2\2\u0231\u0234\3\2"+ + "\2\2\u0232\u0230\3\2\2\2\u0232\u0233\3\2\2\2\u0233\u0235\3\2\2\2\u0234"+ + "\u0232\3\2\2\2\u0235\u0237\7i\2\2\u0236\u0238\5,\27\2\u0237\u0236\3\2"+ + "\2\2\u0237\u0238\3\2\2\2\u0238\27\3\2\2\2\u0239\u023a\5\22\n\2\u023a\31"+ + "\3\2\2\2\u023b\u023c\5\24\13\2\u023c\33\3\2\2\2\u023d\u023e\5\26\f\2\u023e"+ + "\35\3\2\2\2\u023f\u0241\5\u00e8u\2\u0240\u023f\3\2\2\2\u0241\u0244\3\2"+ + "\2\2\u0242\u0240\3\2\2\2\u0242\u0243\3\2\2\2\u0243\u0245\3\2\2\2\u0244"+ + "\u0242\3\2\2\2\u0245\u0246\7i\2\2\u0246\37\3\2\2\2\u0247\u0248\5\6\4\2"+ + "\u0248\u0249\5\"\22\2\u0249\u0251\3\2\2\2\u024a\u024b\5\20\t\2\u024b\u024c"+ + "\5\"\22\2\u024c\u0251\3\2\2\2\u024d\u024e\5\36\20\2\u024e\u024f\5\"\22"+ + "\2\u024f\u0251\3\2\2\2\u0250\u0247\3\2\2\2\u0250\u024a\3\2\2\2\u0250\u024d"+ + "\3\2\2\2\u0251!\3\2\2\2\u0252\u0254\5\u00e8u\2\u0253\u0252\3\2\2\2\u0254"+ + "\u0257\3\2\2\2\u0255\u0253\3\2\2\2\u0255\u0256\3\2\2\2\u0256\u0258\3\2"+ + "\2\2\u0257\u0255\3\2\2\2\u0258\u0259\7@\2\2\u0259\u0264\7A\2\2\u025a\u025c"+ + "\5\u00e8u\2\u025b\u025a\3\2\2\2\u025c\u025f\3\2\2\2\u025d\u025b\3\2\2"+ + "\2\u025d\u025e\3\2\2\2\u025e\u0260\3\2\2\2\u025f\u025d\3\2\2\2\u0260\u0261"+ + "\7@\2\2\u0261\u0263\7A\2\2\u0262\u025d\3\2\2\2\u0263\u0266\3\2\2\2\u0264"+ + "\u0262\3\2\2\2\u0264\u0265\3\2\2\2\u0265#\3\2\2\2\u0266\u0264\3\2\2\2"+ + "\u0267\u0269\5&\24\2\u0268\u0267\3\2\2\2\u0269\u026c\3\2\2\2\u026a\u0268"+ + "\3\2\2\2\u026a\u026b\3\2\2\2\u026b\u026d\3\2\2\2\u026c\u026a\3\2\2\2\u026d"+ + "\u026f\7i\2\2\u026e\u0270\5(\25\2\u026f\u026e\3\2\2\2\u026f\u0270\3\2"+ + "\2\2\u0270%\3\2\2\2\u0271\u0272\5\u00e8u\2\u0272\'\3\2\2\2\u0273\u0274"+ + "\7\24\2\2\u0274\u027e\5\36\20\2\u0275\u0276\7\24\2\2\u0276\u027a\5\20"+ + "\t\2\u0277\u0279\5*\26\2\u0278\u0277\3\2\2\2\u0279\u027c\3\2\2\2\u027a"+ + "\u0278\3\2\2\2\u027a\u027b\3\2\2\2\u027b\u027e\3\2\2\2\u027c\u027a\3\2"+ + "\2\2\u027d\u0273\3\2\2\2\u027d\u0275\3\2\2\2\u027e)\3\2\2\2\u027f\u0280"+ + "\7X\2\2\u0280\u0281\5\30\r\2\u0281+\3\2\2\2\u0282\u0283\7G\2\2\u0283\u0284"+ + "\5.\30\2\u0284\u0285\7F\2\2\u0285-\3\2\2\2\u0286\u028b\5\60\31\2\u0287"+ + "\u0288\7C\2\2\u0288\u028a\5\60\31\2\u0289\u0287\3\2\2\2\u028a\u028d\3"+ + "\2\2\2\u028b\u0289\3\2\2\2\u028b\u028c\3\2\2\2\u028c/\3\2\2\2\u028d\u028b"+ + "\3\2\2\2\u028e\u0291\5\16\b\2\u028f\u0291\5\62\32\2\u0290\u028e\3\2\2"+ + "\2\u0290\u028f\3\2\2\2\u0291\61\3\2\2\2\u0292\u0294\5\u00e8u\2\u0293\u0292"+ + "\3\2\2\2\u0294\u0297\3\2\2\2\u0295\u0293\3\2\2\2\u0295\u0296\3\2\2\2\u0296"+ + "\u0298\3\2\2\2\u0297\u0295\3\2\2\2\u0298\u029a\7J\2\2\u0299\u029b\5\64"+ + "\33\2\u029a\u0299\3\2\2\2\u029a\u029b\3\2\2\2\u029b\63\3\2\2\2\u029c\u029d"+ + "\7\24\2\2\u029d\u02a1\5\16\b\2\u029e\u029f\7+\2\2\u029f\u02a1\5\16\b\2"+ + "\u02a0\u029c\3\2\2\2\u02a0\u029e\3\2\2\2\u02a1\65\3\2\2\2\u02a2\u02a3"+ + "\b\34\1\2\u02a3\u02a4\7i\2\2\u02a4\u02aa\3\2\2\2\u02a5\u02a6\f\3\2\2\u02a6"+ + "\u02a7\7D\2\2\u02a7\u02a9\7i\2\2\u02a8\u02a5\3\2\2\2\u02a9\u02ac\3\2\2"+ + "\2\u02aa\u02a8\3\2\2\2\u02aa\u02ab\3\2\2\2\u02ab\67\3\2\2\2\u02ac\u02aa"+ + "\3\2\2\2\u02ad\u02b3\7i\2\2\u02ae\u02af\5:\36\2\u02af\u02b0\7D\2\2\u02b0"+ + "\u02b1\7i\2\2\u02b1\u02b3\3\2\2\2\u02b2\u02ad\3\2\2\2\u02b2\u02ae\3\2"+ + "\2\2\u02b39\3\2\2\2\u02b4\u02b5\b\36\1\2\u02b5\u02b6\7i\2\2\u02b6\u02bc"+ + "\3\2\2\2\u02b7\u02b8\f\3\2\2\u02b8\u02b9\7D\2\2\u02b9\u02bb\7i\2\2\u02ba"+ + "\u02b7\3\2\2\2\u02bb\u02be\3\2\2\2\u02bc\u02ba\3\2\2\2\u02bc\u02bd\3\2"+ + "\2\2\u02bd;\3\2\2\2\u02be\u02bc\3\2\2\2\u02bf\u02c5\7i\2\2\u02c0\u02c1"+ + "\5@!\2\u02c1\u02c2\7D\2\2\u02c2\u02c3\7i\2\2\u02c3\u02c5\3\2\2\2\u02c4"+ + "\u02bf\3\2\2\2\u02c4\u02c0\3\2\2\2\u02c5=\3\2\2\2\u02c6\u02c7\7i\2\2\u02c7"+ + "?\3\2\2\2\u02c8\u02c9\b!\1\2\u02c9\u02ca\7i\2\2\u02ca\u02d0\3\2\2\2\u02cb"+ + "\u02cc\f\3\2\2\u02cc\u02cd\7D\2\2\u02cd\u02cf\7i\2\2\u02ce\u02cb\3\2\2"+ + "\2\u02cf\u02d2\3\2\2\2\u02d0\u02ce\3\2\2\2\u02d0\u02d1\3\2\2\2\u02d1A"+ + "\3\2\2\2\u02d2\u02d0\3\2\2\2\u02d3\u02d5\5D#\2\u02d4\u02d3\3\2\2\2\u02d4"+ + "\u02d5\3\2\2\2\u02d5\u02d9\3\2\2\2\u02d6\u02d8\5H%\2\u02d7\u02d6\3\2\2"+ + "\2\u02d8\u02db\3\2\2\2\u02d9\u02d7\3\2\2\2\u02d9\u02da\3\2\2\2\u02da\u02df"+ + "\3\2\2\2\u02db\u02d9\3\2\2\2\u02dc\u02de\5R*\2\u02dd\u02dc\3\2\2\2\u02de"+ + "\u02e1\3\2\2\2\u02df\u02dd\3\2\2\2\u02df\u02e0\3\2\2\2\u02e0\u02e2\3\2"+ + "\2\2\u02e1\u02df\3\2\2\2\u02e2\u02e3\7\2\2\3\u02e3C\3\2\2\2\u02e4\u02e6"+ + "\5F$\2\u02e5\u02e4\3\2\2\2\u02e6\u02e9\3\2\2\2\u02e7\u02e5\3\2\2\2\u02e7"+ + "\u02e8\3\2\2\2\u02e8\u02ea\3\2\2\2\u02e9\u02e7\3\2\2\2\u02ea\u02eb\7#"+ + "\2\2\u02eb\u02f0\7i\2\2\u02ec\u02ed\7D\2\2\u02ed\u02ef\7i\2\2\u02ee\u02ec"+ + "\3\2\2\2\u02ef\u02f2\3\2\2\2\u02f0\u02ee\3\2\2\2\u02f0\u02f1\3\2\2\2\u02f1"+ + "\u02f3\3\2\2\2\u02f2\u02f0\3\2\2\2\u02f3\u02f4\7B\2\2\u02f4E\3\2\2\2\u02f5"+ + "\u02f6\5\u00e8u\2\u02f6G\3\2\2\2\u02f7\u02fc\5J&\2\u02f8\u02fc\5L\'\2"+ + "\u02f9\u02fc\5N(\2\u02fa\u02fc\5P)\2\u02fb\u02f7\3\2\2\2\u02fb\u02f8\3"+ + "\2\2\2\u02fb\u02f9\3\2\2\2\u02fb\u02fa\3\2\2\2\u02fcI\3\2\2\2\u02fd\u02fe"+ + "\7\34\2\2\u02fe\u02ff\58\35\2\u02ff\u0300\7B\2\2\u0300K\3\2\2\2\u0301"+ + "\u0302\7\34\2\2\u0302\u0303\5:\36\2\u0303\u0304\7D\2\2\u0304\u0305\7V"+ + "\2\2\u0305\u0306\7B\2\2\u0306M\3\2\2\2\u0307\u0308\7\34\2\2\u0308\u0309"+ + "\7)\2\2\u0309\u030a\58\35\2\u030a\u030b\7D\2\2\u030b\u030c\7i\2\2\u030c"+ + "\u030d\7B\2\2\u030dO\3\2\2\2\u030e\u030f\7\34\2\2\u030f\u0310\7)\2\2\u0310"+ + "\u0311\58\35\2\u0311\u0312\7D\2\2\u0312\u0313\7V\2\2\u0313\u0314\7B\2"+ + "\2\u0314Q\3\2\2\2\u0315\u0319\5T+\2\u0316\u0319\5\u00c8e\2\u0317\u0319"+ + "\7B\2\2\u0318\u0315\3\2\2\2\u0318\u0316\3\2\2\2\u0318\u0317\3\2\2\2\u0319"+ + "S\3\2\2\2\u031a\u031d\5V,\2\u031b\u031d\5\u00bc_\2\u031c\u031a\3\2\2\2"+ + "\u031c\u031b\3\2\2\2\u031dU\3\2\2\2\u031e\u0320\5X-\2\u031f\u031e\3\2"+ + "\2\2\u0320\u0323\3\2\2\2\u0321\u031f\3\2\2\2\u0321\u0322\3\2\2\2\u0322"+ + "\u0324\3\2\2\2\u0323\u0321\3\2\2\2\u0324\u0325\7\f\2\2\u0325\u0327\7i"+ + "\2\2\u0326\u0328\5Z.\2\u0327\u0326\3\2\2\2\u0327\u0328\3\2\2\2\u0328\u032a"+ + "\3\2\2\2\u0329\u032b\5^\60\2\u032a\u0329\3\2\2\2\u032a\u032b\3\2\2\2\u032b"+ + "\u032d\3\2\2\2\u032c\u032e\5`\61\2\u032d\u032c\3\2\2\2\u032d\u032e\3\2"+ + "\2\2\u032e\u032f\3\2\2\2\u032f\u0330\5d\63\2\u0330W\3\2\2\2\u0331\u033a"+ + "\5\u00e8u\2\u0332\u033a\7&\2\2\u0333\u033a\7%\2\2\u0334\u033a\7$\2\2\u0335"+ + "\u033a\7\4\2\2\u0336\u033a\7)\2\2\u0337\u033a\7\25\2\2\u0338\u033a\7*"+ + "\2\2\u0339\u0331\3\2\2\2\u0339\u0332\3\2\2\2\u0339\u0333\3\2\2\2\u0339"+ + "\u0334\3\2\2\2\u0339\u0335\3\2\2\2\u0339\u0336\3\2\2\2\u0339\u0337\3\2"+ + "\2\2\u0339\u0338\3\2\2\2\u033aY\3\2\2\2\u033b\u033c\7G\2\2\u033c\u033d"+ + "\5\\/\2\u033d\u033e\7F\2\2\u033e[\3\2\2\2\u033f\u0344\5$\23\2\u0340\u0341"+ + "\7C\2\2\u0341\u0343\5$\23\2\u0342\u0340\3\2\2\2\u0343\u0346\3\2\2\2\u0344"+ + "\u0342\3\2\2\2\u0344\u0345\3\2\2\2\u0345]\3\2\2\2\u0346\u0344\3\2\2\2"+ + "\u0347\u0348\7\24\2\2\u0348\u0349\5\22\n\2\u0349_\3\2\2\2\u034a\u034b"+ + "\7\33\2\2\u034b\u034c\5b\62\2\u034ca\3\2\2\2\u034d\u0352\5\30\r\2\u034e"+ + "\u034f\7C\2\2\u034f\u0351\5\30\r\2\u0350\u034e\3\2\2\2\u0351\u0354\3\2"+ + "\2\2\u0352\u0350\3\2\2\2\u0352\u0353\3\2\2\2\u0353c\3\2\2\2\u0354\u0352"+ + "\3\2\2\2\u0355\u0359\7>\2\2\u0356\u0358\5f\64\2\u0357\u0356\3\2\2\2\u0358"+ + "\u035b\3\2\2\2\u0359\u0357\3\2\2\2\u0359\u035a\3\2\2\2\u035a\u035c\3\2"+ + "\2\2\u035b\u0359\3\2\2\2\u035c\u035d\7?\2\2\u035de\3\2\2\2\u035e\u0362"+ + "\5h\65\2\u035f\u0362\5\u00acW\2\u0360\u0362\5\u00aeX\2\u0361\u035e\3\2"+ + "\2\2\u0361\u035f\3\2\2\2\u0361\u0360\3\2\2\2\u0362g\3\2\2\2\u0363\u0369"+ + "\5j\66\2\u0364\u0369\5\u008eH\2\u0365\u0369\5T+\2\u0366\u0369\5\u00c8"+ + "e\2\u0367\u0369\7B\2\2\u0368\u0363\3\2\2\2\u0368\u0364\3\2\2\2\u0368\u0365"+ + "\3\2\2\2\u0368\u0366\3\2\2\2\u0368\u0367\3\2\2\2\u0369i\3\2\2\2\u036a"+ + "\u036c\5l\67\2\u036b\u036a\3\2\2\2\u036c\u036f\3\2\2\2\u036d\u036b\3\2"+ + "\2\2\u036d\u036e\3\2\2\2\u036e\u0371\3\2\2\2\u036f\u036d\3\2\2\2\u0370"+ + "\u0372\5v<\2\u0371\u0370\3\2\2\2\u0371\u0372\3\2\2\2\u0372\u0373\3\2\2"+ + "\2\u0373\u0374\5n8\2\u0374\u0375\7B\2\2\u0375k\3\2\2\2\u0376\u037f\5\u00e8"+ + "u\2\u0377\u037f\7&\2\2\u0378\u037f\7%\2\2\u0379\u037f\7$\2\2\u037a\u037f"+ + "\7)\2\2\u037b\u037f\7\25\2\2\u037c\u037f\7\61\2\2\u037d\u037f\7\64\2\2"+ + "\u037e\u0376\3\2\2\2\u037e\u0377\3\2\2\2\u037e\u0378\3\2\2\2\u037e\u0379"+ + "\3\2\2\2\u037e\u037a\3\2\2\2\u037e\u037b\3\2\2\2\u037e\u037c\3\2\2\2\u037e"+ + "\u037d\3\2\2\2\u037fm\3\2\2\2\u0380\u0385\5p9\2\u0381\u0382\7C\2\2\u0382"+ + "\u0384\5p9\2\u0383\u0381\3\2\2\2\u0384\u0387\3\2\2\2\u0385\u0383\3\2\2"+ + "\2\u0385\u0386\3\2\2\2\u0386o\3\2\2\2\u0387\u0385\3\2\2\2\u0388\u038b"+ + "\5r:\2\u0389\u038a\7E\2\2\u038a\u038c\5t;\2\u038b\u0389\3\2\2\2\u038b"+ + "\u038c\3\2\2\2\u038cq\3\2\2\2\u038d\u038f\7i\2\2\u038e\u0390\5\"\22\2"+ + "\u038f\u038e\3\2\2\2\u038f\u0390\3\2\2\2\u0390s\3\2\2\2\u0391\u0394\5"+ + "\u01a2\u00d2\2\u0392\u0394\5\u00fa~\2\u0393\u0391\3\2\2\2\u0393\u0392"+ + "\3\2\2\2\u0394u\3\2\2\2\u0395\u0398\5x=\2\u0396\u0398\5z>\2\u0397\u0395"+ + "\3\2\2\2\u0397\u0396\3\2\2\2\u0398w\3\2\2\2\u0399\u039c\5\b\5\2\u039a"+ + "\u039c\7\6\2\2\u039b\u0399\3\2\2\2\u039b\u039a\3\2\2\2\u039cy\3\2\2\2"+ + "\u039d\u03a1\5|?\2\u039e\u03a1\5\u008aF\2\u039f\u03a1\5\u008cG\2\u03a0"+ + "\u039d\3\2\2\2\u03a0\u039e\3\2\2\2\u03a0\u039f\3\2\2\2\u03a1{\3\2\2\2"+ + "\u03a2\u03a5\5\u0082B\2\u03a3\u03a5\5\u0088E\2\u03a4\u03a2\3\2\2\2\u03a4"+ + "\u03a3\3\2\2\2\u03a5\u03aa\3\2\2\2\u03a6\u03a9\5\u0080A\2\u03a7\u03a9"+ + "\5\u0086D\2\u03a8\u03a6\3\2\2\2\u03a8\u03a7\3\2\2\2\u03a9\u03ac\3\2\2"+ + "\2\u03aa\u03a8\3\2\2\2\u03aa\u03ab\3\2\2\2\u03ab}\3\2\2\2\u03ac\u03aa"+ + "\3\2\2\2\u03ad\u03af\7i\2\2\u03ae\u03b0\5,\27\2\u03af\u03ae\3\2\2\2\u03af"+ + "\u03b0\3\2\2\2\u03b0\u03be\3\2\2\2\u03b1\u03b2\5|?\2\u03b2\u03b6\7D\2"+ + "\2\u03b3\u03b5\5\u00e8u\2\u03b4\u03b3\3\2\2\2\u03b5\u03b8\3\2\2\2\u03b6"+ + "\u03b4\3\2\2\2\u03b6\u03b7\3\2\2\2\u03b7\u03b9\3\2\2\2\u03b8\u03b6\3\2"+ + "\2\2\u03b9\u03bb\7i\2\2\u03ba\u03bc\5,\27\2\u03bb\u03ba\3\2\2\2\u03bb"+ + "\u03bc\3\2\2\2\u03bc\u03be\3\2\2\2\u03bd\u03ad\3\2\2\2\u03bd\u03b1\3\2"+ + "\2\2\u03be\177\3\2\2\2\u03bf\u03c3\7D\2\2\u03c0\u03c2\5\u00e8u\2\u03c1"+ + "\u03c0\3\2\2\2\u03c2\u03c5\3\2\2\2\u03c3\u03c1\3\2\2\2\u03c3\u03c4\3\2"+ + "\2\2\u03c4\u03c6\3\2\2\2\u03c5\u03c3\3\2\2\2\u03c6\u03c8\7i\2\2\u03c7"+ + "\u03c9\5,\27\2\u03c8\u03c7\3\2\2\2\u03c8\u03c9\3\2\2\2\u03c9\u0081\3\2"+ + "\2\2\u03ca\u03cc\7i\2\2\u03cb\u03cd\5,\27\2\u03cc\u03cb\3\2\2\2\u03cc"+ + "\u03cd\3\2\2\2\u03cd\u0083\3\2\2\2\u03ce\u03cf\5~@\2\u03cf\u0085\3\2\2"+ + "\2\u03d0\u03d1\5\u0080A\2\u03d1\u0087\3\2\2\2\u03d2\u03d3\5\u0082B\2\u03d3"+ + "\u0089\3\2\2\2\u03d4\u03d5\7i\2\2\u03d5\u008b\3\2\2\2\u03d6\u03d7\5x="+ + "\2\u03d7\u03d8\5\"\22\2\u03d8\u03e0\3\2\2\2\u03d9\u03da\5|?\2\u03da\u03db"+ + "\5\"\22\2\u03db\u03e0\3\2\2\2\u03dc\u03dd\5\u008aF\2\u03dd\u03de\5\"\22"+ + "\2\u03de\u03e0\3\2\2\2\u03df\u03d6\3\2\2\2\u03df\u03d9\3\2\2\2\u03df\u03dc"+ + "\3\2\2\2\u03e0\u008d\3\2\2\2\u03e1\u03e3\5\u0090I\2\u03e2\u03e1\3\2\2"+ + "\2\u03e3\u03e6\3\2\2\2\u03e4\u03e2\3\2\2\2\u03e4\u03e5\3\2\2\2\u03e5\u03e7"+ + "\3\2\2\2\u03e6\u03e4\3\2\2\2\u03e7\u03e8\5\u0092J\2\u03e8\u03e9\5\u00aa"+ + "V\2\u03e9\u008f\3\2\2\2\u03ea\u03f5\5\u00e8u\2\u03eb\u03f5\7&\2\2\u03ec"+ + "\u03f5\7%\2\2\u03ed\u03f5\7$\2\2\u03ee\u03f5\7\4\2\2\u03ef\u03f5\7)\2"+ + "\2\u03f0\u03f5\7\25\2\2\u03f1\u03f5\7-\2\2\u03f2\u03f5\7!\2\2\u03f3\u03f5"+ + "\7*\2\2\u03f4\u03ea\3\2\2\2\u03f4\u03eb\3\2\2\2\u03f4\u03ec\3\2\2\2\u03f4"+ + "\u03ed\3\2\2\2\u03f4\u03ee\3\2\2\2\u03f4\u03ef\3\2\2\2\u03f4\u03f0\3\2"+ + "\2\2\u03f4\u03f1\3\2\2\2\u03f4\u03f2\3\2\2\2\u03f4\u03f3\3\2\2\2\u03f5"+ + "\u0091\3\2\2\2\u03f6\u03f8\5\u0094K\2\u03f7\u03f6\3\2\2\2\u03f7\u03f8"+ + "\3\2\2\2\u03f8\u03f9\3\2\2\2\u03f9\u03fb\5\u0096L\2\u03fa\u03fc\5\u00a4"+ + "S\2\u03fb\u03fa\3\2\2\2\u03fb\u03fc\3\2\2\2\u03fc\u040c\3\2\2\2\u03fd"+ + "\u0401\5Z.\2\u03fe\u0400\5\u00e8u\2\u03ff\u03fe\3\2\2\2\u0400\u0403\3"+ + "\2\2\2\u0401\u03ff\3\2\2\2\u0401\u0402\3\2\2\2\u0402\u0405\3\2\2\2\u0403"+ + "\u0401\3\2\2\2\u0404\u0406\5\u0094K\2\u0405\u0404\3\2\2\2\u0405\u0406"+ + "\3\2\2\2\u0406\u0407\3\2\2\2\u0407\u0409\5\u0096L\2\u0408\u040a\5\u00a4"+ + "S\2\u0409\u0408\3\2\2\2\u0409\u040a\3\2\2\2\u040a\u040c\3\2\2\2\u040b"+ + "\u03f7\3\2\2\2\u040b\u03fd\3\2\2\2\u040c\u0093\3\2\2\2\u040d\u0410\5v"+ + "<\2\u040e\u0410\7\63\2\2\u040f\u040d\3\2\2\2\u040f\u040e\3\2\2\2\u0410"+ + "\u0095\3\2\2\2\u0411\u0412\7i\2\2\u0412\u0414\7<\2\2\u0413\u0415\5\u0098"+ + "M\2\u0414\u0413\3\2\2\2\u0414\u0415\3\2\2\2\u0415\u0416\3\2\2\2\u0416"+ + "\u0418\7=\2\2\u0417\u0419\5\"\22\2\u0418\u0417\3\2\2\2\u0418\u0419\3\2"+ + "\2\2\u0419\u0097\3\2\2\2\u041a\u041b\5\u009aN\2\u041b\u041c\7C\2\2\u041c"+ + "\u041d\5\u00a0Q\2\u041d\u0420\3\2\2\2\u041e\u0420\5\u00a0Q\2\u041f\u041a"+ + "\3\2\2\2\u041f\u041e\3\2\2\2\u0420\u0099\3\2\2\2\u0421\u0426\5\u009cO"+ + "\2\u0422\u0423\7C\2\2\u0423\u0425\5\u009cO\2\u0424\u0422\3\2\2\2\u0425"+ + "\u0428\3\2\2\2\u0426\u0424\3\2\2\2\u0426\u0427\3\2\2\2\u0427\u0432\3\2"+ + "\2\2\u0428\u0426\3\2\2\2\u0429\u042e\5\u00a2R\2\u042a\u042b\7C\2\2\u042b"+ + "\u042d\5\u009cO\2\u042c\u042a\3\2\2\2\u042d\u0430\3\2\2\2\u042e\u042c"+ + "\3\2\2\2\u042e\u042f\3\2\2\2\u042f\u0432\3\2\2\2\u0430\u042e\3\2\2\2\u0431"+ + "\u0421\3\2\2\2\u0431\u0429\3\2\2\2\u0432\u009b\3\2\2\2\u0433\u0435\5\u009e"+ + "P\2\u0434\u0433\3\2\2\2\u0435\u0438\3\2\2\2\u0436\u0434\3\2\2\2\u0436"+ + "\u0437\3\2\2\2\u0437\u043a\3\2\2\2\u0438\u0436\3\2\2\2\u0439\u043b\5v"+ + "<\2\u043a\u0439\3\2\2\2\u043a\u043b\3\2\2\2\u043b\u043c\3\2\2\2\u043c"+ + "\u043d\5r:\2\u043d\u009d\3\2\2\2\u043e\u0441\5\u00e8u\2\u043f\u0441\7"+ + "\25\2\2\u0440\u043e\3\2\2\2\u0440\u043f\3\2\2\2\u0441\u009f\3\2\2\2\u0442"+ + "\u0444\5\u009eP\2\u0443\u0442\3\2\2\2\u0444\u0447\3\2\2\2\u0445\u0443"+ + "\3\2\2\2\u0445\u0446\3\2\2\2\u0446\u0448\3\2\2\2\u0447\u0445\3\2\2\2\u0448"+ + "\u044c\5v<\2\u0449\u044b\5\u00e8u\2\u044a\u0449\3\2\2\2\u044b\u044e\3"+ + "\2\2\2\u044c\u044a\3\2\2\2\u044c\u044d\3\2\2\2\u044d\u044f\3\2\2\2\u044e"+ + "\u044c\3\2\2\2\u044f\u0450\7k\2\2\u0450\u0451\5r:\2\u0451\u0454\3\2\2"+ + "\2\u0452\u0454\5\u009cO\2\u0453\u0445\3\2\2\2\u0453\u0452\3\2\2\2\u0454"+ + "\u00a1\3\2\2\2\u0455\u0457\5\u00e8u\2\u0456\u0455\3\2\2\2\u0457\u045a"+ + "\3\2\2\2\u0458\u0456\3\2\2\2\u0458\u0459\3\2\2\2\u0459\u045b\3\2\2\2\u045a"+ + "\u0458\3\2\2\2\u045b\u045e\5v<\2\u045c\u045d\7i\2\2\u045d\u045f\7D\2\2"+ + "\u045e\u045c\3\2\2\2\u045e\u045f\3\2\2\2\u045f\u0460\3\2\2\2\u0460\u0461"+ + "\7.\2\2\u0461\u00a3\3\2\2\2\u0462\u0463\7\60\2\2\u0463\u0464\5\u00a6T"+ + "\2\u0464\u00a5\3\2\2\2\u0465\u046a\5\u00a8U\2\u0466\u0467\7C\2\2\u0467"+ + "\u0469\5\u00a8U\2\u0468\u0466\3\2\2\2\u0469\u046c\3\2\2\2\u046a\u0468"+ + "\3\2\2\2\u046a\u046b\3\2\2\2\u046b\u00a7\3\2\2\2\u046c\u046a\3\2\2\2\u046d"+ + "\u0470\5\22\n\2\u046e\u0470\5\36\20\2\u046f\u046d\3\2\2\2\u046f\u046e"+ + "\3\2\2\2\u0470\u00a9\3\2\2\2\u0471\u0474\5\u00fe\u0080\2\u0472\u0474\7"+ + "B\2\2\u0473\u0471\3\2\2\2\u0473\u0472\3\2\2\2\u0474\u00ab\3\2\2\2\u0475"+ + "\u0476\5\u00fe\u0080\2\u0476\u00ad\3\2\2\2\u0477\u0478\7)\2\2\u0478\u0479"+ + "\5\u00fe\u0080\2\u0479\u00af\3\2\2\2\u047a\u047c\5\u00b2Z\2\u047b\u047a"+ + "\3\2\2\2\u047c\u047f\3\2\2\2\u047d\u047b\3\2\2\2\u047d\u047e\3\2\2\2\u047e"+ + "\u0480\3\2\2\2\u047f\u047d\3\2\2\2\u0480\u0482\5\u00b4[\2\u0481\u0483"+ + "\5\u00a4S\2\u0482\u0481\3\2\2\2\u0482\u0483\3\2\2\2\u0483\u0484\3\2\2"+ + "\2\u0484\u0485\5\u00b8]\2\u0485\u00b1\3\2\2\2\u0486\u048b\5\u00e8u\2\u0487"+ + "\u048b\7&\2\2\u0488\u048b\7%\2\2\u0489\u048b\7$\2\2\u048a\u0486\3\2\2"+ + "\2\u048a\u0487\3\2\2\2\u048a\u0488\3\2\2\2\u048a\u0489\3\2\2\2\u048b\u00b3"+ + "\3\2\2\2\u048c\u048e\5Z.\2\u048d\u048c\3\2\2\2\u048d\u048e\3\2\2\2\u048e"+ + "\u048f\3\2\2\2\u048f\u0490\5\u00b6\\\2\u0490\u0492\7<\2\2\u0491\u0493"+ + "\5\u0098M\2\u0492\u0491\3\2\2\2\u0492\u0493\3\2\2\2\u0493\u0494\3\2\2"+ + "\2\u0494\u0495\7=\2\2\u0495\u00b5\3\2\2\2\u0496\u0497\7i\2\2\u0497\u00b7"+ + "\3\2\2\2\u0498\u049a\7>\2\2\u0499\u049b\5\u00ba^\2\u049a\u0499\3\2\2\2"+ + "\u049a\u049b\3\2\2\2\u049b\u049d\3\2\2\2\u049c\u049e\5\u0100\u0081\2\u049d"+ + "\u049c\3\2\2\2\u049d\u049e\3\2\2\2\u049e\u049f\3\2\2\2\u049f\u04a0\7?"+ + "\2\2\u04a0\u00b9\3\2\2\2\u04a1\u04a3\5,\27\2\u04a2\u04a1\3\2\2\2\u04a2"+ + "\u04a3\3\2\2\2\u04a3\u04a4\3\2\2\2\u04a4\u04a5\7.\2\2\u04a5\u04a7\7<\2"+ + "\2\u04a6\u04a8\5\u0192\u00ca\2\u04a7\u04a6\3\2\2\2\u04a7\u04a8\3\2\2\2"+ + "\u04a8\u04a9\3\2\2\2\u04a9\u04aa\7=\2\2\u04aa\u04d0\7B\2\2\u04ab\u04ad"+ + "\5,\27\2\u04ac\u04ab\3\2\2\2\u04ac\u04ad\3\2\2\2\u04ad\u04ae\3\2\2\2\u04ae"+ + "\u04af\7+\2\2\u04af\u04b1\7<\2\2\u04b0\u04b2\5\u0192\u00ca\2\u04b1\u04b0"+ + "\3\2\2\2\u04b1\u04b2\3\2\2\2\u04b2\u04b3\3\2\2\2\u04b3\u04b4\7=\2\2\u04b4"+ + "\u04d0\7B\2\2\u04b5\u04b6\5<\37\2\u04b6\u04b8\7D\2\2\u04b7\u04b9\5,\27"+ + "\2\u04b8\u04b7\3\2\2\2\u04b8\u04b9\3\2\2\2\u04b9\u04ba\3\2\2\2\u04ba\u04bb"+ + "\7+\2\2\u04bb\u04bd\7<\2\2\u04bc\u04be\5\u0192\u00ca\2\u04bd\u04bc\3\2"+ + "\2\2\u04bd\u04be\3\2\2\2\u04be\u04bf\3\2\2\2\u04bf\u04c0\7=\2\2\u04c0"+ + "\u04c1\7B\2\2\u04c1\u04d0\3\2\2\2\u04c2\u04c3\5\u0164\u00b3\2\u04c3\u04c5"+ + "\7D\2\2\u04c4\u04c6\5,\27\2\u04c5\u04c4\3\2\2\2\u04c5\u04c6\3\2\2\2\u04c6"+ + "\u04c7\3\2\2\2\u04c7\u04c8\7+\2\2\u04c8\u04ca\7<\2\2\u04c9\u04cb\5\u0192"+ + "\u00ca\2\u04ca\u04c9\3\2\2\2\u04ca\u04cb\3\2\2\2\u04cb\u04cc\3\2\2\2\u04cc"+ + "\u04cd\7=\2\2\u04cd\u04ce\7B\2\2\u04ce\u04d0\3\2\2\2\u04cf\u04a2\3\2\2"+ + "\2\u04cf\u04ac\3\2\2\2\u04cf\u04b5\3\2\2\2\u04cf\u04c2\3\2\2\2\u04d0\u00bb"+ + "\3\2\2\2\u04d1\u04d3\5X-\2\u04d2\u04d1\3\2\2\2\u04d3\u04d6\3\2\2\2\u04d4"+ + "\u04d2\3\2\2\2\u04d4\u04d5\3\2\2\2\u04d5\u04d7\3\2\2\2\u04d6\u04d4\3\2"+ + "\2\2\u04d7\u04d8\7\23\2\2\u04d8\u04da\7i\2\2\u04d9\u04db\5`\61\2\u04da"+ + "\u04d9\3\2\2\2\u04da\u04db\3\2\2\2\u04db\u04dc\3\2\2\2\u04dc\u04dd\5\u00be"+ + "`\2\u04dd\u00bd\3\2\2\2\u04de\u04e0\7>\2\2\u04df\u04e1\5\u00c0a\2\u04e0"+ + "\u04df\3\2\2\2\u04e0\u04e1\3\2\2\2\u04e1\u04e3\3\2\2\2\u04e2\u04e4\7C"+ + "\2\2\u04e3\u04e2\3\2\2\2\u04e3\u04e4\3\2\2\2\u04e4\u04e6\3\2\2\2\u04e5"+ + "\u04e7\5\u00c6d\2\u04e6\u04e5\3\2\2\2\u04e6\u04e7\3\2\2\2\u04e7\u04e8"+ + "\3\2\2\2\u04e8\u04e9\7?\2\2\u04e9\u00bf\3\2\2\2\u04ea\u04ef\5\u00c2b\2"+ + "\u04eb\u04ec\7C\2\2\u04ec\u04ee\5\u00c2b\2\u04ed\u04eb\3\2\2\2\u04ee\u04f1"+ + "\3\2\2\2\u04ef\u04ed\3\2\2\2\u04ef\u04f0\3\2\2\2\u04f0\u00c1\3\2\2\2\u04f1"+ + "\u04ef\3\2\2\2\u04f2\u04f4\5\u00c4c\2\u04f3\u04f2\3\2\2\2\u04f4\u04f7"+ + "\3\2\2\2\u04f5\u04f3\3\2\2\2\u04f5\u04f6\3\2\2\2\u04f6\u04f8\3\2\2\2\u04f7"+ + "\u04f5\3\2\2\2\u04f8\u04fe\7i\2\2\u04f9\u04fb\7<\2\2\u04fa\u04fc\5\u0192"+ + "\u00ca\2\u04fb\u04fa\3\2\2\2\u04fb\u04fc\3\2\2\2\u04fc\u04fd\3\2\2\2\u04fd"+ + "\u04ff\7=\2\2\u04fe\u04f9\3\2\2\2\u04fe\u04ff\3\2\2\2\u04ff\u0501\3\2"+ + "\2\2\u0500\u0502\5d\63\2\u0501\u0500\3\2\2\2\u0501\u0502\3\2\2\2\u0502"+ + "\u00c3\3\2\2\2\u0503\u0504\5\u00e8u\2\u0504\u00c5\3\2\2\2\u0505\u0509"+ + "\7B\2\2\u0506\u0508\5f\64\2\u0507\u0506\3\2\2\2\u0508\u050b\3\2\2\2\u0509"+ + "\u0507\3\2\2\2\u0509\u050a\3\2\2\2\u050a\u00c7\3\2\2\2\u050b\u0509\3\2"+ + "\2\2\u050c\u050f\5\u00caf\2\u050d\u050f\5\u00dco\2\u050e\u050c\3\2\2\2"+ + "\u050e\u050d\3\2\2\2\u050f\u00c9\3\2\2\2\u0510\u0512\5\u00ccg\2\u0511"+ + "\u0510\3\2\2\2\u0512\u0515\3\2\2\2\u0513\u0511\3\2\2\2\u0513\u0514\3\2"+ + "\2\2\u0514\u0516\3\2\2\2\u0515\u0513\3\2\2\2\u0516\u0517\7\37\2\2\u0517"+ + "\u0519\7i\2\2\u0518\u051a\5Z.\2\u0519\u0518\3\2\2\2\u0519\u051a\3\2\2"+ + "\2\u051a\u051c\3\2\2\2\u051b\u051d\5\u00ceh\2\u051c\u051b\3\2\2\2\u051c"+ + "\u051d\3\2\2\2\u051d\u051e\3\2\2\2\u051e\u051f\5\u00d0i\2\u051f\u00cb"+ + "\3\2\2\2\u0520\u0528\5\u00e8u\2\u0521\u0528\7&\2\2\u0522\u0528\7%\2\2"+ + "\u0523\u0528\7$\2\2\u0524\u0528\7\4\2\2\u0525\u0528\7)\2\2\u0526\u0528"+ + "\7*\2\2\u0527\u0520\3\2\2\2\u0527\u0521\3\2\2\2\u0527\u0522\3\2\2\2\u0527"+ + "\u0523\3\2\2\2\u0527\u0524\3\2\2\2\u0527\u0525\3\2\2\2\u0527\u0526\3\2"+ + "\2\2\u0528\u00cd\3\2\2\2\u0529\u052a\7\24\2\2\u052a\u052b\5b\62\2\u052b"+ + "\u00cf\3\2\2\2\u052c\u0530\7>\2\2\u052d\u052f\5\u00d2j\2\u052e\u052d\3"+ + "\2\2\2\u052f\u0532\3\2\2\2\u0530\u052e\3\2\2\2\u0530\u0531\3\2\2\2\u0531"+ + "\u0533\3\2\2\2\u0532\u0530\3\2\2\2\u0533\u0534\7?\2\2\u0534\u00d1\3\2"+ + "\2\2\u0535\u053b\5\u00d4k\2\u0536\u053b\5\u00d8m\2\u0537\u053b\5T+\2\u0538"+ + "\u053b\5\u00c8e\2\u0539\u053b\7B\2\2\u053a\u0535\3\2\2\2\u053a\u0536\3"+ + "\2\2\2\u053a\u0537\3\2\2\2\u053a\u0538\3\2\2\2\u053a\u0539\3\2\2\2\u053b"+ + "\u00d3\3\2\2\2\u053c\u053e\5\u00d6l\2\u053d\u053c\3\2\2\2\u053e\u0541"+ + "\3\2\2\2\u053f\u053d\3\2\2\2\u053f\u0540\3\2\2\2\u0540\u0542\3\2\2\2\u0541"+ + "\u053f\3\2\2\2\u0542\u0543\5v<\2\u0543\u0544\5n8\2\u0544\u0545\7B\2\2"+ + "\u0545\u00d5\3\2\2\2\u0546\u054b\5\u00e8u\2\u0547\u054b\7&\2\2\u0548\u054b"+ + "\7)\2\2\u0549\u054b\7\25\2\2\u054a\u0546\3\2\2\2\u054a\u0547\3\2\2\2\u054a"+ + "\u0548\3\2\2\2\u054a\u0549\3\2\2\2\u054b\u00d7\3\2\2\2\u054c\u054e\5\u00da"+ + "n\2\u054d\u054c\3\2\2\2\u054e\u0551\3\2\2\2\u054f\u054d\3\2\2\2\u054f"+ + "\u0550\3\2\2\2\u0550\u0552\3\2\2\2\u0551\u054f\3\2\2\2\u0552\u0553\5\u0092"+ + "J\2\u0553\u0554\5\u00aaV\2\u0554\u00d9\3\2\2\2\u0555\u055c\5\u00e8u\2"+ + "\u0556\u055c\7&\2\2\u0557\u055c\7\4\2\2\u0558\u055c\7\17\2\2\u0559\u055c"+ + "\7)\2\2\u055a\u055c\7*\2\2\u055b\u0555\3\2\2\2\u055b\u0556\3\2\2\2\u055b"+ + "\u0557\3\2\2\2\u055b\u0558\3\2\2\2\u055b\u0559\3\2\2\2\u055b\u055a\3\2"+ + "\2\2\u055c\u00db\3\2\2\2\u055d\u055f\5\u00ccg\2\u055e\u055d\3\2\2\2\u055f"+ + "\u0562\3\2\2\2\u0560\u055e\3\2\2\2\u0560\u0561\3\2\2\2\u0561\u0563\3\2"+ + "\2\2\u0562\u0560\3\2\2\2\u0563\u0564\7j\2\2\u0564\u0565\7\37\2\2\u0565"+ + "\u0566\7i\2\2\u0566\u0567\5\u00dep\2\u0567\u00dd\3\2\2\2\u0568\u056c\7"+ + ">\2\2\u0569\u056b\5\u00e0q\2\u056a\u0569\3\2\2\2\u056b\u056e\3\2\2\2\u056c"+ + "\u056a\3\2\2\2\u056c\u056d\3\2\2\2\u056d\u056f\3\2\2\2\u056e\u056c\3\2"+ + "\2\2\u056f\u0570\7?\2\2\u0570\u00df\3\2\2\2\u0571\u0577\5\u00e2r\2\u0572"+ + "\u0577\5\u00d4k\2\u0573\u0577\5T+\2\u0574\u0577\5\u00c8e\2\u0575\u0577"+ + "\7B\2\2\u0576\u0571\3\2\2\2\u0576\u0572\3\2\2\2\u0576\u0573\3\2\2\2\u0576"+ + "\u0574\3\2\2\2\u0576\u0575\3\2\2\2\u0577\u00e1\3\2\2\2\u0578\u057a\5\u00e4"+ + "s\2\u0579\u0578\3\2\2\2\u057a\u057d\3\2\2\2\u057b\u0579\3\2\2\2\u057b"+ + "\u057c\3\2\2\2\u057c\u057e\3\2\2\2\u057d\u057b\3\2\2\2\u057e\u057f\5v"+ + "<\2\u057f\u0580\7i\2\2\u0580\u0581\7<\2\2\u0581\u0583\7=\2\2\u0582\u0584"+ + "\5\"\22\2\u0583\u0582\3\2\2\2\u0583\u0584\3\2\2\2\u0584\u0586\3\2\2\2"+ + "\u0585\u0587\5\u00e6t\2\u0586\u0585\3\2\2\2\u0586\u0587\3\2\2\2\u0587"+ + "\u0588\3\2\2\2\u0588\u0589\7B\2\2\u0589\u00e3\3\2\2\2\u058a\u058e\5\u00e8"+ + "u\2\u058b\u058e\7&\2\2\u058c\u058e\7\4\2\2\u058d\u058a\3\2\2\2\u058d\u058b"+ + "\3\2\2\2\u058d\u058c\3\2\2\2\u058e\u00e5\3\2\2\2\u058f\u0590\7\17\2\2"+ + "\u0590\u0591\5\u00f0y\2\u0591\u00e7\3\2\2\2\u0592\u0596\5\u00eav\2\u0593"+ + "\u0596\5\u00f6|\2\u0594\u0596\5\u00f8}\2\u0595\u0592\3\2\2\2\u0595\u0593"+ + "\3\2\2\2\u0595\u0594\3\2\2\2\u0596\u00e9\3\2\2\2\u0597\u0598\7j\2\2\u0598"+ + "\u0599\58\35\2\u0599\u059b\7<\2\2\u059a\u059c\5\u00ecw\2\u059b\u059a\3"+ + "\2\2\2\u059b\u059c\3\2\2\2\u059c\u059d\3\2\2\2\u059d\u059e\7=\2\2\u059e"+ + "\u00eb\3\2\2\2\u059f\u05a4\5\u00eex\2\u05a0\u05a1\7C\2\2\u05a1\u05a3\5"+ + "\u00eex\2\u05a2\u05a0\3\2\2\2\u05a3\u05a6\3\2\2\2\u05a4\u05a2\3\2\2\2"+ + "\u05a4\u05a5\3\2\2\2\u05a5\u00ed\3\2\2\2\u05a6\u05a4\3\2\2\2\u05a7\u05a8"+ + "\7i\2\2\u05a8\u05a9\7E\2\2\u05a9\u05aa\5\u00f0y\2\u05aa\u00ef\3\2\2\2"+ + "\u05ab\u05af\5\u01b4\u00db\2\u05ac\u05af\5\u00f2z\2\u05ad\u05af\5\u00e8"+ + "u\2\u05ae\u05ab\3\2\2\2\u05ae\u05ac\3\2\2\2\u05ae\u05ad\3\2\2\2\u05af"+ + "\u00f1\3\2\2\2\u05b0\u05b2\7>\2\2\u05b1\u05b3\5\u00f4{\2\u05b2\u05b1\3"+ + "\2\2\2\u05b2\u05b3\3\2\2\2\u05b3\u05b5\3\2\2\2\u05b4\u05b6\7C\2\2\u05b5"+ + "\u05b4\3\2\2\2\u05b5\u05b6\3\2\2\2\u05b6\u05b7\3\2\2\2\u05b7\u05b8\7?"+ + "\2\2\u05b8\u00f3\3\2\2\2\u05b9\u05be\5\u00f0y\2\u05ba\u05bb\7C\2\2\u05bb"+ + "\u05bd\5\u00f0y\2\u05bc\u05ba\3\2\2\2\u05bd\u05c0\3\2\2\2\u05be\u05bc"+ + "\3\2\2\2\u05be\u05bf\3\2\2\2\u05bf\u00f5\3\2\2\2\u05c0\u05be\3\2\2\2\u05c1"+ + "\u05c2\7j\2\2\u05c2\u05c3\58\35\2\u05c3\u00f7\3\2\2\2\u05c4\u05c5\7j\2"+ + "\2\u05c5\u05c6\58\35\2\u05c6\u05c7\7<\2\2\u05c7\u05c8\5\u00f0y\2\u05c8"+ + "\u05c9\7=\2\2\u05c9\u00f9\3\2\2\2\u05ca\u05cc\7>\2\2\u05cb\u05cd\5\u00fc"+ + "\177\2\u05cc\u05cb\3\2\2\2\u05cc\u05cd\3\2\2\2\u05cd\u05cf\3\2\2\2\u05ce"+ + "\u05d0\7C\2\2\u05cf\u05ce\3\2\2\2\u05cf\u05d0\3\2\2\2\u05d0\u05d1\3\2"+ + "\2\2\u05d1\u05d2\7?\2\2\u05d2\u00fb\3\2\2\2\u05d3\u05d8\5t;\2\u05d4\u05d5"+ + "\7C\2\2\u05d5\u05d7\5t;\2\u05d6\u05d4\3\2\2\2\u05d7\u05da\3\2\2\2\u05d8"+ + "\u05d6\3\2\2\2\u05d8\u05d9\3\2\2\2\u05d9\u00fd\3\2\2\2\u05da\u05d8\3\2"+ + "\2\2\u05db\u05dd\7>\2\2\u05dc\u05de\5\u0100\u0081\2\u05dd\u05dc\3\2\2"+ + "\2\u05dd\u05de\3\2\2\2\u05de\u05df\3\2\2\2\u05df\u05e0\7?\2\2\u05e0\u00ff"+ + "\3\2\2\2\u05e1\u05e5\5\u0102\u0082\2\u05e2\u05e4\5\u0102\u0082\2\u05e3"+ + "\u05e2\3\2\2\2\u05e4\u05e7\3\2\2\2\u05e5\u05e3\3\2\2\2\u05e5\u05e6\3\2"+ + "\2\2\u05e6\u0101\3\2\2\2\u05e7\u05e5\3\2\2\2\u05e8\u05ec\5\u0104\u0083"+ + "\2\u05e9\u05ec\5T+\2\u05ea\u05ec\5\u010a\u0086\2\u05eb\u05e8\3\2\2\2\u05eb"+ + "\u05e9\3\2\2\2\u05eb\u05ea\3\2\2\2\u05ec\u0103\3\2\2\2\u05ed\u05ee\5\u0108"+ + "\u0085\2\u05ee\u05ef\7B\2\2\u05ef\u0105\3\2\2\2\u05f0\u05f3\5v<\2\u05f1"+ + "\u05f3\7\3\2\2\u05f2\u05f0\3\2\2\2\u05f2\u05f1\3\2\2\2\u05f3\u0107\3\2"+ + "\2\2\u05f4\u05f6\5\u009eP\2\u05f5\u05f4\3\2\2\2\u05f6\u05f9\3\2\2\2\u05f7"+ + "\u05f5\3\2\2\2\u05f7\u05f8\3\2\2\2\u05f8\u05fa\3\2\2\2\u05f9\u05f7\3\2"+ + "\2\2\u05fa\u05fb\5\u0106\u0084\2\u05fb\u05fc\5n8\2\u05fc\u0109\3\2\2\2"+ + "\u05fd\u0604\5\u010e\u0088\2\u05fe\u0604\5\u0112\u008a\2\u05ff\u0604\5"+ + "\u011a\u008e\2\u0600\u0604\5\u011c\u008f\2\u0601\u0604\5\u012e\u0098\2"+ + "\u0602\u0604\5\u0134\u009b\2\u0603\u05fd\3\2\2\2\u0603\u05fe\3\2\2\2\u0603"+ + "\u05ff\3\2\2\2\u0603\u0600\3\2\2\2\u0603\u0601\3\2\2\2\u0603\u0602\3\2"+ + "\2\2\u0604\u010b\3\2\2\2\u0605\u060b\5\u010e\u0088\2\u0606\u060b\5\u0114"+ + "\u008b\2\u0607\u060b\5\u011e\u0090\2\u0608\u060b\5\u0130\u0099\2\u0609"+ + "\u060b\5\u0136\u009c\2\u060a\u0605\3\2\2\2\u060a\u0606\3\2\2\2\u060a\u0607"+ + "\3\2\2\2\u060a\u0608\3\2\2\2\u060a\u0609\3\2\2\2\u060b\u010d\3\2\2\2\u060c"+ + "\u0619\5\u00fe\u0080\2\u060d\u0619\5\u0110\u0089\2\u060e\u0619\5\u0116"+ + "\u008c\2\u060f\u0619\5\u0120\u0091\2\u0610\u0619\5\u0122\u0092\2\u0611"+ + "\u0619\5\u0132\u009a\2\u0612\u0619\5\u0146\u00a4\2\u0613\u0619\5\u0148"+ + "\u00a5\2\u0614\u0619\5\u014a\u00a6\2\u0615\u0619\5\u014e\u00a8\2\u0616"+ + "\u0619\5\u014c\u00a7\2\u0617\u0619\5\u0150\u00a9\2\u0618\u060c\3\2\2\2"+ + "\u0618\u060d\3\2\2\2\u0618\u060e\3\2\2\2\u0618\u060f\3\2\2\2\u0618\u0610"+ + "\3\2\2\2\u0618\u0611\3\2\2\2\u0618\u0612\3\2\2\2\u0618\u0613\3\2\2\2\u0618"+ + "\u0614\3\2\2\2\u0618\u0615\3\2\2\2\u0618\u0616\3\2\2\2\u0618\u0617\3\2"+ + "\2\2\u0619\u010f\3\2\2\2\u061a\u061b\7B\2\2\u061b\u0111\3\2\2\2\u061c"+ + "\u061d\7i\2\2\u061d\u061e\7K\2\2\u061e\u061f\5\u010a\u0086\2\u061f\u0113"+ + "\3\2\2\2\u0620\u0621\7i\2\2\u0621\u0622\7K\2\2\u0622\u0623\5\u010c\u0087"+ + "\2\u0623\u0115\3\2\2\2\u0624\u0625\5\u0118\u008d\2\u0625\u0626\7B\2\2"+ + "\u0626\u0117\3\2\2\2\u0627\u062f\5\u01ae\u00d8\2\u0628\u062f\5\u01cc\u00e7"+ + "\2\u0629\u062f\5\u01ce\u00e8\2\u062a\u062f\5\u01d4\u00eb\2\u062b\u062f"+ + "\5\u01d8\u00ed\2\u062c\u062f\5\u018c\u00c7\2\u062d\u062f\5\u0178\u00bd"+ + "\2\u062e\u0627\3\2\2\2\u062e\u0628\3\2\2\2\u062e\u0629\3\2\2\2\u062e\u062a"+ + "\3\2\2\2\u062e\u062b\3\2\2\2\u062e\u062c\3\2\2\2\u062e\u062d\3\2\2\2\u062f"+ + "\u0119\3\2\2\2\u0630\u0631\7\31\2\2\u0631\u0632\7<\2\2\u0632\u0633\5\u01a2"+ + "\u00d2\2\u0633\u0634\7=\2\2\u0634\u0635\5\u010a\u0086\2\u0635\u011b\3"+ + "\2\2\2\u0636\u0637\7\31\2\2\u0637\u0638\7<\2\2\u0638\u0639\5\u01a2\u00d2"+ + "\2\u0639\u063a\7=\2\2\u063a\u063b\5\u010c\u0087\2\u063b\u063c\7\22\2\2"+ + "\u063c\u063d\5\u010a\u0086\2\u063d\u011d\3\2\2\2\u063e\u063f\7\31\2\2"+ + "\u063f\u0640\7<\2\2\u0640\u0641\5\u01a2\u00d2\2\u0641\u0642\7=\2\2\u0642"+ + "\u0643\5\u010c\u0087\2\u0643\u0644\7\22\2\2\u0644\u0645\5\u010c\u0087"+ + "\2\u0645\u011f\3\2\2\2\u0646\u0647\7\5\2\2\u0647\u0648\5\u01a2\u00d2\2"+ + "\u0648\u0649\7B\2\2\u0649\u0651\3\2\2\2\u064a\u064b\7\5\2\2\u064b\u064c"+ + "\5\u01a2\u00d2\2\u064c\u064d\7K\2\2\u064d\u064e\5\u01a2\u00d2\2\u064e"+ + "\u064f\7B\2\2\u064f\u0651\3\2\2\2\u0650\u0646\3\2\2\2\u0650\u064a\3\2"+ + "\2\2\u0651\u0121\3\2\2\2\u0652\u0653\7,\2\2\u0653\u0654\7<\2\2\u0654\u0655"+ + "\5\u01a2\u00d2\2\u0655\u0656\7=\2\2\u0656\u0657\5\u0124\u0093\2\u0657"+ + "\u0123\3\2\2\2\u0658\u065c\7>\2\2\u0659\u065b\5\u0126\u0094\2\u065a\u0659"+ + "\3\2\2\2\u065b\u065e\3\2\2\2\u065c\u065a\3\2\2\2\u065c\u065d\3\2\2\2\u065d"+ + "\u0662\3\2\2\2\u065e\u065c\3\2\2\2\u065f\u0661\5\u012a\u0096\2\u0660\u065f"+ + "\3\2\2\2\u0661\u0664\3\2\2\2\u0662\u0660\3\2\2\2\u0662\u0663\3\2\2\2\u0663"+ + "\u0665\3\2\2\2\u0664\u0662\3\2\2\2\u0665\u0666\7?\2\2\u0666\u0125\3\2"+ + "\2\2\u0667\u0668\5\u0128\u0095\2\u0668\u0669\5\u0100\u0081\2\u0669\u0127"+ + "\3\2\2\2\u066a\u066e\5\u012a\u0096\2\u066b\u066d\5\u012a\u0096\2\u066c"+ + "\u066b\3\2\2\2\u066d\u0670\3\2\2\2\u066e\u066c\3\2\2\2\u066e\u066f\3\2"+ + "\2\2\u066f\u0129\3\2\2\2\u0670\u066e\3\2\2\2\u0671\u0672\7\t\2\2\u0672"+ + "\u0673\5\u01a0\u00d1\2\u0673\u0674\7K\2\2\u0674\u067c\3\2\2\2\u0675\u0676"+ + "\7\t\2\2\u0676\u0677\5\u012c\u0097\2\u0677\u0678\7K\2\2\u0678\u067c\3"+ + "\2\2\2\u0679\u067a\7\17\2\2\u067a\u067c\7K\2\2\u067b\u0671\3\2\2\2\u067b"+ + "\u0675\3\2\2\2\u067b\u0679\3\2\2\2\u067c\u012b\3\2\2\2\u067d\u067e\7i"+ + "\2\2\u067e\u012d\3\2\2\2\u067f\u0680\7\65\2\2\u0680\u0681\7<\2\2\u0681"+ + "\u0682\5\u01a2\u00d2\2\u0682\u0683\7=\2\2\u0683\u0684\5\u010a\u0086\2"+ + "\u0684\u012f\3\2\2\2\u0685\u0686\7\65\2\2\u0686\u0687\7<\2\2\u0687\u0688"+ + "\5\u01a2\u00d2\2\u0688\u0689\7=\2\2\u0689\u068a\5\u010c\u0087\2\u068a"+ + "\u0131\3\2\2\2\u068b\u068c\7\20\2\2\u068c\u068d\5\u010a\u0086\2\u068d"+ + "\u068e\7\65\2\2\u068e\u068f\7<\2\2\u068f\u0690\5\u01a2\u00d2\2\u0690\u0691"+ + "\7=\2\2\u0691\u0692\7B\2\2\u0692\u0133\3\2\2\2\u0693\u0696\5\u0138\u009d"+ + "\2\u0694\u0696\5\u0142\u00a2\2\u0695\u0693\3\2\2\2\u0695\u0694\3\2\2\2"+ + "\u0696\u0135\3\2\2\2\u0697\u069a\5\u013a\u009e\2\u0698\u069a\5\u0144\u00a3"+ + "\2\u0699\u0697\3\2\2\2\u0699\u0698\3\2\2\2\u069a\u0137\3\2\2\2\u069b\u069c"+ + "\7\30\2\2\u069c\u069e\7<\2\2\u069d\u069f\5\u013c\u009f\2\u069e\u069d\3"+ + "\2\2\2\u069e\u069f\3\2\2\2\u069f\u06a0\3\2\2\2\u06a0\u06a2\7B\2\2\u06a1"+ + "\u06a3\5\u01a2\u00d2\2\u06a2\u06a1\3\2\2\2\u06a2\u06a3\3\2\2\2\u06a3\u06a4"+ + "\3\2\2\2\u06a4\u06a6\7B\2\2\u06a5\u06a7\5\u013e\u00a0\2\u06a6\u06a5\3"+ + "\2\2\2\u06a6\u06a7\3\2\2\2\u06a7\u06a8\3\2\2\2\u06a8\u06a9\7=\2\2\u06a9"+ + "\u06aa\5\u010a\u0086\2\u06aa\u0139\3\2\2\2\u06ab\u06ac\7\30\2\2\u06ac"+ + "\u06ae\7<\2\2\u06ad\u06af\5\u013c\u009f\2\u06ae\u06ad\3\2\2\2\u06ae\u06af"+ + "\3\2\2\2\u06af\u06b0\3\2\2\2\u06b0\u06b2\7B\2\2\u06b1\u06b3\5\u01a2\u00d2"+ + "\2\u06b2\u06b1\3\2\2\2\u06b2\u06b3\3\2\2\2\u06b3\u06b4\3\2\2\2\u06b4\u06b6"+ + "\7B\2\2\u06b5\u06b7\5\u013e\u00a0\2\u06b6\u06b5\3\2\2\2\u06b6\u06b7\3"+ + "\2\2\2\u06b7\u06b8\3\2\2\2\u06b8\u06b9\7=\2\2\u06b9\u06ba\5\u010c\u0087"+ + "\2\u06ba\u013b\3\2\2\2\u06bb\u06be\5\u0140\u00a1\2\u06bc\u06be\5\u0108"+ + "\u0085\2\u06bd\u06bb\3\2\2\2\u06bd\u06bc\3\2\2\2\u06be\u013d\3\2\2\2\u06bf"+ + "\u06c0\5\u0140\u00a1\2\u06c0\u013f\3\2\2\2\u06c1\u06c6\5\u0118\u008d\2"+ + "\u06c2\u06c3\7C\2\2\u06c3\u06c5\5\u0118\u008d\2\u06c4\u06c2\3\2\2\2\u06c5"+ + "\u06c8\3\2\2\2\u06c6\u06c4\3\2\2\2\u06c6\u06c7\3\2\2\2\u06c7\u0141\3\2"+ + "\2\2\u06c8\u06c6\3\2\2\2\u06c9\u06ca\7\30\2\2\u06ca\u06ce\7<\2\2\u06cb"+ + "\u06cd\5\u009eP\2\u06cc\u06cb\3\2\2\2\u06cd\u06d0\3\2\2\2\u06ce\u06cc"+ + "\3\2\2\2\u06ce\u06cf\3\2\2\2\u06cf\u06d1\3\2\2\2\u06d0\u06ce\3\2\2\2\u06d1"+ + "\u06d2\5v<\2\u06d2\u06d3\5r:\2\u06d3\u06d4\7K\2\2\u06d4\u06d5\5\u01a2"+ + "\u00d2\2\u06d5\u06d6\7=\2\2\u06d6\u06d7\5\u010a\u0086\2\u06d7\u0143\3"+ + "\2\2\2\u06d8\u06d9\7\30\2\2\u06d9\u06dd\7<\2\2\u06da\u06dc\5\u009eP\2"+ + "\u06db\u06da\3\2\2\2\u06dc\u06df\3\2\2\2\u06dd\u06db\3\2\2\2\u06dd\u06de"+ + "\3\2\2\2\u06de\u06e0\3\2\2\2\u06df\u06dd\3\2\2\2\u06e0\u06e1\5v<\2\u06e1"+ + "\u06e2\5r:\2\u06e2\u06e3\7K\2\2\u06e3\u06e4\5\u01a2\u00d2\2\u06e4\u06e5"+ + "\7=\2\2\u06e5\u06e6\5\u010c\u0087\2\u06e6\u0145\3\2\2\2\u06e7\u06e9\7"+ + "\7\2\2\u06e8\u06ea\7i\2\2\u06e9\u06e8\3\2\2\2\u06e9\u06ea\3\2\2\2\u06ea"+ + "\u06eb\3\2\2\2\u06eb\u06ec\7B\2\2\u06ec\u0147\3\2\2\2\u06ed\u06ef\7\16"+ + "\2\2\u06ee\u06f0\7i\2\2\u06ef\u06ee\3\2\2\2\u06ef\u06f0\3\2\2\2\u06f0"+ + "\u06f1\3\2\2\2\u06f1\u06f2\7B\2\2\u06f2\u0149\3\2\2\2\u06f3\u06f5\7\'"+ + "\2\2\u06f4\u06f6\5\u01a2\u00d2\2\u06f5\u06f4\3\2\2\2\u06f5\u06f6\3\2\2"+ + "\2\u06f6\u06f7\3\2\2\2\u06f7\u06f8\7B\2\2\u06f8\u014b\3\2\2\2\u06f9\u06fa"+ + "\7/\2\2\u06fa\u06fb\5\u01a2\u00d2\2\u06fb\u06fc\7B\2\2\u06fc\u014d\3\2"+ + "\2\2\u06fd\u06fe\7-\2\2\u06fe\u06ff\7<\2\2\u06ff\u0700\5\u01a2\u00d2\2"+ + "\u0700\u0701\7=\2\2\u0701\u0702\5\u00fe\u0080\2\u0702\u014f\3\2\2\2\u0703"+ + "\u0704\7\62\2\2\u0704\u0705\5\u00fe\u0080\2\u0705\u0706\5\u0152\u00aa"+ + "\2\u0706\u0710\3\2\2\2\u0707\u0708\7\62\2\2\u0708\u070a\5\u00fe\u0080"+ + "\2\u0709\u070b\5\u0152\u00aa\2\u070a\u0709\3\2\2\2\u070a\u070b\3\2\2\2"+ + "\u070b\u070c\3\2\2\2\u070c\u070d\5\u015a\u00ae\2\u070d\u0710\3\2\2\2\u070e"+ + "\u0710\5\u015c\u00af\2\u070f\u0703\3\2\2\2\u070f\u0707\3\2\2\2\u070f\u070e"+ + "\3\2\2\2\u0710\u0151\3\2\2\2\u0711\u0715\5\u0154\u00ab\2\u0712\u0714\5"+ + "\u0154\u00ab\2\u0713\u0712\3\2\2\2\u0714\u0717\3\2\2\2\u0715\u0713\3\2"+ + "\2\2\u0715\u0716\3\2\2\2\u0716\u0153\3\2\2\2\u0717\u0715\3\2\2\2\u0718"+ + "\u0719\7\n\2\2\u0719\u071a\7<\2\2\u071a\u071b\5\u0156\u00ac\2\u071b\u071c"+ + "\7=\2\2\u071c\u071d\5\u00fe\u0080\2\u071d\u0155\3\2\2\2\u071e\u0720\5"+ + "\u009eP\2\u071f\u071e\3\2\2\2\u0720\u0723\3\2\2\2\u0721\u071f\3\2\2\2"+ + "\u0721\u0722\3\2\2\2\u0722\u0724\3\2\2\2\u0723\u0721\3\2\2\2\u0724\u0725"+ + "\5\u0158\u00ad\2\u0725\u0726\5r:\2\u0726\u0157\3\2\2\2\u0727\u072c\5~"+ + "@\2\u0728\u0729\7Y\2\2\u0729\u072b\5\22\n\2\u072a\u0728\3\2\2\2\u072b"+ + "\u072e\3\2\2\2\u072c\u072a\3\2\2\2\u072c\u072d\3\2\2\2\u072d\u0159\3\2"+ + "\2\2\u072e\u072c\3\2\2\2\u072f\u0730\7\26\2\2\u0730\u0731\5\u00fe\u0080"+ + "\2\u0731\u015b\3\2\2\2\u0732\u0733\7\62\2\2\u0733\u0734\5\u015e\u00b0"+ + "\2\u0734\u0736\5\u00fe\u0080\2\u0735\u0737\5\u0152\u00aa\2\u0736\u0735"+ + "\3\2\2\2\u0736\u0737\3\2\2\2\u0737\u0739\3\2\2\2\u0738\u073a\5\u015a\u00ae"+ + "\2\u0739\u0738\3\2\2\2\u0739\u073a\3\2\2\2\u073a\u015d\3\2\2\2\u073b\u073c"+ + "\7<\2\2\u073c\u073e\5\u0160\u00b1\2\u073d\u073f\7B\2\2\u073e\u073d\3\2"+ + "\2\2\u073e\u073f\3\2\2\2\u073f\u0740\3\2\2\2\u0740\u0741\7=\2\2\u0741"+ + "\u015f\3\2\2\2\u0742\u0747\5\u0162\u00b2\2\u0743\u0744\7B\2\2\u0744\u0746"+ + "\5\u0162\u00b2\2\u0745\u0743\3\2\2\2\u0746\u0749\3\2\2\2\u0747\u0745\3"+ + "\2\2\2\u0747\u0748\3\2\2\2\u0748\u0161\3\2\2\2\u0749\u0747\3\2\2\2\u074a"+ + "\u074c\5\u009eP\2\u074b\u074a\3\2\2\2\u074c\u074f\3\2\2\2\u074d\u074b"+ + "\3\2\2\2\u074d\u074e\3\2\2\2\u074e\u0750\3\2\2\2\u074f\u074d\3\2\2\2\u0750"+ + "\u0751\5v<\2\u0751\u0752\5r:\2\u0752\u0753\7E\2\2\u0753\u0754\5\u01a2"+ + "\u00d2\2\u0754\u0163\3\2\2\2\u0755\u0758\5\u0172\u00ba\2\u0756\u0758\5"+ + "\u019a\u00ce\2\u0757\u0755\3\2\2\2\u0757\u0756\3\2\2\2\u0758\u075c\3\2"+ + "\2\2\u0759\u075b\5\u016c\u00b7\2\u075a\u0759\3\2\2\2\u075b\u075e\3\2\2"+ + "\2\u075c\u075a\3\2\2\2\u075c\u075d\3\2\2\2\u075d\u0165\3\2\2\2\u075e\u075c"+ + "\3\2\2\2\u075f\u077d\5\2\2\2\u0760\u0765\58\35\2\u0761\u0762\7@\2\2\u0762"+ + "\u0764\7A\2\2\u0763\u0761\3\2\2\2\u0764\u0767\3\2\2\2\u0765\u0763\3\2"+ + "\2\2\u0765\u0766\3\2\2\2\u0766\u0768\3\2\2\2\u0767\u0765\3\2\2\2\u0768"+ + "\u0769\7D\2\2\u0769\u076a\7\f\2\2\u076a\u077d\3\2\2\2\u076b\u076c\7\63"+ + "\2\2\u076c\u076d\7D\2\2\u076d\u077d\7\f\2\2\u076e\u077d\7.\2\2\u076f\u0770"+ + "\58\35\2\u0770\u0771\7D\2\2\u0771\u0772\7.\2\2\u0772\u077d\3\2\2\2\u0773"+ + "\u0774\7<\2\2\u0774\u0775\5\u01a2\u00d2\2\u0775\u0776\7=\2\2\u0776\u077d"+ + "\3\2\2\2\u0777\u077d\5\u0178\u00bd\2\u0778\u077d\5\u0180\u00c1\2\u0779"+ + "\u077d\5\u0186\u00c4\2\u077a\u077d\5\u018c\u00c7\2\u077b\u077d\5\u0194"+ + "\u00cb\2\u077c\u075f\3\2\2\2\u077c\u0760\3\2\2\2\u077c\u076b\3\2\2\2\u077c"+ + "\u076e\3\2\2\2\u077c\u076f\3\2\2\2\u077c\u0773\3\2\2\2\u077c\u0777\3\2"+ + "\2\2\u077c\u0778\3\2\2\2\u077c\u0779\3\2\2\2\u077c\u077a\3\2\2\2\u077c"+ + "\u077b\3\2\2\2\u077d\u0167\3\2\2\2\u077e\u077f\3\2\2\2\u077f\u0169\3\2"+ + "\2\2\u0780\u079d\5\2\2\2\u0781\u0786\58\35\2\u0782\u0783\7@\2\2\u0783"+ + "\u0785\7A\2\2\u0784\u0782\3\2\2\2\u0785\u0788\3\2\2\2\u0786\u0784\3\2"+ + "\2\2\u0786\u0787\3\2\2\2\u0787\u0789\3\2\2\2\u0788\u0786\3\2\2\2\u0789"+ + "\u078a\7D\2\2\u078a\u078b\7\f\2\2\u078b\u079d\3\2\2\2\u078c\u078d\7\63"+ + "\2\2\u078d\u078e\7D\2\2\u078e\u079d\7\f\2\2\u078f\u079d\7.\2\2\u0790\u0791"+ + "\58\35\2\u0791\u0792\7D\2\2\u0792\u0793\7.\2\2\u0793\u079d\3\2\2\2\u0794"+ + "\u0795\7<\2\2\u0795\u0796\5\u01a2\u00d2\2\u0796\u0797\7=\2\2\u0797\u079d"+ + "\3\2\2\2\u0798\u079d\5\u0178\u00bd\2\u0799\u079d\5\u0180\u00c1\2\u079a"+ + "\u079d\5\u018c\u00c7\2\u079b\u079d\5\u0194\u00cb\2\u079c\u0780\3\2\2\2"+ + "\u079c\u0781\3\2\2\2\u079c\u078c\3\2\2\2\u079c\u078f\3\2\2\2\u079c\u0790"+ + "\3\2\2\2\u079c\u0794\3\2\2\2\u079c\u0798\3\2\2\2\u079c\u0799\3\2\2\2\u079c"+ + "\u079a\3\2\2\2\u079c\u079b\3\2\2\2\u079d\u016b\3\2\2\2\u079e\u07a4\5\u017a"+ + "\u00be\2\u079f\u07a4\5\u0182\u00c2\2\u07a0\u07a4\5\u0188\u00c5\2\u07a1"+ + "\u07a4\5\u018e\u00c8\2\u07a2\u07a4\5\u0196\u00cc\2\u07a3\u079e\3\2\2\2"+ + "\u07a3\u079f\3\2\2\2\u07a3\u07a0\3\2\2\2\u07a3\u07a1\3\2\2\2\u07a3\u07a2"+ + "\3\2\2\2\u07a4\u016d\3\2\2\2\u07a5\u07a6\3\2\2\2\u07a6\u016f\3\2\2\2\u07a7"+ + "\u07ac\5\u017a\u00be\2\u07a8\u07ac\5\u0182\u00c2\2\u07a9\u07ac\5\u018e"+ + "\u00c8\2\u07aa\u07ac\5\u0196\u00cc\2\u07ab\u07a7\3\2\2\2\u07ab\u07a8\3"+ + "\2\2\2\u07ab\u07a9\3\2\2\2\u07ab\u07aa\3\2\2\2\u07ac\u0171\3\2\2\2\u07ad"+ + "\u07d6\5\2\2\2\u07ae\u07b3\58\35\2\u07af\u07b0\7@\2\2\u07b0\u07b2\7A\2"+ + "\2\u07b1\u07af\3\2\2\2\u07b2\u07b5\3\2\2\2\u07b3\u07b1\3\2\2\2\u07b3\u07b4"+ + "\3\2\2\2\u07b4\u07b6\3\2\2\2\u07b5\u07b3\3\2\2\2\u07b6\u07b7\7D\2\2\u07b7"+ + "\u07b8\7\f\2\2\u07b8\u07d6\3\2\2\2\u07b9\u07be\5x=\2\u07ba\u07bb\7@\2"+ + "\2\u07bb\u07bd\7A\2\2\u07bc\u07ba\3\2\2\2\u07bd\u07c0\3\2\2\2\u07be\u07bc"+ + "\3\2\2\2\u07be\u07bf\3\2\2\2\u07bf\u07c1\3\2\2\2\u07c0\u07be\3\2\2\2\u07c1"+ + "\u07c2\7D\2\2\u07c2\u07c3\7\f\2\2\u07c3\u07d6\3\2\2\2\u07c4\u07c5\7\63"+ + "\2\2\u07c5\u07c6\7D\2\2\u07c6\u07d6\7\f\2\2\u07c7\u07d6\7.\2\2\u07c8\u07c9"+ + "\58\35\2\u07c9\u07ca\7D\2\2\u07ca\u07cb\7.\2\2\u07cb\u07d6\3\2\2\2\u07cc"+ + "\u07cd\7<\2\2\u07cd\u07ce\5\u01a2\u00d2\2\u07ce\u07cf\7=\2\2\u07cf\u07d6"+ + "\3\2\2\2\u07d0\u07d6\5\u017c\u00bf\2\u07d1\u07d6\5\u0184\u00c3\2\u07d2"+ + "\u07d6\5\u018a\u00c6\2\u07d3\u07d6\5\u0190\u00c9\2\u07d4\u07d6\5\u0198"+ + "\u00cd\2\u07d5\u07ad\3\2\2\2\u07d5\u07ae\3\2\2\2\u07d5\u07b9\3\2\2\2\u07d5"+ + "\u07c4\3\2\2\2\u07d5\u07c7\3\2\2\2\u07d5\u07c8\3\2\2\2\u07d5\u07cc\3\2"+ + "\2\2\u07d5\u07d0\3\2\2\2\u07d5\u07d1\3\2\2\2\u07d5\u07d2\3\2\2\2\u07d5"+ + "\u07d3\3\2\2\2\u07d5\u07d4\3\2\2\2\u07d6\u0173\3\2\2\2\u07d7\u07d8\3\2"+ + "\2\2\u07d8\u0175\3\2\2\2\u07d9\u0801\5\2\2\2\u07da\u07df\58\35\2\u07db"+ + "\u07dc\7@\2\2\u07dc\u07de\7A\2\2\u07dd\u07db\3\2\2\2\u07de\u07e1\3\2\2"+ + "\2\u07df\u07dd\3\2\2\2\u07df\u07e0\3\2\2\2\u07e0\u07e2\3\2\2\2\u07e1\u07df"+ + "\3\2\2\2\u07e2\u07e3\7D\2\2\u07e3\u07e4\7\f\2\2\u07e4\u0801\3\2\2\2\u07e5"+ + "\u07ea\5x=\2\u07e6\u07e7\7@\2\2\u07e7\u07e9\7A\2\2\u07e8\u07e6\3\2\2\2"+ + "\u07e9\u07ec\3\2\2\2\u07ea\u07e8\3\2\2\2\u07ea\u07eb\3\2\2\2\u07eb\u07ed"+ + "\3\2\2\2\u07ec\u07ea\3\2\2\2\u07ed\u07ee\7D\2\2\u07ee\u07ef\7\f\2\2\u07ef"+ + "\u0801\3\2\2\2\u07f0\u07f1\7\63\2\2\u07f1\u07f2\7D\2\2\u07f2\u0801\7\f"+ + "\2\2\u07f3\u0801\7.\2\2\u07f4\u07f5\58\35\2\u07f5\u07f6\7D\2\2\u07f6\u07f7"+ + "\7.\2\2\u07f7\u0801\3\2\2\2\u07f8\u07f9\7<\2\2\u07f9\u07fa\5\u01a2\u00d2"+ + "\2\u07fa\u07fb\7=\2\2\u07fb\u0801\3\2\2\2\u07fc\u0801\5\u017c\u00bf\2"+ + "\u07fd\u0801\5\u0184\u00c3\2\u07fe\u0801\5\u0190\u00c9\2\u07ff\u0801\5"+ + "\u0198\u00cd\2\u0800\u07d9\3\2\2\2\u0800\u07da\3\2\2\2\u0800\u07e5\3\2"+ + "\2\2\u0800\u07f0\3\2\2\2\u0800\u07f3\3\2\2\2\u0800\u07f4\3\2\2\2\u0800"+ + "\u07f8\3\2\2\2\u0800\u07fc\3\2\2\2\u0800\u07fd\3\2\2\2\u0800\u07fe\3\2"+ + "\2\2\u0800\u07ff\3\2\2\2\u0801\u0177\3\2\2\2\u0802\u0804\7\"\2\2\u0803"+ + "\u0805\5,\27\2\u0804\u0803\3\2\2\2\u0804\u0805\3\2\2\2\u0805\u0809\3\2"+ + "\2\2\u0806\u0808\5\u00e8u\2\u0807\u0806\3\2\2\2\u0808\u080b\3\2\2\2\u0809"+ + "\u0807\3\2\2\2\u0809\u080a\3\2\2\2\u080a\u080c\3\2\2\2\u080b\u0809\3\2"+ + "\2\2\u080c\u0817\7i\2\2\u080d\u0811\7D\2\2\u080e\u0810\5\u00e8u\2\u080f"+ + "\u080e\3\2\2\2\u0810\u0813\3\2\2\2\u0811\u080f\3\2\2\2\u0811\u0812\3\2"+ + "\2\2\u0812\u0814\3\2\2\2\u0813\u0811\3\2\2\2\u0814\u0816\7i\2\2\u0815"+ + "\u080d\3\2\2\2\u0816\u0819\3\2\2\2\u0817\u0815\3\2\2\2\u0817\u0818\3\2"+ + "\2\2\u0818\u081b\3\2\2\2\u0819\u0817\3\2\2\2\u081a\u081c\5\u017e\u00c0"+ + "\2\u081b\u081a\3\2\2\2\u081b\u081c\3\2\2\2\u081c\u081d\3\2\2\2\u081d\u081f"+ + "\7<\2\2\u081e\u0820\5\u0192\u00ca\2\u081f\u081e\3\2\2\2\u081f\u0820\3"+ + "\2\2\2\u0820\u0821\3\2\2\2\u0821\u0823\7=\2\2\u0822\u0824\5d\63\2\u0823"+ + "\u0822\3\2\2\2\u0823\u0824\3\2\2\2\u0824\u0856\3\2\2\2\u0825\u0826\5<"+ + "\37\2\u0826\u0827\7D\2\2\u0827\u0829\7\"\2\2\u0828\u082a\5,\27\2\u0829"+ + "\u0828\3\2\2\2\u0829\u082a\3\2\2\2\u082a\u082e\3\2\2\2\u082b\u082d\5\u00e8"+ + "u\2\u082c\u082b\3\2\2\2\u082d\u0830\3\2\2\2\u082e\u082c\3\2\2\2\u082e"+ + "\u082f\3\2\2\2\u082f\u0831\3\2\2\2\u0830\u082e\3\2\2\2\u0831\u0833\7i"+ + "\2\2\u0832\u0834\5\u017e\u00c0\2\u0833\u0832\3\2\2\2\u0833\u0834\3\2\2"+ + "\2\u0834\u0835\3\2\2\2\u0835\u0837\7<\2\2\u0836\u0838\5\u0192\u00ca\2"+ + "\u0837\u0836\3\2\2\2\u0837\u0838\3\2\2\2\u0838\u0839\3\2\2\2\u0839\u083b"+ + "\7=\2\2\u083a\u083c\5d\63\2\u083b\u083a\3\2\2\2\u083b\u083c\3\2\2\2\u083c"+ + "\u0856\3\2\2\2\u083d\u083e\5\u0164\u00b3\2\u083e\u083f\7D\2\2\u083f\u0841"+ + "\7\"\2\2\u0840\u0842\5,\27\2\u0841\u0840\3\2\2\2\u0841\u0842\3\2\2\2\u0842"+ + "\u0846\3\2\2\2\u0843\u0845\5\u00e8u\2\u0844\u0843\3\2\2\2\u0845\u0848"+ + "\3\2\2\2\u0846\u0844\3\2\2\2\u0846\u0847\3\2\2\2\u0847\u0849\3\2\2\2\u0848"+ + "\u0846\3\2\2\2\u0849\u084b\7i\2\2\u084a\u084c\5\u017e\u00c0\2\u084b\u084a"+ + "\3\2\2\2\u084b\u084c\3\2\2\2\u084c\u084d\3\2\2\2\u084d\u084f\7<\2\2\u084e"+ + "\u0850\5\u0192\u00ca\2\u084f\u084e\3\2\2\2\u084f\u0850\3\2\2\2\u0850\u0851"+ + "\3\2\2\2\u0851\u0853\7=\2\2\u0852\u0854\5d\63\2\u0853\u0852\3\2\2\2\u0853"+ + "\u0854\3\2\2\2\u0854\u0856\3\2\2\2\u0855\u0802\3\2\2\2\u0855\u0825\3\2"+ + "\2\2\u0855\u083d\3\2\2\2\u0856\u0179\3\2\2\2\u0857\u0858\7D\2\2\u0858"+ + "\u085a\7\"\2\2\u0859\u085b\5,\27\2\u085a\u0859\3\2\2\2\u085a\u085b\3\2"+ + "\2\2\u085b\u085f\3\2\2\2\u085c\u085e\5\u00e8u\2\u085d\u085c\3\2\2\2\u085e"+ + "\u0861\3\2\2\2\u085f\u085d\3\2\2\2\u085f\u0860\3\2\2\2\u0860\u0862\3\2"+ + "\2\2\u0861\u085f\3\2\2\2\u0862\u0864\7i\2\2\u0863\u0865\5\u017e\u00c0"+ + "\2\u0864\u0863\3\2\2\2\u0864\u0865\3\2\2\2\u0865\u0866\3\2\2\2\u0866\u0868"+ + "\7<\2\2\u0867\u0869\5\u0192\u00ca\2\u0868\u0867\3\2\2\2\u0868\u0869\3"+ + "\2\2\2\u0869\u086a\3\2\2\2\u086a\u086c\7=\2\2\u086b\u086d\5d\63\2\u086c"+ + "\u086b\3\2\2\2\u086c\u086d\3\2\2\2\u086d\u017b\3\2\2\2\u086e\u0870\7\""+ + "\2\2\u086f\u0871\5,\27\2\u0870\u086f\3\2\2\2\u0870\u0871\3\2\2\2\u0871"+ + "\u0875\3\2\2\2\u0872\u0874\5\u00e8u\2\u0873\u0872\3\2\2\2\u0874\u0877"+ + "\3\2\2\2\u0875\u0873\3\2\2\2\u0875\u0876\3\2\2\2\u0876\u0878\3\2\2\2\u0877"+ + "\u0875\3\2\2\2\u0878\u0883\7i\2\2\u0879\u087d\7D\2\2\u087a\u087c\5\u00e8"+ + "u\2\u087b\u087a\3\2\2\2\u087c\u087f\3\2\2\2\u087d\u087b\3\2\2\2\u087d"+ + "\u087e\3\2\2\2\u087e\u0880\3\2\2\2\u087f\u087d\3\2\2\2\u0880\u0882\7i"+ + "\2\2\u0881\u0879\3\2\2\2\u0882\u0885\3\2\2\2\u0883\u0881\3\2\2\2\u0883"+ + "\u0884\3\2\2\2\u0884\u0887\3\2\2\2\u0885\u0883\3\2\2\2\u0886\u0888\5\u017e"+ + "\u00c0\2\u0887\u0886\3\2\2\2\u0887\u0888\3\2\2\2\u0888\u0889\3\2\2\2\u0889"+ + "\u088b\7<\2\2\u088a\u088c\5\u0192\u00ca\2\u088b\u088a\3\2\2\2\u088b\u088c"+ + "\3\2\2\2\u088c\u088d\3\2\2\2\u088d\u088f\7=\2\2\u088e\u0890\5d\63\2\u088f"+ + "\u088e\3\2\2\2\u088f\u0890\3\2\2\2\u0890\u08aa\3\2\2\2\u0891\u0892\5<"+ + "\37\2\u0892\u0893\7D\2\2\u0893\u0895\7\"\2\2\u0894\u0896\5,\27\2\u0895"+ + "\u0894\3\2\2\2\u0895\u0896\3\2\2\2\u0896\u089a\3\2\2\2\u0897\u0899\5\u00e8"+ + "u\2\u0898\u0897\3\2\2\2\u0899\u089c\3\2\2\2\u089a\u0898\3\2\2\2\u089a"+ + "\u089b\3\2\2\2\u089b\u089d\3\2\2\2\u089c\u089a\3\2\2\2\u089d\u089f\7i"+ + "\2\2\u089e\u08a0\5\u017e\u00c0\2\u089f\u089e\3\2\2\2\u089f\u08a0\3\2\2"+ + "\2\u08a0\u08a1\3\2\2\2\u08a1\u08a3\7<\2\2\u08a2\u08a4\5\u0192\u00ca\2"+ + "\u08a3\u08a2\3\2\2\2\u08a3\u08a4\3\2\2\2\u08a4\u08a5\3\2\2\2\u08a5\u08a7"+ + "\7=\2\2\u08a6\u08a8\5d\63\2\u08a7\u08a6\3\2\2\2\u08a7\u08a8\3\2\2\2\u08a8"+ + "\u08aa\3\2\2\2\u08a9\u086e\3\2\2\2\u08a9\u0891\3\2\2\2\u08aa\u017d\3\2"+ + "\2\2\u08ab\u08af\5,\27\2\u08ac\u08ad\7G\2\2\u08ad\u08af\7F\2\2\u08ae\u08ab"+ + "\3\2\2\2\u08ae\u08ac\3\2\2\2\u08af\u017f\3\2\2\2\u08b0\u08b1\5\u0164\u00b3"+ + "\2\u08b1\u08b2\7D\2\2\u08b2\u08b3\7i\2\2\u08b3\u08be\3\2\2\2\u08b4\u08b5"+ + "\7+\2\2\u08b5\u08b6\7D\2\2\u08b6\u08be\7i\2\2\u08b7\u08b8\58\35\2\u08b8"+ + "\u08b9\7D\2\2\u08b9\u08ba\7+\2\2\u08ba\u08bb\7D\2\2\u08bb\u08bc\7i\2\2"+ + "\u08bc\u08be\3\2\2\2\u08bd\u08b0\3\2\2\2\u08bd\u08b4\3\2\2\2\u08bd\u08b7"+ + "\3\2\2\2\u08be\u0181\3\2\2\2\u08bf\u08c0\7D\2\2\u08c0\u08c1\7i\2\2\u08c1"+ + "\u0183\3\2\2\2\u08c2\u08c3\7+\2\2\u08c3\u08c4\7D\2\2\u08c4\u08cc\7i\2"+ + "\2\u08c5\u08c6\58\35\2\u08c6\u08c7\7D\2\2\u08c7\u08c8\7+\2\2\u08c8\u08c9"+ + "\7D\2\2\u08c9\u08ca\7i\2\2\u08ca\u08cc\3\2\2\2\u08cb\u08c2\3\2\2\2\u08cb"+ + "\u08c5\3\2\2\2\u08cc\u0185\3\2\2\2\u08cd\u08ce\5<\37\2\u08ce\u08cf\7@"+ + "\2\2\u08cf\u08d0\5\u01a2\u00d2\2\u08d0\u08d1\7A\2\2\u08d1\u08d8\3\2\2"+ + "\2\u08d2\u08d3\5\u016a\u00b6\2\u08d3\u08d4\7@\2\2\u08d4\u08d5\5\u01a2"+ + "\u00d2\2\u08d5\u08d6\7A\2\2\u08d6\u08d8\3\2\2\2\u08d7\u08cd\3\2\2\2\u08d7"+ + "\u08d2\3\2\2\2\u08d8\u08e0\3\2\2\2\u08d9\u08da\5\u0168\u00b5\2\u08da\u08db"+ + "\7@\2\2\u08db\u08dc\5\u01a2\u00d2\2\u08dc\u08dd\7A\2\2\u08dd\u08df\3\2"+ + "\2\2\u08de\u08d9\3\2\2\2\u08df\u08e2\3\2\2\2\u08e0\u08de\3\2\2\2\u08e0"+ + "\u08e1\3\2\2\2\u08e1\u0187\3\2\2\2\u08e2\u08e0\3\2\2\2\u08e3\u08e4\5\u0170"+ + "\u00b9\2\u08e4\u08e5\7@\2\2\u08e5\u08e6\5\u01a2\u00d2\2\u08e6\u08e7\7"+ + "A\2\2\u08e7\u08ef\3\2\2\2\u08e8\u08e9\5\u016e\u00b8\2\u08e9\u08ea\7@\2"+ + "\2\u08ea\u08eb\5\u01a2\u00d2\2\u08eb\u08ec\7A\2\2\u08ec\u08ee\3\2\2\2"+ + "\u08ed\u08e8\3\2\2\2\u08ee\u08f1\3\2\2\2\u08ef\u08ed\3\2\2\2\u08ef\u08f0"+ + "\3\2\2\2\u08f0\u0189\3\2\2\2\u08f1\u08ef\3\2\2\2\u08f2\u08f3\5<\37\2\u08f3"+ + "\u08f4\7@\2\2\u08f4\u08f5\5\u01a2\u00d2\2\u08f5\u08f6\7A\2\2\u08f6\u08fd"+ + "\3\2\2\2\u08f7\u08f8\5\u0176\u00bc\2\u08f8\u08f9\7@\2\2\u08f9\u08fa\5"+ + "\u01a2\u00d2\2\u08fa\u08fb\7A\2\2\u08fb\u08fd\3\2\2\2\u08fc\u08f2\3\2"+ + "\2\2\u08fc\u08f7\3\2\2\2\u08fd\u0905\3\2\2\2\u08fe\u08ff\5\u0174\u00bb"+ + "\2\u08ff\u0900\7@\2\2\u0900\u0901\5\u01a2\u00d2\2\u0901\u0902\7A\2\2\u0902"+ + "\u0904\3\2\2\2\u0903\u08fe\3\2\2\2\u0904\u0907\3\2\2\2\u0905\u0903\3\2"+ + "\2\2\u0905\u0906\3\2\2\2\u0906\u018b\3\2\2\2\u0907\u0905\3\2\2\2\u0908"+ + "\u0909\5> \2\u0909\u090b\7<\2\2\u090a\u090c\5\u0192\u00ca\2\u090b\u090a"+ + "\3\2\2\2\u090b\u090c\3\2\2\2\u090c\u090d\3\2\2\2\u090d\u090e\7=\2\2\u090e"+ + "\u094d\3\2\2\2\u090f\u0910\58\35\2\u0910\u0912\7D\2\2\u0911\u0913\5,\27"+ + "\2\u0912\u0911\3\2\2\2\u0912\u0913\3\2\2\2\u0913\u0914\3\2\2\2\u0914\u0915"+ + "\7i\2\2\u0915\u0917\7<\2\2\u0916\u0918\5\u0192\u00ca\2\u0917\u0916\3\2"+ + "\2\2\u0917\u0918\3\2\2\2\u0918\u0919\3\2\2\2\u0919\u091a\7=\2\2\u091a"+ + "\u094d\3\2\2\2\u091b\u091c\5<\37\2\u091c\u091e\7D\2\2\u091d\u091f\5,\27"+ + "\2\u091e\u091d\3\2\2\2\u091e\u091f\3\2\2\2\u091f\u0920\3\2\2\2\u0920\u0921"+ + "\7i\2\2\u0921\u0923\7<\2\2\u0922\u0924\5\u0192\u00ca\2\u0923\u0922\3\2"+ + "\2\2\u0923\u0924\3\2\2\2\u0924\u0925\3\2\2\2\u0925\u0926\7=\2\2\u0926"+ + "\u094d\3\2\2\2\u0927\u0928\5\u0164\u00b3\2\u0928\u092a\7D\2\2\u0929\u092b"+ + "\5,\27\2\u092a\u0929\3\2\2\2\u092a\u092b\3\2\2\2\u092b\u092c\3\2\2\2\u092c"+ + "\u092d\7i\2\2\u092d\u092f\7<\2\2\u092e\u0930\5\u0192\u00ca\2\u092f\u092e"+ + "\3\2\2\2\u092f\u0930\3\2\2\2\u0930\u0931\3\2\2\2\u0931\u0932\7=\2\2\u0932"+ + "\u094d\3\2\2\2\u0933\u0934\7+\2\2\u0934\u0936\7D\2\2\u0935\u0937\5,\27"+ + "\2\u0936\u0935\3\2\2\2\u0936\u0937\3\2\2\2\u0937\u0938\3\2\2\2\u0938\u0939"+ + "\7i\2\2\u0939\u093b\7<\2\2\u093a\u093c\5\u0192\u00ca\2\u093b\u093a\3\2"+ + "\2\2\u093b\u093c\3\2\2\2\u093c\u093d\3\2\2\2\u093d\u094d\7=\2\2\u093e"+ + "\u093f\58\35\2\u093f\u0940\7D\2\2\u0940\u0941\7+\2\2\u0941\u0943\7D\2"+ + "\2\u0942\u0944\5,\27\2\u0943\u0942\3\2\2\2\u0943\u0944\3\2\2\2\u0944\u0945"+ + "\3\2\2\2\u0945\u0946\7i\2\2\u0946\u0948\7<\2\2\u0947\u0949\5\u0192\u00ca"+ + "\2\u0948\u0947\3\2\2\2\u0948\u0949\3\2\2\2\u0949\u094a\3\2\2\2\u094a\u094b"+ + "\7=\2\2\u094b\u094d\3\2\2\2\u094c\u0908\3\2\2\2\u094c\u090f\3\2\2\2\u094c"+ + "\u091b\3\2\2\2\u094c\u0927\3\2\2\2\u094c\u0933\3\2\2\2\u094c\u093e\3\2"+ + "\2\2\u094d\u018d\3\2\2\2\u094e\u0950\7D\2\2\u094f\u0951\5,\27\2\u0950"+ + "\u094f\3\2\2\2\u0950\u0951\3\2\2\2\u0951\u0952\3\2\2\2\u0952\u0953\7i"+ + "\2\2\u0953\u0955\7<\2\2\u0954\u0956\5\u0192\u00ca\2\u0955\u0954\3\2\2"+ + "\2\u0955\u0956\3\2\2\2\u0956\u0957\3\2\2\2\u0957\u0958\7=\2\2\u0958\u018f"+ + "\3\2\2\2\u0959\u095a\5> \2\u095a\u095c\7<\2\2\u095b\u095d\5\u0192\u00ca"+ + "\2\u095c\u095b\3\2\2\2\u095c\u095d\3\2\2\2\u095d\u095e\3\2\2\2\u095e\u095f"+ + "\7=\2\2\u095f\u0992\3\2\2\2\u0960\u0961\58\35\2\u0961\u0963\7D\2\2\u0962"+ + "\u0964\5,\27\2\u0963\u0962\3\2\2\2\u0963\u0964\3\2\2\2\u0964\u0965\3\2"+ + "\2\2\u0965\u0966\7i\2\2\u0966\u0968\7<\2\2\u0967\u0969\5\u0192"; private static final String _serializedATNSegment1 = - "\u0969\u0968\3\2\2\2\u0969\u096a\3\2\2\2\u096a\u096b\3\2\2\2\u096b\u096c"+ - "\7h\2\2\u096c\u096e\7;\2\2\u096d\u096f\5\u0190\u00c9\2\u096e\u096d\3\2"+ - "\2\2\u096e\u096f\3\2\2\2\u096f\u0970\3\2\2\2\u0970\u0971\7<\2\2\u0971"+ - "\u098c\3\2\2\2\u0972\u0973\7*\2\2\u0973\u0975\7C\2\2\u0974\u0976\5,\27"+ - "\2\u0975\u0974\3\2\2\2\u0975\u0976\3\2\2\2\u0976\u0977\3\2\2\2\u0977\u0978"+ - "\7h\2\2\u0978\u097a\7;\2\2\u0979\u097b\5\u0190\u00c9\2\u097a\u0979\3\2"+ - "\2\2\u097a\u097b\3\2\2\2\u097b\u097c\3\2\2\2\u097c\u098c\7<\2\2\u097d"+ - "\u097e\58\35\2\u097e\u097f\7C\2\2\u097f\u0980\7*\2\2\u0980\u0982\7C\2"+ - "\2\u0981\u0983\5,\27\2\u0982\u0981\3\2\2\2\u0982\u0983\3\2\2\2\u0983\u0984"+ - "\3\2\2\2\u0984\u0985\7h\2\2\u0985\u0987\7;\2\2\u0986\u0988\5\u0190\u00c9"+ - "\2\u0987\u0986\3\2\2\2\u0987\u0988\3\2\2\2\u0988\u0989\3\2\2\2\u0989\u098a"+ - "\7<\2\2\u098a\u098c\3\2\2\2\u098b\u0953\3\2\2\2\u098b\u095a\3\2\2\2\u098b"+ - "\u0966\3\2\2\2\u098b\u0972\3\2\2\2\u098b\u097d\3\2\2\2\u098c\u018f\3\2"+ - "\2\2\u098d\u0992\5\u01a0\u00d1\2\u098e\u098f\7B\2\2\u098f\u0991\5\u01a0"+ - "\u00d1\2\u0990\u098e\3\2\2\2\u0991\u0994\3\2\2\2\u0992\u0990\3\2\2\2\u0992"+ - "\u0993\3\2\2\2\u0993\u0191\3\2\2\2\u0994\u0992\3\2\2\2\u0995\u0996\5<"+ - "\37\2\u0996\u0998\7\\\2\2\u0997\u0999\5,\27\2\u0998\u0997\3\2\2\2\u0998"+ - "\u0999\3\2\2\2\u0999\u099a\3\2\2\2\u099a\u099b\7h\2\2\u099b\u09c5\3\2"+ - "\2\2\u099c\u099d\5\16\b\2\u099d\u099f\7\\\2\2\u099e\u09a0\5,\27\2\u099f"+ - "\u099e\3\2\2\2\u099f\u09a0\3\2\2\2\u09a0\u09a1\3\2\2\2\u09a1\u09a2\7h"+ - "\2\2\u09a2\u09c5\3\2\2\2\u09a3\u09a4\5\u0162\u00b2\2\u09a4\u09a6\7\\\2"+ - "\2\u09a5\u09a7\5,\27\2\u09a6\u09a5\3\2\2\2\u09a6\u09a7\3\2\2\2\u09a7\u09a8"+ - "\3\2\2\2\u09a8\u09a9\7h\2\2\u09a9\u09c5\3\2\2\2\u09aa\u09ab\7*\2\2\u09ab"+ - "\u09ad\7\\\2\2\u09ac\u09ae\5,\27\2\u09ad\u09ac\3\2\2\2\u09ad\u09ae\3\2"+ - "\2\2\u09ae\u09af\3\2\2\2\u09af\u09c5\7h\2\2\u09b0\u09b1\58\35\2\u09b1"+ - "\u09b2\7C\2\2\u09b2\u09b3\7*\2\2\u09b3\u09b5\7\\\2\2\u09b4\u09b6\5,\27"+ - "\2\u09b5\u09b4\3\2\2\2\u09b5\u09b6\3\2\2\2\u09b6\u09b7\3\2\2\2\u09b7\u09b8"+ - "\7h\2\2\u09b8\u09c5\3\2\2\2\u09b9\u09ba\5\22\n\2\u09ba\u09bc\7\\\2\2\u09bb"+ - "\u09bd\5,\27\2\u09bc\u09bb\3\2\2\2\u09bc\u09bd\3\2\2\2\u09bd\u09be\3\2"+ - "\2\2\u09be\u09bf\7!\2\2\u09bf\u09c5\3\2\2\2\u09c0\u09c1\5 \21\2\u09c1"+ - "\u09c2\7\\\2\2\u09c2\u09c3\7!\2\2\u09c3\u09c5\3\2\2\2\u09c4\u0995\3\2"+ - "\2\2\u09c4\u099c\3\2\2\2\u09c4\u09a3\3\2\2\2\u09c4\u09aa\3\2\2\2\u09c4"+ - "\u09b0\3\2\2\2\u09c4\u09b9\3\2\2\2\u09c4\u09c0\3\2\2\2\u09c5\u0193\3\2"+ - "\2\2\u09c6\u09c8\7\\\2\2\u09c7\u09c9\5,\27\2\u09c8\u09c7\3\2\2\2\u09c8"+ - "\u09c9\3\2\2\2\u09c9\u09ca\3\2\2\2\u09ca\u09cb\7h\2\2\u09cb\u0195\3\2"+ - "\2\2\u09cc\u09cd\5<\37\2\u09cd\u09cf\7\\\2\2\u09ce\u09d0\5,\27\2\u09cf"+ - "\u09ce\3\2\2\2\u09cf\u09d0\3\2\2\2\u09d0\u09d1\3\2\2\2\u09d1\u09d2\7h"+ - "\2\2\u09d2\u09f5\3\2\2\2\u09d3\u09d4\5\16\b\2\u09d4\u09d6\7\\\2\2\u09d5"+ - "\u09d7\5,\27\2\u09d6\u09d5\3\2\2\2\u09d6\u09d7\3\2\2\2\u09d7\u09d8\3\2"+ - "\2\2\u09d8\u09d9\7h\2\2\u09d9\u09f5\3\2\2\2\u09da\u09db\7*\2\2\u09db\u09dd"+ - "\7\\\2\2\u09dc\u09de\5,\27\2\u09dd\u09dc\3\2\2\2\u09dd\u09de\3\2\2\2\u09de"+ - "\u09df\3\2\2\2\u09df\u09f5\7h\2\2\u09e0\u09e1\58\35\2\u09e1\u09e2\7C\2"+ - "\2\u09e2\u09e3\7*\2\2\u09e3\u09e5\7\\\2\2\u09e4\u09e6\5,\27\2\u09e5\u09e4"+ - "\3\2\2\2\u09e5\u09e6\3\2\2\2\u09e6\u09e7\3\2\2\2\u09e7\u09e8\7h\2\2\u09e8"+ - "\u09f5\3\2\2\2\u09e9\u09ea\5\22\n\2\u09ea\u09ec\7\\\2\2\u09eb\u09ed\5"+ - ",\27\2\u09ec\u09eb\3\2\2\2\u09ec\u09ed\3\2\2\2\u09ed\u09ee\3\2\2\2\u09ee"+ - "\u09ef\7!\2\2\u09ef\u09f5\3\2\2\2\u09f0\u09f1\5 \21\2\u09f1\u09f2\7\\"+ - "\2\2\u09f2\u09f3\7!\2\2\u09f3\u09f5\3\2\2\2\u09f4\u09cc\3\2\2\2\u09f4"+ - "\u09d3\3\2\2\2\u09f4\u09da\3\2\2\2\u09f4\u09e0\3\2\2\2\u09f4\u09e9\3\2"+ - "\2\2\u09f4\u09f0\3\2\2\2\u09f5\u0197\3\2\2\2\u09f6\u09f7\7!\2\2\u09f7"+ - "\u09f8\5\6\4\2\u09f8\u09fa\5\u019a\u00ce\2\u09f9\u09fb\5\"\22\2\u09fa"+ - "\u09f9\3\2\2\2\u09fa\u09fb\3\2\2\2\u09fb\u0a0d\3\2\2\2\u09fc\u09fd\7!"+ - "\2\2\u09fd\u09fe\5\20\t\2\u09fe\u0a00\5\u019a\u00ce\2\u09ff\u0a01\5\""+ - "\22\2\u0a00\u09ff\3\2\2\2\u0a00\u0a01\3\2\2\2\u0a01\u0a0d\3\2\2\2\u0a02"+ - "\u0a03\7!\2\2\u0a03\u0a04\5\6\4\2\u0a04\u0a05\5\"\22\2\u0a05\u0a06\5\u00fa"+ - "~\2\u0a06\u0a0d\3\2\2\2\u0a07\u0a08\7!\2\2\u0a08\u0a09\5\20\t\2\u0a09"+ - "\u0a0a\5\"\22\2\u0a0a\u0a0b\5\u00fa~\2\u0a0b\u0a0d\3\2\2\2\u0a0c\u09f6"+ - "\3\2\2\2\u0a0c\u09fc\3\2\2\2\u0a0c\u0a02\3\2\2\2\u0a0c\u0a07\3\2\2\2\u0a0d"+ - "\u0199\3\2\2\2\u0a0e\u0a12\5\u019c\u00cf\2\u0a0f\u0a11\5\u019c\u00cf\2"+ - "\u0a10\u0a0f\3\2\2\2\u0a11\u0a14\3\2\2\2\u0a12\u0a10\3\2\2\2\u0a12\u0a13"+ - "\3\2\2\2\u0a13\u019b\3\2\2\2\u0a14\u0a12\3\2\2\2\u0a15\u0a17\5\u00e8u"+ - "\2\u0a16\u0a15\3\2\2\2\u0a17\u0a1a\3\2\2\2\u0a18\u0a16\3\2\2\2\u0a18\u0a19"+ - "\3\2\2\2\u0a19\u0a1b\3\2\2\2\u0a1a\u0a18\3\2\2\2\u0a1b\u0a1c\7?\2\2\u0a1c"+ - "\u0a1d\5\u01a0\u00d1\2\u0a1d\u0a1e\7@\2\2\u0a1e\u019d\3\2\2\2\u0a1f\u0a20"+ - "\5\u01a0\u00d1\2\u0a20\u019f\3\2\2\2\u0a21\u0a24\5\u01a2\u00d2\2\u0a22"+ - "\u0a24\5\u01aa\u00d6\2\u0a23\u0a21\3\2\2\2\u0a23\u0a22\3\2\2\2\u0a24\u01a1"+ - "\3\2\2\2\u0a25\u0a26\5\u01a4\u00d3\2\u0a26\u0a27\7[\2\2\u0a27\u0a28\5"+ - "\u01a8\u00d5\2\u0a28\u01a3\3\2\2\2\u0a29\u0a30\7h\2\2\u0a2a\u0a2c\7;\2"+ - "\2\u0a2b\u0a2d\5\u0098M\2\u0a2c\u0a2b\3\2\2\2\u0a2c\u0a2d\3\2\2\2\u0a2d"+ - "\u0a2e\3\2\2\2\u0a2e\u0a30\7<\2\2\u0a2f\u0a29\3\2\2\2\u0a2f\u0a2a\3\2"+ - "\2\2\u0a30\u01a5\3\2\2\2\u0a31\u0a36\7h\2\2\u0a32\u0a33\7B\2\2\u0a33\u0a35"+ - "\7h\2\2\u0a34\u0a32\3\2\2\2\u0a35\u0a38\3\2\2\2\u0a36\u0a34\3\2\2\2\u0a36"+ - "\u0a37\3\2\2\2\u0a37\u01a7\3\2\2\2\u0a38\u0a36\3\2\2\2\u0a39\u0a3c\5\u01a0"+ - "\u00d1\2\u0a3a\u0a3c\5\u00fe\u0080\2\u0a3b\u0a39\3\2\2\2\u0a3b\u0a3a\3"+ - "\2\2\2\u0a3c\u01a9\3\2\2\2\u0a3d\u0a40\5\u01b2\u00da\2\u0a3e\u0a40\5\u01ac"+ - "\u00d7\2\u0a3f\u0a3d\3\2\2\2\u0a3f\u0a3e\3\2\2\2\u0a40\u01ab\3\2\2\2\u0a41"+ - "\u0a42\5\u01ae\u00d8\2\u0a42\u0a43\5\u01b0\u00d9\2\u0a43\u0a44\5\u01a0"+ - "\u00d1\2\u0a44\u01ad\3\2\2\2\u0a45\u0a49\5<\37\2\u0a46\u0a49\5\u017e\u00c0"+ - "\2\u0a47\u0a49\5\u0184\u00c3\2\u0a48\u0a45\3\2\2\2\u0a48\u0a46\3\2\2\2"+ - "\u0a48\u0a47\3\2\2\2\u0a49\u01af\3\2\2\2\u0a4a\u0a4b\t\5\2\2\u0a4b\u01b1"+ - "\3\2\2\2\u0a4c\u0a54\5\u01b4\u00db\2\u0a4d\u0a4e\5\u01b4\u00db\2\u0a4e"+ - "\u0a4f\7I\2\2\u0a4f\u0a50\5\u01a0\u00d1\2\u0a50\u0a51\7J\2\2\u0a51\u0a52"+ - "\5\u01b2\u00da\2\u0a52\u0a54\3\2\2\2\u0a53\u0a4c\3\2\2\2\u0a53\u0a4d\3"+ - "\2\2\2\u0a54\u01b3\3\2\2\2\u0a55\u0a56\b\u00db\1\2\u0a56\u0a57\5\u01b6"+ - "\u00dc\2\u0a57\u0a5d\3\2\2\2\u0a58\u0a59\f\3\2\2\u0a59\u0a5a\7P\2\2\u0a5a"+ - "\u0a5c\5\u01b6\u00dc\2\u0a5b\u0a58\3\2\2\2\u0a5c\u0a5f\3\2\2\2\u0a5d\u0a5b"+ - "\3\2\2\2\u0a5d\u0a5e\3\2\2\2\u0a5e\u01b5\3\2\2\2\u0a5f\u0a5d\3\2\2\2\u0a60"+ - "\u0a61\b\u00dc\1\2\u0a61\u0a62\5\u01b8\u00dd\2\u0a62\u0a68\3\2\2\2\u0a63"+ - "\u0a64\f\3\2\2\u0a64\u0a65\7O\2\2\u0a65\u0a67\5\u01b8\u00dd\2\u0a66\u0a63"+ - "\3\2\2\2\u0a67\u0a6a\3\2\2\2\u0a68\u0a66\3\2\2\2\u0a68\u0a69\3\2\2\2\u0a69"+ - "\u01b7\3\2\2\2\u0a6a\u0a68\3\2\2\2\u0a6b\u0a6c\b\u00dd\1\2\u0a6c\u0a6d"+ - "\5\u01ba\u00de\2\u0a6d\u0a73\3\2\2\2\u0a6e\u0a6f\f\3\2\2\u0a6f\u0a70\7"+ - "X\2\2\u0a70\u0a72\5\u01ba\u00de\2\u0a71\u0a6e\3\2\2\2\u0a72\u0a75\3\2"+ - "\2\2\u0a73\u0a71\3\2\2\2\u0a73\u0a74\3\2\2\2\u0a74\u01b9\3\2\2\2\u0a75"+ - "\u0a73\3\2\2\2\u0a76\u0a77\b\u00de\1\2\u0a77\u0a78\5\u01bc\u00df\2\u0a78"+ - "\u0a7e\3\2\2\2\u0a79\u0a7a\f\3\2\2\u0a7a\u0a7b\7Y\2\2\u0a7b\u0a7d\5\u01bc"+ - "\u00df\2\u0a7c\u0a79\3\2\2\2\u0a7d\u0a80\3\2\2\2\u0a7e\u0a7c\3\2\2\2\u0a7e"+ - "\u0a7f\3\2\2\2\u0a7f\u01bb\3\2\2\2\u0a80\u0a7e\3\2\2\2\u0a81\u0a82\b\u00df"+ - "\1\2\u0a82\u0a83\5\u01be\u00e0\2\u0a83\u0a89\3\2\2\2\u0a84\u0a85\f\3\2"+ - "\2\u0a85\u0a86\7W\2\2\u0a86\u0a88\5\u01be\u00e0\2\u0a87\u0a84\3\2\2\2"+ - "\u0a88\u0a8b\3\2\2\2\u0a89\u0a87\3\2\2\2\u0a89\u0a8a\3\2\2\2\u0a8a\u01bd"+ - "\3\2\2\2\u0a8b\u0a89\3\2\2\2\u0a8c\u0a8d\b\u00e0\1\2\u0a8d\u0a8e\5\u01c0"+ - "\u00e1\2\u0a8e\u0a97\3\2\2\2\u0a8f\u0a90\f\4\2\2\u0a90\u0a91\7K\2\2\u0a91"+ - "\u0a96\5\u01c0\u00e1\2\u0a92\u0a93\f\3\2\2\u0a93\u0a94\7N\2\2\u0a94\u0a96"+ - "\5\u01c0\u00e1\2\u0a95\u0a8f\3\2\2\2\u0a95\u0a92\3\2\2\2\u0a96\u0a99\3"+ - "\2\2\2\u0a97\u0a95\3\2\2\2\u0a97\u0a98\3\2\2\2\u0a98\u01bf\3\2\2\2\u0a99"+ - "\u0a97\3\2\2\2\u0a9a\u0a9b\b\u00e1\1\2\u0a9b\u0a9c\5\u01c2\u00e2\2\u0a9c"+ - "\u0aae\3\2\2\2\u0a9d\u0a9e\f\7\2\2\u0a9e\u0a9f\7F\2\2\u0a9f\u0aad\5\u01c2"+ - "\u00e2\2\u0aa0\u0aa1\f\6\2\2\u0aa1\u0aa2\7E\2\2\u0aa2\u0aad\5\u01c2\u00e2"+ - "\2\u0aa3\u0aa4\f\5\2\2\u0aa4\u0aa5\7L\2\2\u0aa5\u0aad\5\u01c2\u00e2\2"+ - "\u0aa6\u0aa7\f\4\2\2\u0aa7\u0aa8\7M\2\2\u0aa8\u0aad\5\u01c2\u00e2\2\u0aa9"+ - "\u0aaa\f\3\2\2\u0aaa\u0aab\7\34\2\2\u0aab\u0aad\5\16\b\2\u0aac\u0a9d\3"+ - "\2\2\2\u0aac\u0aa0\3\2\2\2\u0aac\u0aa3\3\2\2\2\u0aac\u0aa6\3\2\2\2\u0aac"+ - "\u0aa9\3\2\2\2\u0aad\u0ab0\3\2\2\2\u0aae\u0aac\3\2\2\2\u0aae\u0aaf\3\2"+ - "\2\2\u0aaf\u01c1\3\2\2\2\u0ab0\u0aae\3\2\2\2\u0ab1\u0ab2\b\u00e2\1\2\u0ab2"+ - "\u0ab3\5\u01c4\u00e3\2\u0ab3\u0ac3\3\2\2\2\u0ab4\u0ab5\f\5\2\2\u0ab5\u0ab6"+ - "\7F\2\2\u0ab6\u0ab7\7F\2\2\u0ab7\u0ac2\5\u01c4\u00e3\2\u0ab8\u0ab9\f\4"+ - "\2\2\u0ab9\u0aba\7E\2\2\u0aba\u0abb\7E\2\2\u0abb\u0ac2\5\u01c4\u00e3\2"+ - "\u0abc\u0abd\f\3\2\2\u0abd\u0abe\7E\2\2\u0abe\u0abf\7E\2\2\u0abf\u0ac0"+ - "\7E\2\2\u0ac0\u0ac2\5\u01c4\u00e3\2\u0ac1\u0ab4\3\2\2\2\u0ac1\u0ab8\3"+ - "\2\2\2\u0ac1\u0abc\3\2\2\2\u0ac2\u0ac5\3\2\2\2\u0ac3\u0ac1\3\2\2\2\u0ac3"+ - "\u0ac4\3\2\2\2\u0ac4\u01c3\3\2\2\2\u0ac5\u0ac3\3\2\2\2\u0ac6\u0ac7\b\u00e3"+ - "\1\2\u0ac7\u0ac8\5\u01c6\u00e4\2\u0ac8\u0ad1\3\2\2\2\u0ac9\u0aca\f\4\2"+ - "\2\u0aca\u0acb\7S\2\2\u0acb\u0ad0\5\u01c6\u00e4\2\u0acc\u0acd\f\3\2\2"+ - "\u0acd\u0ace\7T\2\2\u0ace\u0ad0\5\u01c6\u00e4\2\u0acf\u0ac9\3\2\2\2\u0acf"+ - "\u0acc\3\2\2\2\u0ad0\u0ad3\3\2\2\2\u0ad1\u0acf\3\2\2\2\u0ad1\u0ad2\3\2"+ - "\2\2\u0ad2\u01c5\3\2\2\2\u0ad3\u0ad1\3\2\2\2\u0ad4\u0ad5\b\u00e4\1\2\u0ad5"+ - "\u0ad6\5\u01c8\u00e5\2\u0ad6\u0ae2\3\2\2\2\u0ad7\u0ad8\f\5\2\2\u0ad8\u0ad9"+ - "\7U\2\2\u0ad9\u0ae1\5\u01c8\u00e5\2\u0ada\u0adb\f\4\2\2\u0adb\u0adc\7"+ - "V\2\2\u0adc\u0ae1\5\u01c8\u00e5\2\u0add\u0ade\f\3\2\2\u0ade\u0adf\7Z\2"+ - "\2\u0adf\u0ae1\5\u01c8\u00e5\2\u0ae0\u0ad7\3\2\2\2\u0ae0\u0ada\3\2\2\2"+ - "\u0ae0\u0add\3\2\2\2\u0ae1\u0ae4\3\2\2\2\u0ae2\u0ae0\3\2\2\2\u0ae2\u0ae3"+ - "\3\2\2\2\u0ae3\u01c7\3\2\2\2\u0ae4\u0ae2\3\2\2\2\u0ae5\u0aed\5\u01ca\u00e6"+ - "\2\u0ae6\u0aed\5\u01cc\u00e7\2\u0ae7\u0ae8\7S\2\2\u0ae8\u0aed\5\u01c8"+ - "\u00e5\2\u0ae9\u0aea\7T\2\2\u0aea\u0aed\5\u01c8\u00e5\2\u0aeb\u0aed\5"+ - "\u01ce\u00e8\2\u0aec\u0ae5\3\2\2\2\u0aec\u0ae6\3\2\2\2\u0aec\u0ae7\3\2"+ - "\2\2\u0aec\u0ae9\3\2\2\2\u0aec\u0aeb\3\2\2\2\u0aed\u01c9\3\2\2\2\u0aee"+ - "\u0aef\7Q\2\2\u0aef\u0af0\5\u01c8\u00e5\2\u0af0\u01cb\3\2\2\2\u0af1\u0af2"+ - "\7R\2\2\u0af2\u0af3\5\u01c8\u00e5\2\u0af3\u01cd\3\2\2\2\u0af4\u0afb\5"+ - "\u01d0\u00e9\2\u0af5\u0af6\7H\2\2\u0af6\u0afb\5\u01c8\u00e5\2\u0af7\u0af8"+ - "\7G\2\2\u0af8\u0afb\5\u01c8\u00e5\2\u0af9\u0afb\5\u01da\u00ee\2\u0afa"+ - "\u0af4\3\2\2\2\u0afa\u0af5\3\2\2\2\u0afa\u0af7\3\2\2\2\u0afa\u0af9\3\2"+ - "\2\2\u0afb\u01cf\3\2\2\2\u0afc\u0aff\5\u0162\u00b2\2\u0afd\u0aff\5<\37"+ - "\2\u0afe\u0afc\3\2\2\2\u0afe\u0afd\3\2\2\2\u0aff\u0b04\3\2\2\2\u0b00\u0b03"+ - "\5\u01d4\u00eb\2\u0b01\u0b03\5\u01d8\u00ed\2\u0b02\u0b00\3\2\2\2\u0b02"+ - "\u0b01\3\2\2\2\u0b03\u0b06\3\2\2\2\u0b04\u0b02\3\2\2\2\u0b04\u0b05\3\2"+ - "\2\2\u0b05\u01d1\3\2\2\2\u0b06\u0b04\3\2\2\2\u0b07\u0b08\5\u01d0\u00e9"+ - "\2\u0b08\u0b09\7Q\2\2\u0b09\u01d3\3\2\2\2\u0b0a\u0b0b\7Q\2\2\u0b0b\u01d5"+ - "\3\2\2\2\u0b0c\u0b0d\5\u01d0\u00e9\2\u0b0d\u0b0e\7R\2\2\u0b0e\u01d7\3"+ - "\2\2\2\u0b0f\u0b10\7R\2\2\u0b10\u01d9\3\2\2\2\u0b11\u0b12\7;\2\2\u0b12"+ - "\u0b13\5\6\4\2\u0b13\u0b14\7<\2\2\u0b14\u0b15\5\u01c8\u00e5\2\u0b15\u0b2d"+ - "\3\2\2\2\u0b16\u0b17\7;\2\2\u0b17\u0b1b\5\16\b\2\u0b18\u0b1a\5*\26\2\u0b19"+ - "\u0b18\3\2\2\2\u0b1a\u0b1d\3\2\2\2\u0b1b\u0b19\3\2\2\2\u0b1b\u0b1c\3\2"+ - "\2\2\u0b1c\u0b1e\3\2\2\2\u0b1d\u0b1b\3\2\2\2\u0b1e\u0b1f\7<\2\2\u0b1f"+ - "\u0b20\5\u01ce\u00e8\2\u0b20\u0b2d\3\2\2\2\u0b21\u0b22\7;\2\2\u0b22\u0b26"+ - "\5\16\b\2\u0b23\u0b25\5*\26\2\u0b24\u0b23\3\2\2\2\u0b25\u0b28\3\2\2\2"+ - "\u0b26\u0b24\3\2\2\2\u0b26\u0b27\3\2\2\2\u0b27\u0b29\3\2\2\2\u0b28\u0b26"+ - "\3\2\2\2\u0b29\u0b2a\7<\2\2\u0b2a\u0b2b\5\u01a2\u00d2\2\u0b2b\u0b2d\3"+ - "\2\2\2\u0b2c\u0b11\3\2\2\2\u0b2c\u0b16\3\2\2\2\u0b2c\u0b21\3\2\2\2\u0b2d"+ - "\u01db\3\2\2\2\u014a\u01e0\u01e5\u01ec\u01f0\u01f4\u01fd\u0201\u0205\u0207"+ - "\u020d\u0212\u0219\u021e\u0220\u0226\u022b\u0230\u0235\u0240\u024e\u0253"+ - "\u025b\u0262\u0268\u026d\u0278\u027b\u0289\u028e\u0293\u0298\u029e\u02a8"+ - "\u02b0\u02ba\u02c2\u02ce\u02d2\u02d7\u02dd\u02e5\u02ee\u02f9\u0316\u031a"+ - "\u031f\u0325\u0328\u032b\u0337\u0342\u0350\u0357\u035f\u0366\u036b\u036f"+ - "\u037c\u0383\u0389\u038d\u0391\u0395\u0399\u039e\u03a2\u03a6\u03a8\u03ad"+ - "\u03b4\u03b9\u03bb\u03c1\u03c6\u03ca\u03dd\u03e2\u03f2\u03f5\u03f9\u03ff"+ - "\u0403\u0407\u0409\u040d\u0412\u0416\u041d\u0424\u042c\u042f\u0434\u0438"+ - "\u043e\u0443\u044a\u0451\u0456\u045c\u0468\u046d\u0471\u047b\u0480\u0488"+ - "\u048b\u0490\u0498\u049b\u04a0\u04a5\u04aa\u04af\u04b6\u04bb\u04c3\u04c8"+ - "\u04cd\u04d2\u04d8\u04de\u04e1\u04e4\u04ed\u04f3\u04f9\u04fc\u04ff\u0507"+ - "\u050c\u0511\u0517\u051a\u0525\u052e\u0538\u053d\u0548\u054d\u0559\u055e"+ - "\u056a\u0574\u0579\u0581\u0584\u058b\u0593\u0599\u05a2\u05ac\u05b0\u05b3"+ - "\u05bc\u05ca\u05cd\u05d6\u05db\u05e3\u05e9\u05f1\u05fd\u0604\u0612\u0628"+ - "\u064a\u0656\u065c\u0668\u0675\u068f\u0693\u0698\u069c\u06a0\u06a8\u06ac"+ - "\u06b0\u06b7\u06c0\u06c8\u06d7\u06e3\u06e9\u06ef\u0704\u0709\u070f\u071b"+ - "\u0726\u0730\u0733\u0738\u0741\u0747\u0751\u0756\u075f\u0776\u0780\u0796"+ - "\u079d\u07a5\u07ad\u07b8\u07cf\u07d9\u07e4\u07fa\u07fe\u0803\u080b\u0811"+ - "\u0815\u0819\u081d\u0823\u0828\u082d\u0831\u0835\u083b\u0840\u0845\u0849"+ - "\u084d\u084f\u0854\u0859\u085e\u0862\u0866\u086a\u086f\u0877\u087d\u0881"+ - "\u0885\u0889\u088f\u0894\u0899\u089d\u08a1\u08a3\u08a8\u08b7\u08c5\u08d1"+ - "\u08da\u08e9\u08f6\u08ff\u0905\u090c\u0911\u0918\u091d\u0924\u0929\u0930"+ - "\u0935\u093d\u0942\u0946\u094a\u094f\u0956\u095d\u0962\u0969\u096e\u0975"+ - "\u097a\u0982\u0987\u098b\u0992\u0998\u099f\u09a6\u09ad\u09b5\u09bc\u09c4"+ - "\u09c8\u09cf\u09d6\u09dd\u09e5\u09ec\u09f4\u09fa\u0a00\u0a0c\u0a12\u0a18"+ - "\u0a23\u0a2c\u0a2f\u0a36\u0a3b\u0a3f\u0a48\u0a53\u0a5d\u0a68\u0a73\u0a7e"+ - "\u0a89\u0a95\u0a97\u0aac\u0aae\u0ac1\u0ac3\u0acf\u0ad1\u0ae0\u0ae2\u0aec"+ - "\u0afa\u0afe\u0b02\u0b04\u0b1b\u0b26\u0b2c"; + "\u00ca\2\u0968\u0967\3\2\2\2\u0968\u0969\3\2\2\2\u0969\u096a\3\2\2\2\u096a"+ + "\u096b\7=\2\2\u096b\u0992\3\2\2\2\u096c\u096d\5<\37\2\u096d\u096f\7D\2"+ + "\2\u096e\u0970\5,\27\2\u096f\u096e\3\2\2\2\u096f\u0970\3\2\2\2\u0970\u0971"+ + "\3\2\2\2\u0971\u0972\7i\2\2\u0972\u0974\7<\2\2\u0973\u0975\5\u0192\u00ca"+ + "\2\u0974\u0973\3\2\2\2\u0974\u0975\3\2\2\2\u0975\u0976\3\2\2\2\u0976\u0977"+ + "\7=\2\2\u0977\u0992\3\2\2\2\u0978\u0979\7+\2\2\u0979\u097b\7D\2\2\u097a"+ + "\u097c\5,\27\2\u097b\u097a\3\2\2\2\u097b\u097c\3\2\2\2\u097c\u097d\3\2"+ + "\2\2\u097d\u097e\7i\2\2\u097e\u0980\7<\2\2\u097f\u0981\5\u0192\u00ca\2"+ + "\u0980\u097f\3\2\2\2\u0980\u0981\3\2\2\2\u0981\u0982\3\2\2\2\u0982\u0992"+ + "\7=\2\2\u0983\u0984\58\35\2\u0984\u0985\7D\2\2\u0985\u0986\7+\2\2\u0986"+ + "\u0988\7D\2\2\u0987\u0989\5,\27\2\u0988\u0987\3\2\2\2\u0988\u0989\3\2"+ + "\2\2\u0989\u098a\3\2\2\2\u098a\u098b\7i\2\2\u098b\u098d\7<\2\2\u098c\u098e"+ + "\5\u0192\u00ca\2\u098d\u098c\3\2\2\2\u098d\u098e\3\2\2\2\u098e\u098f\3"+ + "\2\2\2\u098f\u0990\7=\2\2\u0990\u0992\3\2\2\2\u0991\u0959\3\2\2\2\u0991"+ + "\u0960\3\2\2\2\u0991\u096c\3\2\2\2\u0991\u0978\3\2\2\2\u0991\u0983\3\2"+ + "\2\2\u0992\u0191\3\2\2\2\u0993\u0998\5\u01a2\u00d2\2\u0994\u0995\7C\2"+ + "\2\u0995\u0997\5\u01a2\u00d2\2\u0996\u0994\3\2\2\2\u0997\u099a\3\2\2\2"+ + "\u0998\u0996\3\2\2\2\u0998\u0999\3\2\2\2\u0999\u0193\3\2\2\2\u099a\u0998"+ + "\3\2\2\2\u099b\u099c\5<\37\2\u099c\u099e\7]\2\2\u099d\u099f\5,\27\2\u099e"+ + "\u099d\3\2\2\2\u099e\u099f\3\2\2\2\u099f\u09a0\3\2\2\2\u09a0\u09a1\7i"+ + "\2\2\u09a1\u09cb\3\2\2\2\u09a2\u09a3\5\16\b\2\u09a3\u09a5\7]\2\2\u09a4"+ + "\u09a6\5,\27\2\u09a5\u09a4\3\2\2\2\u09a5\u09a6\3\2\2\2\u09a6\u09a7\3\2"+ + "\2\2\u09a7\u09a8\7i\2\2\u09a8\u09cb\3\2\2\2\u09a9\u09aa\5\u0164\u00b3"+ + "\2\u09aa\u09ac\7]\2\2\u09ab\u09ad\5,\27\2\u09ac\u09ab\3\2\2\2\u09ac\u09ad"+ + "\3\2\2\2\u09ad\u09ae\3\2\2\2\u09ae\u09af\7i\2\2\u09af\u09cb\3\2\2\2\u09b0"+ + "\u09b1\7+\2\2\u09b1\u09b3\7]\2\2\u09b2\u09b4\5,\27\2\u09b3\u09b2\3\2\2"+ + "\2\u09b3\u09b4\3\2\2\2\u09b4\u09b5\3\2\2\2\u09b5\u09cb\7i\2\2\u09b6\u09b7"+ + "\58\35\2\u09b7\u09b8\7D\2\2\u09b8\u09b9\7+\2\2\u09b9\u09bb\7]\2\2\u09ba"+ + "\u09bc\5,\27\2\u09bb\u09ba\3\2\2\2\u09bb\u09bc\3\2\2\2\u09bc\u09bd\3\2"+ + "\2\2\u09bd\u09be\7i\2\2\u09be\u09cb\3\2\2\2\u09bf\u09c0\5\22\n\2\u09c0"+ + "\u09c2\7]\2\2\u09c1\u09c3\5,\27\2\u09c2\u09c1\3\2\2\2\u09c2\u09c3\3\2"+ + "\2\2\u09c3\u09c4\3\2\2\2\u09c4\u09c5\7\"\2\2\u09c5\u09cb\3\2\2\2\u09c6"+ + "\u09c7\5 \21\2\u09c7\u09c8\7]\2\2\u09c8\u09c9\7\"\2\2\u09c9\u09cb\3\2"+ + "\2\2\u09ca\u099b\3\2\2\2\u09ca\u09a2\3\2\2\2\u09ca\u09a9\3\2\2\2\u09ca"+ + "\u09b0\3\2\2\2\u09ca\u09b6\3\2\2\2\u09ca\u09bf\3\2\2\2\u09ca\u09c6\3\2"+ + "\2\2\u09cb\u0195\3\2\2\2\u09cc\u09ce\7]\2\2\u09cd\u09cf\5,\27\2\u09ce"+ + "\u09cd\3\2\2\2\u09ce\u09cf\3\2\2\2\u09cf\u09d0\3\2\2\2\u09d0\u09d1\7i"+ + "\2\2\u09d1\u0197\3\2\2\2\u09d2\u09d3\5<\37\2\u09d3\u09d5\7]\2\2\u09d4"+ + "\u09d6\5,\27\2\u09d5\u09d4\3\2\2\2\u09d5\u09d6\3\2\2\2\u09d6\u09d7\3\2"+ + "\2\2\u09d7\u09d8\7i\2\2\u09d8\u09fb\3\2\2\2\u09d9\u09da\5\16\b\2\u09da"+ + "\u09dc\7]\2\2\u09db\u09dd\5,\27\2\u09dc\u09db\3\2\2\2\u09dc\u09dd\3\2"+ + "\2\2\u09dd\u09de\3\2\2\2\u09de\u09df\7i\2\2\u09df\u09fb\3\2\2\2\u09e0"+ + "\u09e1\7+\2\2\u09e1\u09e3\7]\2\2\u09e2\u09e4\5,\27\2\u09e3\u09e2\3\2\2"+ + "\2\u09e3\u09e4\3\2\2\2\u09e4\u09e5\3\2\2\2\u09e5\u09fb\7i\2\2\u09e6\u09e7"+ + "\58\35\2\u09e7\u09e8\7D\2\2\u09e8\u09e9\7+\2\2\u09e9\u09eb\7]\2\2\u09ea"+ + "\u09ec\5,\27\2\u09eb\u09ea\3\2\2\2\u09eb\u09ec\3\2\2\2\u09ec\u09ed\3\2"+ + "\2\2\u09ed\u09ee\7i\2\2\u09ee\u09fb\3\2\2\2\u09ef\u09f0\5\22\n\2\u09f0"+ + "\u09f2\7]\2\2\u09f1\u09f3\5,\27\2\u09f2\u09f1\3\2\2\2\u09f2\u09f3\3\2"+ + "\2\2\u09f3\u09f4\3\2\2\2\u09f4\u09f5\7\"\2\2\u09f5\u09fb\3\2\2\2\u09f6"+ + "\u09f7\5 \21\2\u09f7\u09f8\7]\2\2\u09f8\u09f9\7\"\2\2\u09f9\u09fb\3\2"+ + "\2\2\u09fa\u09d2\3\2\2\2\u09fa\u09d9\3\2\2\2\u09fa\u09e0\3\2\2\2\u09fa"+ + "\u09e6\3\2\2\2\u09fa\u09ef\3\2\2\2\u09fa\u09f6\3\2\2\2\u09fb\u0199\3\2"+ + "\2\2\u09fc\u09fd\7\"\2\2\u09fd\u09fe\5\6\4\2\u09fe\u0a00\5\u019c\u00cf"+ + "\2\u09ff\u0a01\5\"\22\2\u0a00\u09ff\3\2\2\2\u0a00\u0a01\3\2\2\2\u0a01"+ + "\u0a13\3\2\2\2\u0a02\u0a03\7\"\2\2\u0a03\u0a04\5\20\t\2\u0a04\u0a06\5"+ + "\u019c\u00cf\2\u0a05\u0a07\5\"\22\2\u0a06\u0a05\3\2\2\2\u0a06\u0a07\3"+ + "\2\2\2\u0a07\u0a13\3\2\2\2\u0a08\u0a09\7\"\2\2\u0a09\u0a0a\5\6\4\2\u0a0a"+ + "\u0a0b\5\"\22\2\u0a0b\u0a0c\5\u00fa~\2\u0a0c\u0a13\3\2\2\2\u0a0d\u0a0e"+ + "\7\"\2\2\u0a0e\u0a0f\5\20\t\2\u0a0f\u0a10\5\"\22\2\u0a10\u0a11\5\u00fa"+ + "~\2\u0a11\u0a13\3\2\2\2\u0a12\u09fc\3\2\2\2\u0a12\u0a02\3\2\2\2\u0a12"+ + "\u0a08\3\2\2\2\u0a12\u0a0d\3\2\2\2\u0a13\u019b\3\2\2\2\u0a14\u0a18\5\u019e"+ + "\u00d0\2\u0a15\u0a17\5\u019e\u00d0\2\u0a16\u0a15\3\2\2\2\u0a17\u0a1a\3"+ + "\2\2\2\u0a18\u0a16\3\2\2\2\u0a18\u0a19\3\2\2\2\u0a19\u019d\3\2\2\2\u0a1a"+ + "\u0a18\3\2\2\2\u0a1b\u0a1d\5\u00e8u\2\u0a1c\u0a1b\3\2\2\2\u0a1d\u0a20"+ + "\3\2\2\2\u0a1e\u0a1c\3\2\2\2\u0a1e\u0a1f\3\2\2\2\u0a1f\u0a21\3\2\2\2\u0a20"+ + "\u0a1e\3\2\2\2\u0a21\u0a22\7@\2\2\u0a22\u0a23\5\u01a2\u00d2\2\u0a23\u0a24"+ + "\7A\2\2\u0a24\u019f\3\2\2\2\u0a25\u0a26\5\u01a2\u00d2\2\u0a26\u01a1\3"+ + "\2\2\2\u0a27\u0a2a\5\u01a4\u00d3\2\u0a28\u0a2a\5\u01ac\u00d7\2\u0a29\u0a27"+ + "\3\2\2\2\u0a29\u0a28\3\2\2\2\u0a2a\u01a3\3\2\2\2\u0a2b\u0a2c\5\u01a6\u00d4"+ + "\2\u0a2c\u0a2d\7\\\2\2\u0a2d\u0a2e\5\u01aa\u00d6\2\u0a2e\u01a5\3\2\2\2"+ + "\u0a2f\u0a36\7i\2\2\u0a30\u0a32\7<\2\2\u0a31\u0a33\5\u0098M\2\u0a32\u0a31"+ + "\3\2\2\2\u0a32\u0a33\3\2\2\2\u0a33\u0a34\3\2\2\2\u0a34\u0a36\7=\2\2\u0a35"+ + "\u0a2f\3\2\2\2\u0a35\u0a30\3\2\2\2\u0a36\u01a7\3\2\2\2\u0a37\u0a3c\7i"+ + "\2\2\u0a38\u0a39\7C\2\2\u0a39\u0a3b\7i\2\2\u0a3a\u0a38\3\2\2\2\u0a3b\u0a3e"+ + "\3\2\2\2\u0a3c\u0a3a\3\2\2\2\u0a3c\u0a3d\3\2\2\2\u0a3d\u01a9\3\2\2\2\u0a3e"+ + "\u0a3c\3\2\2\2\u0a3f\u0a42\5\u01a2\u00d2\2\u0a40\u0a42\5\u00fe\u0080\2"+ + "\u0a41\u0a3f\3\2\2\2\u0a41\u0a40\3\2\2\2\u0a42\u01ab\3\2\2\2\u0a43\u0a46"+ + "\5\u01b4\u00db\2\u0a44\u0a46\5\u01ae\u00d8\2\u0a45\u0a43\3\2\2\2\u0a45"+ + "\u0a44\3\2\2\2\u0a46\u01ad\3\2\2\2\u0a47\u0a48\5\u01b0\u00d9\2\u0a48\u0a49"+ + "\5\u01b2\u00da\2\u0a49\u0a4a\5\u01a2\u00d2\2\u0a4a\u01af\3\2\2\2\u0a4b"+ + "\u0a4f\5<\37\2\u0a4c\u0a4f\5\u0180\u00c1\2\u0a4d\u0a4f\5\u0186\u00c4\2"+ + "\u0a4e\u0a4b\3\2\2\2\u0a4e\u0a4c\3\2\2\2\u0a4e\u0a4d\3\2\2\2\u0a4f\u01b1"+ + "\3\2\2\2\u0a50\u0a51\t\5\2\2\u0a51\u01b3\3\2\2\2\u0a52\u0a5a\5\u01b6\u00dc"+ + "\2\u0a53\u0a54\5\u01b6\u00dc\2\u0a54\u0a55\7J\2\2\u0a55\u0a56\5\u01a2"+ + "\u00d2\2\u0a56\u0a57\7K\2\2\u0a57\u0a58\5\u01b4\u00db\2\u0a58\u0a5a\3"+ + "\2\2\2\u0a59\u0a52\3\2\2\2\u0a59\u0a53\3\2\2\2\u0a5a\u01b5\3\2\2\2\u0a5b"+ + "\u0a5c\b\u00dc\1\2\u0a5c\u0a5d\5\u01b8\u00dd\2\u0a5d\u0a63\3\2\2\2\u0a5e"+ + "\u0a5f\f\3\2\2\u0a5f\u0a60\7Q\2\2\u0a60\u0a62\5\u01b8\u00dd\2\u0a61\u0a5e"+ + "\3\2\2\2\u0a62\u0a65\3\2\2\2\u0a63\u0a61\3\2\2\2\u0a63\u0a64\3\2\2\2\u0a64"+ + "\u01b7\3\2\2\2\u0a65\u0a63\3\2\2\2\u0a66\u0a67\b\u00dd\1\2\u0a67\u0a68"+ + "\5\u01ba\u00de\2\u0a68\u0a6e\3\2\2\2\u0a69\u0a6a\f\3\2\2\u0a6a\u0a6b\7"+ + "P\2\2\u0a6b\u0a6d\5\u01ba\u00de\2\u0a6c\u0a69\3\2\2\2\u0a6d\u0a70\3\2"+ + "\2\2\u0a6e\u0a6c\3\2\2\2\u0a6e\u0a6f\3\2\2\2\u0a6f\u01b9\3\2\2\2\u0a70"+ + "\u0a6e\3\2\2\2\u0a71\u0a72\b\u00de\1\2\u0a72\u0a73\5\u01bc\u00df\2\u0a73"+ + "\u0a79\3\2\2\2\u0a74\u0a75\f\3\2\2\u0a75\u0a76\7Y\2\2\u0a76\u0a78\5\u01bc"+ + "\u00df\2\u0a77\u0a74\3\2\2\2\u0a78\u0a7b\3\2\2\2\u0a79\u0a77\3\2\2\2\u0a79"+ + "\u0a7a\3\2\2\2\u0a7a\u01bb\3\2\2\2\u0a7b\u0a79\3\2\2\2\u0a7c\u0a7d\b\u00df"+ + "\1\2\u0a7d\u0a7e\5\u01be\u00e0\2\u0a7e\u0a84\3\2\2\2\u0a7f\u0a80\f\3\2"+ + "\2\u0a80\u0a81\7Z\2\2\u0a81\u0a83\5\u01be\u00e0\2\u0a82\u0a7f\3\2\2\2"+ + "\u0a83\u0a86\3\2\2\2\u0a84\u0a82\3\2\2\2\u0a84\u0a85\3\2\2\2\u0a85\u01bd"+ + "\3\2\2\2\u0a86\u0a84\3\2\2\2\u0a87\u0a88\b\u00e0\1\2\u0a88\u0a89\5\u01c0"+ + "\u00e1\2\u0a89\u0a8f\3\2\2\2\u0a8a\u0a8b\f\3\2\2\u0a8b\u0a8c\7X\2\2\u0a8c"+ + "\u0a8e\5\u01c0\u00e1\2\u0a8d\u0a8a\3\2\2\2\u0a8e\u0a91\3\2\2\2\u0a8f\u0a8d"+ + "\3\2\2\2\u0a8f\u0a90\3\2\2\2\u0a90\u01bf\3\2\2\2\u0a91\u0a8f\3\2\2\2\u0a92"+ + "\u0a93\b\u00e1\1\2\u0a93\u0a94\5\u01c2\u00e2\2\u0a94\u0a9d\3\2\2\2\u0a95"+ + "\u0a96\f\4\2\2\u0a96\u0a97\7L\2\2\u0a97\u0a9c\5\u01c2\u00e2\2\u0a98\u0a99"+ + "\f\3\2\2\u0a99\u0a9a\7O\2\2\u0a9a\u0a9c\5\u01c2\u00e2\2\u0a9b\u0a95\3"+ + "\2\2\2\u0a9b\u0a98\3\2\2\2\u0a9c\u0a9f\3\2\2\2\u0a9d\u0a9b\3\2\2\2\u0a9d"+ + "\u0a9e\3\2\2\2\u0a9e\u01c1\3\2\2\2\u0a9f\u0a9d\3\2\2\2\u0aa0\u0aa1\b\u00e2"+ + "\1\2\u0aa1\u0aa2\5\u01c4\u00e3\2\u0aa2\u0ab4\3\2\2\2\u0aa3\u0aa4\f\7\2"+ + "\2\u0aa4\u0aa5\7G\2\2\u0aa5\u0ab3\5\u01c4\u00e3\2\u0aa6\u0aa7\f\6\2\2"+ + "\u0aa7\u0aa8\7F\2\2\u0aa8\u0ab3\5\u01c4\u00e3\2\u0aa9\u0aaa\f\5\2\2\u0aaa"+ + "\u0aab\7M\2\2\u0aab\u0ab3\5\u01c4\u00e3\2\u0aac\u0aad\f\4\2\2\u0aad\u0aae"+ + "\7N\2\2\u0aae\u0ab3\5\u01c4\u00e3\2\u0aaf\u0ab0\f\3\2\2\u0ab0\u0ab1\7"+ + "\35\2\2\u0ab1\u0ab3\5\16\b\2\u0ab2\u0aa3\3\2\2\2\u0ab2\u0aa6\3\2\2\2\u0ab2"+ + "\u0aa9\3\2\2\2\u0ab2\u0aac\3\2\2\2\u0ab2\u0aaf\3\2\2\2\u0ab3\u0ab6\3\2"+ + "\2\2\u0ab4\u0ab2\3\2\2\2\u0ab4\u0ab5\3\2\2\2\u0ab5\u01c3\3\2\2\2\u0ab6"+ + "\u0ab4\3\2\2\2\u0ab7\u0ab8\b\u00e3\1\2\u0ab8\u0ab9\5\u01c6\u00e4\2\u0ab9"+ + "\u0ac9\3\2\2\2\u0aba\u0abb\f\5\2\2\u0abb\u0abc\7G\2\2\u0abc\u0abd\7G\2"+ + "\2\u0abd\u0ac8\5\u01c6\u00e4\2\u0abe\u0abf\f\4\2\2\u0abf\u0ac0\7F\2\2"+ + "\u0ac0\u0ac1\7F\2\2\u0ac1\u0ac8\5\u01c6\u00e4\2\u0ac2\u0ac3\f\3\2\2\u0ac3"+ + "\u0ac4\7F\2\2\u0ac4\u0ac5\7F\2\2\u0ac5\u0ac6\7F\2\2\u0ac6\u0ac8\5\u01c6"+ + "\u00e4\2\u0ac7\u0aba\3\2\2\2\u0ac7\u0abe\3\2\2\2\u0ac7\u0ac2\3\2\2\2\u0ac8"+ + "\u0acb\3\2\2\2\u0ac9\u0ac7\3\2\2\2\u0ac9\u0aca\3\2\2\2\u0aca\u01c5\3\2"+ + "\2\2\u0acb\u0ac9\3\2\2\2\u0acc\u0acd\b\u00e4\1\2\u0acd\u0ace\5\u01c8\u00e5"+ + "\2\u0ace\u0ad7\3\2\2\2\u0acf\u0ad0\f\4\2\2\u0ad0\u0ad1\7T\2\2\u0ad1\u0ad6"+ + "\5\u01c8\u00e5\2\u0ad2\u0ad3\f\3\2\2\u0ad3\u0ad4\7U\2\2\u0ad4\u0ad6\5"+ + "\u01c8\u00e5\2\u0ad5\u0acf\3\2\2\2\u0ad5\u0ad2\3\2\2\2\u0ad6\u0ad9\3\2"+ + "\2\2\u0ad7\u0ad5\3\2\2\2\u0ad7\u0ad8\3\2\2\2\u0ad8\u01c7\3\2\2\2\u0ad9"+ + "\u0ad7\3\2\2\2\u0ada\u0adb\b\u00e5\1\2\u0adb\u0adc\5\u01ca\u00e6\2\u0adc"+ + "\u0ae8\3\2\2\2\u0add\u0ade\f\5\2\2\u0ade\u0adf\7V\2\2\u0adf\u0ae7\5\u01ca"+ + "\u00e6\2\u0ae0\u0ae1\f\4\2\2\u0ae1\u0ae2\7W\2\2\u0ae2\u0ae7\5\u01ca\u00e6"+ + "\2\u0ae3\u0ae4\f\3\2\2\u0ae4\u0ae5\7[\2\2\u0ae5\u0ae7\5\u01ca\u00e6\2"+ + "\u0ae6\u0add\3\2\2\2\u0ae6\u0ae0\3\2\2\2\u0ae6\u0ae3\3\2\2\2\u0ae7\u0aea"+ + "\3\2\2\2\u0ae8\u0ae6\3\2\2\2\u0ae8\u0ae9\3\2\2\2\u0ae9\u01c9\3\2\2\2\u0aea"+ + "\u0ae8\3\2\2\2\u0aeb\u0af3\5\u01cc\u00e7\2\u0aec\u0af3\5\u01ce\u00e8\2"+ + "\u0aed\u0aee\7T\2\2\u0aee\u0af3\5\u01ca\u00e6\2\u0aef\u0af0\7U\2\2\u0af0"+ + "\u0af3\5\u01ca\u00e6\2\u0af1\u0af3\5\u01d0\u00e9\2\u0af2\u0aeb\3\2\2\2"+ + "\u0af2\u0aec\3\2\2\2\u0af2\u0aed\3\2\2\2\u0af2\u0aef\3\2\2\2\u0af2\u0af1"+ + "\3\2\2\2\u0af3\u01cb\3\2\2\2\u0af4\u0af5\7R\2\2\u0af5\u0af6\5\u01ca\u00e6"+ + "\2\u0af6\u01cd\3\2\2\2\u0af7\u0af8\7S\2\2\u0af8\u0af9\5\u01ca\u00e6\2"+ + "\u0af9\u01cf\3\2\2\2\u0afa\u0b01\5\u01d2\u00ea\2\u0afb\u0afc\7I\2\2\u0afc"+ + "\u0b01\5\u01ca\u00e6\2\u0afd\u0afe\7H\2\2\u0afe\u0b01\5\u01ca\u00e6\2"+ + "\u0aff\u0b01\5\u01dc\u00ef\2\u0b00\u0afa\3\2\2\2\u0b00\u0afb\3\2\2\2\u0b00"+ + "\u0afd\3\2\2\2\u0b00\u0aff\3\2\2\2\u0b01\u01d1\3\2\2\2\u0b02\u0b05\5\u0164"+ + "\u00b3\2\u0b03\u0b05\5<\37\2\u0b04\u0b02\3\2\2\2\u0b04\u0b03\3\2\2\2\u0b05"+ + "\u0b0a\3\2\2\2\u0b06\u0b09\5\u01d6\u00ec\2\u0b07\u0b09\5\u01da\u00ee\2"+ + "\u0b08\u0b06\3\2\2\2\u0b08\u0b07\3\2\2\2\u0b09\u0b0c\3\2\2\2\u0b0a\u0b08"+ + "\3\2\2\2\u0b0a\u0b0b\3\2\2\2\u0b0b\u01d3\3\2\2\2\u0b0c\u0b0a\3\2\2\2\u0b0d"+ + "\u0b0e\5\u01d2\u00ea\2\u0b0e\u0b0f\7R\2\2\u0b0f\u01d5\3\2\2\2\u0b10\u0b11"+ + "\7R\2\2\u0b11\u01d7\3\2\2\2\u0b12\u0b13\5\u01d2\u00ea\2\u0b13\u0b14\7"+ + "S\2\2\u0b14\u01d9\3\2\2\2\u0b15\u0b16\7S\2\2\u0b16\u01db\3\2\2\2\u0b17"+ + "\u0b18\7<\2\2\u0b18\u0b19\5\6\4\2\u0b19\u0b1a\7=\2\2\u0b1a\u0b1b\5\u01ca"+ + "\u00e6\2\u0b1b\u0b33\3\2\2\2\u0b1c\u0b1d\7<\2\2\u0b1d\u0b21\5\16\b\2\u0b1e"+ + "\u0b20\5*\26\2\u0b1f\u0b1e\3\2\2\2\u0b20\u0b23\3\2\2\2\u0b21\u0b1f\3\2"+ + "\2\2\u0b21\u0b22\3\2\2\2\u0b22\u0b24\3\2\2\2\u0b23\u0b21\3\2\2\2\u0b24"+ + "\u0b25\7=\2\2\u0b25\u0b26\5\u01d0\u00e9\2\u0b26\u0b33\3\2\2\2\u0b27\u0b28"+ + "\7<\2\2\u0b28\u0b2c\5\16\b\2\u0b29\u0b2b\5*\26\2\u0b2a\u0b29\3\2\2\2\u0b2b"+ + "\u0b2e\3\2\2\2\u0b2c\u0b2a\3\2\2\2\u0b2c\u0b2d\3\2\2\2\u0b2d\u0b2f\3\2"+ + "\2\2\u0b2e\u0b2c\3\2\2\2\u0b2f\u0b30\7=\2\2\u0b30\u0b31\5\u01a4\u00d3"+ + "\2\u0b31\u0b33\3\2\2\2\u0b32\u0b17\3\2\2\2\u0b32\u0b1c\3\2\2\2\u0b32\u0b27"+ + "\3\2\2\2\u0b33\u01dd\3\2\2\2\u014b\u01e2\u01e7\u01ee\u01f2\u01f6\u01ff"+ + "\u0203\u0207\u0209\u020f\u0214\u021b\u0220\u0222\u0228\u022d\u0232\u0237"+ + "\u0242\u0250\u0255\u025d\u0264\u026a\u026f\u027a\u027d\u028b\u0290\u0295"+ + "\u029a\u02a0\u02aa\u02b2\u02bc\u02c4\u02d0\u02d4\u02d9\u02df\u02e7\u02f0"+ + "\u02fb\u0318\u031c\u0321\u0327\u032a\u032d\u0339\u0344\u0352\u0359\u0361"+ + "\u0368\u036d\u0371\u037e\u0385\u038b\u038f\u0393\u0397\u039b\u03a0\u03a4"+ + "\u03a8\u03aa\u03af\u03b6\u03bb\u03bd\u03c3\u03c8\u03cc\u03df\u03e4\u03f4"+ + "\u03f7\u03fb\u0401\u0405\u0409\u040b\u040f\u0414\u0418\u041f\u0426\u042e"+ + "\u0431\u0436\u043a\u0440\u0445\u044c\u0453\u0458\u045e\u046a\u046f\u0473"+ + "\u047d\u0482\u048a\u048d\u0492\u049a\u049d\u04a2\u04a7\u04ac\u04b1\u04b8"+ + "\u04bd\u04c5\u04ca\u04cf\u04d4\u04da\u04e0\u04e3\u04e6\u04ef\u04f5\u04fb"+ + "\u04fe\u0501\u0509\u050e\u0513\u0519\u051c\u0527\u0530\u053a\u053f\u054a"+ + "\u054f\u055b\u0560\u056c\u0576\u057b\u0583\u0586\u058d\u0595\u059b\u05a4"+ + "\u05ae\u05b2\u05b5\u05be\u05cc\u05cf\u05d8\u05dd\u05e5\u05eb\u05f2\u05f7"+ + "\u0603\u060a\u0618\u062e\u0650\u065c\u0662\u066e\u067b\u0695\u0699\u069e"+ + "\u06a2\u06a6\u06ae\u06b2\u06b6\u06bd\u06c6\u06ce\u06dd\u06e9\u06ef\u06f5"+ + "\u070a\u070f\u0715\u0721\u072c\u0736\u0739\u073e\u0747\u074d\u0757\u075c"+ + "\u0765\u077c\u0786\u079c\u07a3\u07ab\u07b3\u07be\u07d5\u07df\u07ea\u0800"+ + "\u0804\u0809\u0811\u0817\u081b\u081f\u0823\u0829\u082e\u0833\u0837\u083b"+ + "\u0841\u0846\u084b\u084f\u0853\u0855\u085a\u085f\u0864\u0868\u086c\u0870"+ + "\u0875\u087d\u0883\u0887\u088b\u088f\u0895\u089a\u089f\u08a3\u08a7\u08a9"+ + "\u08ae\u08bd\u08cb\u08d7\u08e0\u08ef\u08fc\u0905\u090b\u0912\u0917\u091e"+ + "\u0923\u092a\u092f\u0936\u093b\u0943\u0948\u094c\u0950\u0955\u095c\u0963"+ + "\u0968\u096f\u0974\u097b\u0980\u0988\u098d\u0991\u0998\u099e\u09a5\u09ac"+ + "\u09b3\u09bb\u09c2\u09ca\u09ce\u09d5\u09dc\u09e3\u09eb\u09f2\u09fa\u0a00"+ + "\u0a06\u0a12\u0a18\u0a1e\u0a29\u0a32\u0a35\u0a3c\u0a41\u0a45\u0a4e\u0a59"+ + "\u0a63\u0a6e\u0a79\u0a84\u0a8f\u0a9b\u0a9d\u0ab2\u0ab4\u0ac7\u0ac9\u0ad5"+ + "\u0ad7\u0ae6\u0ae8\u0af2\u0b00\u0b04\u0b08\u0b0a\u0b21\u0b2c\u0b32"; public static final String _serializedATN = Utils.join( new String[] { _serializedATNSegment0, diff --git a/src/de/dhbwstuttgart/syntaxtree/Method.java b/src/de/dhbwstuttgart/syntaxtree/Method.java index 7b9480e4..350d8b15 100755 --- a/src/de/dhbwstuttgart/syntaxtree/Method.java +++ b/src/de/dhbwstuttgart/syntaxtree/Method.java @@ -7,6 +7,7 @@ import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceInformation; +import de.dhbwstuttgart.typeinference.typeAlgo.TYPE; import org.antlr.v4.runtime.Token; import de.dhbwstuttgart.core.IItemWithOffset; @@ -36,14 +37,11 @@ public class Method extends Field implements IItemWithOffset, TypeScope } public ConstraintSet getConstraints(TypeInferenceInformation info, ClassOrInterface currentClass) { - ConstraintSet ret = new ConstraintSet(); + if(block == null)return new ConstraintSet(); //Abstrakte Methoden generieren keine Constraints TypeInferenceBlockInformation blockInfo = new TypeInferenceBlockInformation(info.getAvailableClasses(), currentClass, this); - ret.addAll(block.getConstraints(blockInfo)); - /* - ret.addUndConstraint( - ConstraintsFactory.createPair(block.getType(), this.getType(), blockInfo)); - */ - return ret; + TYPE methodScope = new TYPE(blockInfo); + block.accept(methodScope); + return methodScope.getConstraints(); } public ParameterList getParameterList() { diff --git a/src/de/dhbwstuttgart/syntaxtree/SourceFile.java b/src/de/dhbwstuttgart/syntaxtree/SourceFile.java index e1f0fb44..ad51faa3 100755 --- a/src/de/dhbwstuttgart/syntaxtree/SourceFile.java +++ b/src/de/dhbwstuttgart/syntaxtree/SourceFile.java @@ -1,4 +1,5 @@ package de.dhbwstuttgart.syntaxtree; +import java.io.File; import java.util.*; @@ -6,39 +7,26 @@ import de.dhbwstuttgart.parser.NullToken; import de.dhbwstuttgart.typecheck.JavaClassName; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceInformation; +import sun.security.x509.X509CertInfo; public class SourceFile extends SyntaxTreeNode{ private String pkgName; - private List KlassenVektor = new ArrayList<>(); - private List imports; + private final List KlassenVektor; + private final List imports; + private final File file; - /** + /** * Die SourceFile repräsntiert eine zu einem Syntaxbaum eingelesene Java-Datei. * SourceFile stellt dabei den Wurzelknoten des Syntaxbaumes dar. */ - public SourceFile(String pkgName,List classDefinitions,List imports){ + public SourceFile(File file, String pkgName, List classDefinitions, List imports){ super(new NullToken()); this.KlassenVektor = classDefinitions; - if(pkgName != null){ - this.pkgName = pkgName; - } - if(imports != null){ - this.imports = imports; - } - } - - public SourceFile(List classDefinitions){ - this(null, classDefinitions, null); - } - - public SourceFile(String pkgName, List classDefinitions){ - this(pkgName, classDefinitions, null); - } - - public SourceFile(List classDefinitions, List imports){ - this(null, classDefinitions, imports); + this.pkgName = pkgName; + this.imports = imports; + this.file = file; } public String getPkgName(){ @@ -70,4 +58,8 @@ public class SourceFile extends SyntaxTreeNode{ public List getClasses() { return KlassenVektor; } + + public File getFile() { + return file; + } } diff --git a/src/de/dhbwstuttgart/syntaxtree/StatementVisitor.java b/src/de/dhbwstuttgart/syntaxtree/StatementVisitor.java new file mode 100644 index 00000000..eddaeece --- /dev/null +++ b/src/de/dhbwstuttgart/syntaxtree/StatementVisitor.java @@ -0,0 +1,61 @@ +package de.dhbwstuttgart.syntaxtree; + +import de.dhbwstuttgart.syntaxtree.statement.*; +import de.dhbwstuttgart.syntaxtree.statement.literal.Literal; +import de.dhbwstuttgart.syntaxtree.statement.literal.Null; +import de.dhbwstuttgart.syntaxtree.statement.literal.StringLiteral; + +public interface StatementVisitor { + + void visit(LambdaExpression lambdaExpression); + + void visit(Assign assign); + + void visit(Binary binary); + + void visit(Block block); + + void visit(CastExpr castExpr); + + void visit(EmptyStmt emptyStmt); + + void visit(FieldVar fieldVar); + + void visit(ForStmt forStmt); + + void visit(IfStmt ifStmt); + + void visit(InstanceOf instanceOf); + + void visit(InstVar instVar); + + void visit(LocalVar localVar); + + void visit(LocalVarDecl localVarDecl); + + void visit(MethodCall methodCall); + + void visit(NewClass methodCall); + + void visit(NewArray newArray); + + void visit(Receiver receiver); + + void visit(Return aReturn); + + void visit(ReturnVoid aReturn); + + void visit(StaticClassName staticClassName); + + void visit(Super aSuper); + + void visit(This aThis); + + void visit(UnaryPlus unaryPlus); + + void visit(WhileStmt whileStmt); + + void visit(Null aNull); + + void visit(Literal literal); +} diff --git a/src/de/dhbwstuttgart/syntaxtree/factory/UnifyTypeFactory.java b/src/de/dhbwstuttgart/syntaxtree/factory/UnifyTypeFactory.java index a76d347f..be99fb7c 100644 --- a/src/de/dhbwstuttgart/syntaxtree/factory/UnifyTypeFactory.java +++ b/src/de/dhbwstuttgart/syntaxtree/factory/UnifyTypeFactory.java @@ -1,12 +1,14 @@ package de.dhbwstuttgart.syntaxtree.factory; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; import de.dhbwstuttgart.exceptions.NotImplementedException; +import de.dhbwstuttgart.parser.NullToken; import de.dhbwstuttgart.syntaxtree.ClassOrInterface; import de.dhbwstuttgart.syntaxtree.type.*; +import de.dhbwstuttgart.syntaxtree.type.Void; +import de.dhbwstuttgart.typecheck.JavaClassName; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; import de.dhbwstuttgart.typeinference.constraints.Pair; import de.dhbwstuttgart.typeinference.unify.model.ExtendsType; @@ -99,7 +101,7 @@ public class UnifyTypeFactory { } public static UnifyType convert(GenericRefType t){ - return new PlaceholderType(TypePlaceholder.fresh(t.getOffset()).getName()); + return new ReferenceType(t.getUniqueIdentifier()); } public static UnifyType convert(WildcardType t){ @@ -132,61 +134,65 @@ public class UnifyTypeFactory { * Convert from * UnifyType -> ASTType */ -/* - public static Pair convert(UnifyPair mp) { - Type tl = UnifyTypeFactory.convert(mp.getLhsType()); - Type tr = UnifyTypeFactory.convert(mp.getRhsType()); + public static Set> convert(Set> unifyPairSet, Map tphs) { + return unifyPairSet.stream().map( + set -> set.stream().map( + unifyPair -> convert(unifyPair, tphs)) + .collect(Collectors.toSet())) + .collect(Collectors.toSet()); + } + + public static Pair convert(UnifyPair mp, Map tphs) { + RefTypeOrTPHOrWildcardOrGeneric tl = UnifyTypeFactory.convert(mp.getLhsType(), tphs); + RefTypeOrTPHOrWildcardOrGeneric tr = UnifyTypeFactory.convert(mp.getRhsType(), tphs); return new Pair(tl, tr, mp.getPairOp()); } - public static Type convert(ReferenceType t) { - //TODO: Hier kann man die GTVs extrahieren - if(t.getName().toString().equals(Void.VOID_NAME))return new Void( 0); - RefType ret = new RefType(t.getName(),0); - ret.set_ParaList(convert(t.getTypeParams())); + public static RefTypeOrTPHOrWildcardOrGeneric convert(ReferenceType t, Map tphs) { + if(JavaClassName.Void.equals(t.getName()))return new Void(new NullToken()); + RefType ret = new RefType(JavaClassName.Void,convert(t.getTypeParams(), tphs),new NullToken()); return ret; } - public static Type convert(FunNType t) { - RefType ret = new RefType(t.getName(),0); - ret.set_ParaList(convert(t.getTypeParams())); + public static RefTypeOrTPHOrWildcardOrGeneric convert(FunNType t, Map tphs) { + RefType ret = new RefType(new JavaClassName(t.getName()), convert(t.getTypeParams(), tphs), new NullToken()); return ret; } - public static Type convert(SuperType t) { - RefType innerType = new RefType(t.getSuperedType().getName(),0); - return new SuperWildcardType(innerType); + public static RefTypeOrTPHOrWildcardOrGeneric convert(SuperType t, Map tphs) { + RefType innerType = new RefType(new JavaClassName(t.getSuperedType().getName()), new NullToken()); + return new SuperWildcardType(innerType, new NullToken()); } - public static Type convert(ExtendsType t) { - RefType innerType = new RefType(t.getExtendedType().getName(),0); - return new ExtendsWildcardType(innerType); + public static RefTypeOrTPHOrWildcardOrGeneric convert(ExtendsType t, Map tphs) { + RefType innerType = new RefType(new JavaClassName(t.getExtendedType().getName()), new NullToken()); + return new ExtendsWildcardType(innerType, new NullToken()); } - public static Type convert(PlaceholderType t) { - TypePlaceholder ret = TypePlaceholder.getInstance(t.getName()); + public static RefTypeOrTPHOrWildcardOrGeneric convert(PlaceholderType t, Map tphs) { + TypePlaceholder ret = tphs.get(t.getName()); if(ret == null){ //Dieser TPH wurde vom Unifikationsalgorithmus erstellt - ret = TypePlaceholder.fresh(t.getName(), NULL_NODE); + ret = TypePlaceholder.fresh(new NullToken()); } return ret; } - public static Type convert(UnifyType t) { - if(t instanceof FunNType)return convert((FunNType) t); - if(t instanceof ReferenceType)return convert((ReferenceType) t); - if(t instanceof SuperType)return convert((SuperType) t); - if(t instanceof ExtendsType)return convert((ExtendsType) t); - if(t instanceof PlaceholderType)return convert((PlaceholderType) t); + public static RefTypeOrTPHOrWildcardOrGeneric convert(UnifyType t, Map tphs) { + if(t instanceof FunNType)return convert((FunNType) t, tphs); + if(t instanceof ReferenceType)return convert((ReferenceType) t, tphs); + if(t instanceof SuperType)return convert((SuperType) t, tphs); + if(t instanceof ExtendsType)return convert((ExtendsType) t, tphs); + if(t instanceof PlaceholderType)return convert((PlaceholderType) t, tphs); throw new NotImplementedException("Der Typ "+t+" kann nicht umgewandelt werden"); } - private static List convert(TypeParams typeParams) { - List ret = new ArrayList<>(); + private static List convert(TypeParams typeParams, Map tphs) { + List ret = new ArrayList<>(); for(UnifyType uT : typeParams){ - Type toAdd = convert(uT); + RefTypeOrTPHOrWildcardOrGeneric toAdd = convert(uT, tphs); ret.add(toAdd); } return ret; } -*/ + } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/Assign.java b/src/de/dhbwstuttgart/syntaxtree/statement/Assign.java index ae536e81..471093fb 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/Assign.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/Assign.java @@ -1,6 +1,7 @@ package de.dhbwstuttgart.syntaxtree.statement; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; import de.dhbwstuttgart.typeinference.constraints.ConstraintsFactory; @@ -10,21 +11,17 @@ import org.antlr.v4.runtime.Token; public class Assign extends Statement { - private final Expression rightSide; - private final LocalVar lefSide; + public final Expression rightSide; + public final Expression lefSide; - public Assign(LocalVar leftHandSide, Expression value, Token offset) { + public Assign(Expression leftHandSide, Expression value, Token offset) { super(leftHandSide.getType(), offset); this.rightSide = value; this.lefSide = leftHandSide; } @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - ConstraintSet ret = lefSide.getConstraints(info); - ret.addAll(rightSide.getConstraints(info)); - ret.addUndConstraint(ConstraintsFactory.createPair( - rightSide.getType(), lefSide.getType(), PairOperator.SMALLERDOT, info)); - return ret; + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/Binary.java b/src/de/dhbwstuttgart/syntaxtree/statement/Binary.java index 6bc137c2..321509f9 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/Binary.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/Binary.java @@ -1,6 +1,7 @@ package de.dhbwstuttgart.syntaxtree.statement; import de.dhbwstuttgart.exceptions.NotImplementedException; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceInformation; @@ -16,7 +17,7 @@ public class Binary extends Expression } @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - throw new NotImplementedException(); + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/Block.java b/src/de/dhbwstuttgart/syntaxtree/statement/Block.java index 04e4a106..73a92c7e 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/Block.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/Block.java @@ -1,6 +1,7 @@ package de.dhbwstuttgart.syntaxtree.statement; import java.util.*; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; @@ -24,12 +25,8 @@ public class Block extends Statement } @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - ConstraintSet ret = new ConstraintSet(); - for(Statement stmt : getStatements()){ - ret.addAll(stmt.getConstraints(info)); - } - return ret; + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/CastExpr.java b/src/de/dhbwstuttgart/syntaxtree/statement/CastExpr.java index f65c6880..15fedbbc 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/CastExpr.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/CastExpr.java @@ -1,6 +1,7 @@ package de.dhbwstuttgart.syntaxtree.statement; import de.dhbwstuttgart.exceptions.NotImplementedException; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; @@ -18,7 +19,7 @@ public class CastExpr extends Expression public Expression expr; @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - throw new NotImplementedException(); + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/EmptyStmt.java b/src/de/dhbwstuttgart/syntaxtree/statement/EmptyStmt.java index 1ae2df74..ff80e47f 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/EmptyStmt.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/EmptyStmt.java @@ -1,5 +1,6 @@ package de.dhbwstuttgart.syntaxtree.statement; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.syntaxtree.type.Void; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; @@ -14,9 +15,8 @@ public class EmptyStmt extends Statement super(new Void(offset),offset); } - @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - return new ConstraintSet(); + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/Expression.java b/src/de/dhbwstuttgart/syntaxtree/statement/Expression.java index cb15d409..07db361e 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/Expression.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/Expression.java @@ -1,6 +1,7 @@ package de.dhbwstuttgart.syntaxtree.statement; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; @@ -21,5 +22,5 @@ public abstract class Expression extends SyntaxTreeNode return type; } - public abstract ConstraintSet getConstraints(TypeInferenceBlockInformation info); + public abstract void accept(StatementVisitor visitor); } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/FieldVar.java b/src/de/dhbwstuttgart/syntaxtree/statement/FieldVar.java index 13274065..ba56fc5a 100644 --- a/src/de/dhbwstuttgart/syntaxtree/statement/FieldVar.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/FieldVar.java @@ -1,6 +1,7 @@ package de.dhbwstuttgart.syntaxtree.statement; import de.dhbwstuttgart.exceptions.TypeinferenceException; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; import de.dhbwstuttgart.typeinference.assumptions.FieldAssumption; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; @@ -15,8 +16,8 @@ import java.util.Set; public class FieldVar extends Expression { - private String fieldVarName; - public Expression receiver; + public final String fieldVarName; + public final Expression receiver; public FieldVar(Expression receiver, String fieldVarName, RefTypeOrTPHOrWildcardOrGeneric type, Token offset) { super(type, offset); @@ -25,21 +26,7 @@ public class FieldVar extends Expression { } @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - ConstraintSet ret = new ConstraintSet(); - Set oderConstraints = new HashSet<>(); - ret.addAll(receiver.getConstraints(info)); - for(FieldAssumption fieldAssumption : info.getFields(fieldVarName)){ - Constraint constraint = new Constraint(); - constraint.add(ConstraintsFactory.createPair( - receiver.getType(),fieldAssumption.getReceiverType(), info)); - constraint.add(ConstraintsFactory.createPair( - this.getType(),fieldAssumption.getType(), info)); - oderConstraints.add(constraint); - } - if(oderConstraints.size() == 0) - throw new TypeinferenceException("Kein Feld "+fieldVarName+ " gefunden", getOffset()); - ret.addOderConstraint(oderConstraints); - return ret; + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/ForStmt.java b/src/de/dhbwstuttgart/syntaxtree/statement/ForStmt.java index 2f20bd23..1f933366 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/ForStmt.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/ForStmt.java @@ -2,6 +2,7 @@ package de.dhbwstuttgart.syntaxtree.statement; import de.dhbwstuttgart.exceptions.NotImplementedException; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; @@ -21,9 +22,8 @@ public class ForStmt extends Statement super(null,null); } - @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - throw new NotImplementedException(); + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } \ No newline at end of file diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/IfStmt.java b/src/de/dhbwstuttgart/syntaxtree/statement/IfStmt.java index ec4145b9..090e954f 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/IfStmt.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/IfStmt.java @@ -1,5 +1,6 @@ package de.dhbwstuttgart.syntaxtree.statement; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceInformation; @@ -18,7 +19,7 @@ public class IfStmt extends Statement public Block else_block; @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - return null; + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/InstVar.java b/src/de/dhbwstuttgart/syntaxtree/statement/InstVar.java index 5ed2ee8e..021b5039 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/InstVar.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/InstVar.java @@ -1,6 +1,7 @@ package de.dhbwstuttgart.syntaxtree.statement; import de.dhbwstuttgart.exceptions.NotImplementedException; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceInformation; @@ -17,7 +18,7 @@ public class InstVar extends Expression } @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - throw new NotImplementedException(); + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/InstanceOf.java b/src/de/dhbwstuttgart/syntaxtree/statement/InstanceOf.java index a22d3313..154b5980 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/InstanceOf.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/InstanceOf.java @@ -1,6 +1,7 @@ package de.dhbwstuttgart.syntaxtree.statement; import de.dhbwstuttgart.exceptions.NotImplementedException; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; @@ -18,7 +19,7 @@ public class InstanceOf extends BinaryExpr } @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - throw new NotImplementedException(); + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java b/src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java index 2d9cf941..85624693 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java @@ -1,9 +1,6 @@ package de.dhbwstuttgart.syntaxtree.statement; -import de.dhbwstuttgart.syntaxtree.FormalParameter; -import de.dhbwstuttgart.syntaxtree.GenericTypeVar; -import de.dhbwstuttgart.syntaxtree.ParameterList; -import de.dhbwstuttgart.syntaxtree.TypeScope; +import de.dhbwstuttgart.syntaxtree.*; import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; @@ -15,29 +12,19 @@ import sun.reflect.generics.reflectiveObjects.NotImplementedException; import java.util.ArrayList; -/** - * @author A10023 - Andreas Stadelmeier - * Momentan erweitert LambdaExpression noch Expr und erbt dadurch auch von ExprStatement ist also auch ein Statement - * - * LambdaExpression Aufbau: - * ( ParameterList ) -> { methodBody }; - */ public class LambdaExpression extends Expression implements TypeScope { - private Block methodBody; - private ParameterList params; + public final Block methodBody; + public final ParameterList params; - public LambdaExpression(RefTypeOrTPHOrWildcardOrGeneric type, ParameterList params, Block methodBody,Token offset) { + public LambdaExpression(RefTypeOrTPHOrWildcardOrGeneric type, ParameterList params, Block methodBody, Token offset) { super(type,offset); this.methodBody = methodBody; this.params = params; } @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - TypeInferenceBlockInformation lambdaScope = new TypeInferenceBlockInformation(info, this); - ConstraintSet ret = methodBody.getConstraints(lambdaScope); - throw new NotImplementedException(); - //return ret; + public void accept(StatementVisitor visitor) { + visitor.visit(this); } @Override @@ -48,7 +35,8 @@ public class LambdaExpression extends Expression implements TypeScope { @Override public RefTypeOrTPHOrWildcardOrGeneric getReturnType() { - RefType type = (RefType) this.getType(); - return type.getParaList().get(0); + //RefType type = (RefType) this.getType(); + //return type.getParaList().get(0); + return methodBody.getType(); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/LocalVar.java b/src/de/dhbwstuttgart/syntaxtree/statement/LocalVar.java index d1d3fba6..3c703a6f 100644 --- a/src/de/dhbwstuttgart/syntaxtree/statement/LocalVar.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/LocalVar.java @@ -1,6 +1,8 @@ package de.dhbwstuttgart.syntaxtree.statement; import de.dhbwstuttgart.exceptions.NotImplementedException; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; +import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; @@ -11,21 +13,20 @@ public class LocalVar extends Statement{ protected final String expression; - public LocalVar(String n, Token offset) + public LocalVar(String n, RefTypeOrTPHOrWildcardOrGeneric type, Token offset) { - super(TypePlaceholder.fresh(offset),offset); + super(type,offset); this.expression = n; } - public LocalVar(Expression e1, String access) + public LocalVar(Expression e1, RefTypeOrTPHOrWildcardOrGeneric type, String access) { - super(TypePlaceholder.fresh(e1.getOffset()),e1.getOffset()); + super(type,e1.getOffset()); this.expression = access; } @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - //throw new NotImplementedException(); - return new ConstraintSet(); + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/LocalVarBunchDeclaration.java b/src/de/dhbwstuttgart/syntaxtree/statement/LocalVarBunchDeclaration.java deleted file mode 100644 index dc78c0e8..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/statement/LocalVarBunchDeclaration.java +++ /dev/null @@ -1,21 +0,0 @@ -package de.dhbwstuttgart.syntaxtree.statement; - -import de.dhbwstuttgart.exceptions.NotImplementedException; -import de.dhbwstuttgart.syntaxtree.type.Void; -import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; -import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; -import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceInformation; -import org.antlr.v4.runtime.Token; - -import java.util.List; - -public class LocalVarBunchDeclaration extends Statement { - public LocalVarBunchDeclaration(List declarations, Token start) { - super(new Void(start), start); - } - - @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - throw new NotImplementedException(); - } -} diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/LocalVarDecl.java b/src/de/dhbwstuttgart/syntaxtree/statement/LocalVarDecl.java index 87e996b1..fde48e51 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/LocalVarDecl.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/LocalVarDecl.java @@ -2,6 +2,7 @@ package de.dhbwstuttgart.syntaxtree.statement; import de.dhbwstuttgart.exceptions.NotImplementedException; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; @@ -20,7 +21,11 @@ public class LocalVarDecl extends Statement } @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - throw new NotImplementedException(); + public void accept(StatementVisitor visitor) { + visitor.visit(this); + } + + public String getName() { + return name; } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/MethodCall.java b/src/de/dhbwstuttgart/syntaxtree/statement/MethodCall.java index 30a8dfc8..771423d8 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/MethodCall.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/MethodCall.java @@ -1,10 +1,8 @@ package de.dhbwstuttgart.syntaxtree.statement; import de.dhbwstuttgart.exceptions.TypeinferenceException; -import de.dhbwstuttgart.syntaxtree.ClassOrInterface; -import de.dhbwstuttgart.syntaxtree.FormalParameter; -import de.dhbwstuttgart.syntaxtree.Method; -import de.dhbwstuttgart.syntaxtree.ParameterList; +import de.dhbwstuttgart.syntaxtree.*; +import de.dhbwstuttgart.syntaxtree.statement.literal.Null; import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; @@ -23,9 +21,9 @@ import java.util.*; public class MethodCall extends Statement { - private final String name; - private Receiver receiver; - private ArgumentList arglist; + public final String name; + public final Receiver receiver; + public final ArgumentList arglist; public MethodCall(RefTypeOrTPHOrWildcardOrGeneric retType, Receiver receiver, String methodName, ArgumentList argumentList, Token offset){ super(retType,offset); @@ -35,71 +33,11 @@ public class MethodCall extends Statement } @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - ConstraintSet ret = receiver.getConstraints(info); - ret.addAll(this.getArgumentListConstraints(info)); - //Overloading: - Set methodConstraints = new HashSet<>(); - for(MethodAssumption m : this.getMethods(name, arglist, info)){ - methodConstraints.add(generateConstraint(m, info)); - } - if(methodConstraints.size()<1){ - throw new TypeinferenceException("Methode "+name+" ist nicht vorhanden!",getOffset()); - } - ret.addOderConstraint(methodConstraints); - return ret; - } - - protected Constraint generateConstraint(MethodAssumption forMethod, TypeInferenceBlockInformation info){ - Constraint methodConstraint = new Constraint(); - methodConstraint.add(ConstraintsFactory.createPair(receiver.getType(), forMethod.getReceiverType(), PairOperator.SMALLERDOT, info)); - methodConstraint.add(ConstraintsFactory.createPair(forMethod.getReturnType(), this.getType(), PairOperator.SMALLERDOT, info)); - methodConstraint.addAll(generateParameterConstraints(forMethod, info)); - return methodConstraint; - } - - protected Set generateParameterConstraints(MethodAssumption forMethod, TypeInferenceBlockInformation info) { - Set ret = new HashSet<>(); - for(int i = 0;i getMethods(String name, ArgumentList arglist, TypeInferenceBlockInformation info) { - List ret = new ArrayList<>(); - for(ClassOrInterface cl : info.getAvailableClasses()){ - for(Method m : cl.getMethods()){ - if(m.getName().equals(name) && - m.getParameterList().getFormalparalist().size() == arglist.getArguments().size()){ - RefTypeOrTPHOrWildcardOrGeneric retType = info.checkGTV(m.getType()); - - ret.add(new MethodAssumption(cl.getType(), retType, convertParams(m.getParameterList(),info))); - } - } - } - return ret; - } - - protected List convertParams(ParameterList parameterList, TypeInferenceBlockInformation info){ - List params = new ArrayList<>(); - for(FormalParameter fp : parameterList.getFormalparalist()){ - params.add(info.checkGTV(fp.getType())); - } - return params; + public void accept(StatementVisitor visitor) { + visitor.visit(this); } public ArgumentList getArgumentList() { return arglist; } - - public ConstraintSet getArgumentListConstraints(TypeInferenceBlockInformation info) { - ConstraintSet ret = new ConstraintSet(); - for(int i = 0;i expr; - @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - throw new NotImplementedException(); + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/NewClass.java b/src/de/dhbwstuttgart/syntaxtree/statement/NewClass.java index ba13e83e..911fd056 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/NewClass.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/NewClass.java @@ -8,6 +8,7 @@ import de.dhbwstuttgart.exceptions.TypeinferenceException; import de.dhbwstuttgart.parser.NullToken; import de.dhbwstuttgart.syntaxtree.ClassOrInterface; import de.dhbwstuttgart.syntaxtree.Method; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; import de.dhbwstuttgart.typeinference.assumptions.MethodAssumption; @@ -33,46 +34,8 @@ public class NewClass extends MethodCall super(newClass, new Receiver(new EmptyStmt(start)), "new "+newClass.getName().toString(), args, start); } - public List getConstructors(TypeInferenceBlockInformation info, RefType ofType, ArgumentList argList){ - List ret = new ArrayList<>(); - for(ClassOrInterface cl : info.getAvailableClasses()){ - if(cl.getClassName().equals(ofType.getName())){ - for(Method m : cl.getConstructors()){ - if(m.getParameterList().getFormalparalist().size() == argList.getArguments().size()){ - ret.add(new MethodAssumption(ofType, ofType, convertParams(m.getParameterList(), info))); - } - } - } - } - return ret; - } - @Override - protected Constraint generateConstraint(MethodAssumption forMethod, TypeInferenceBlockInformation info){ - Constraint methodConstraint = new Constraint(); - methodConstraint.add(ConstraintsFactory.createPair(forMethod.getReturnType(), this.getType(), PairOperator.SMALLERDOT, info)); - methodConstraint.addAll(generateParameterConstraints(forMethod, info)); - return methodConstraint; - } - - @Override - public List getMethods(String name, ArgumentList arglist, TypeInferenceBlockInformation info) { - return getConstructors(info, (RefType) this.getType(), arglist); - } - - @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - ConstraintSet ret = new ConstraintSet(); - ret.addAll(this.getArgumentListConstraints(info)); - //Overloading: - Set methodConstraints = new HashSet<>(); - for(MethodAssumption m : this.getConstructors(info, (RefType) this.getType(), this.getArgumentList())){ - methodConstraints.add(generateConstraint(m, info)); - } - if(methodConstraints.size()<1){ - throw new TypeinferenceException("Konstruktor in Klasse "+this.getType().toString()+" ist nicht vorhanden!",getOffset()); - } - ret.addOderConstraint(methodConstraints); - return ret; + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/PostIncExpr.java b/src/de/dhbwstuttgart/syntaxtree/statement/PostIncExpr.java index 350c748f..1292192b 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/PostIncExpr.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/PostIncExpr.java @@ -12,8 +12,4 @@ public class PostIncExpr extends UnaryExpr super(null); } - @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - throw new NotImplementedException(); - } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/Receiver.java b/src/de/dhbwstuttgart/syntaxtree/statement/Receiver.java index d45dd60a..09bc191c 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/Receiver.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/Receiver.java @@ -1,13 +1,14 @@ package de.dhbwstuttgart.syntaxtree.statement; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceInformation; public class Receiver extends Expression { - private Expression expr; + public Expression expr; /** * Autor: J�rg B�uerle * @param expr @@ -19,7 +20,7 @@ public class Receiver extends Expression } @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - return expr.getConstraints(info); + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/Return.java b/src/de/dhbwstuttgart/syntaxtree/statement/Return.java index 6cfb719a..434f1ce9 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/Return.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/Return.java @@ -1,5 +1,6 @@ package de.dhbwstuttgart.syntaxtree.statement; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; import de.dhbwstuttgart.typeinference.constraints.ConstraintsFactory; @@ -8,7 +9,7 @@ import org.antlr.v4.runtime.Token; public class Return extends Statement { - private Expression retexpr; + public final Expression retexpr; public Return(Expression retExpr, Token offset) { @@ -17,10 +18,7 @@ public class Return extends Statement } @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - ConstraintSet ret = retexpr.getConstraints(info); - ret.addUndConstraint(ConstraintsFactory.createPair( - this.getType(),info.getCurrentTypeScope().getReturnType(), info)); - return ret; + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/ReturnVoid.java b/src/de/dhbwstuttgart/syntaxtree/statement/ReturnVoid.java index 1b5eae2d..ca64b2c5 100644 --- a/src/de/dhbwstuttgart/syntaxtree/statement/ReturnVoid.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/ReturnVoid.java @@ -1,9 +1,15 @@ package de.dhbwstuttgart.syntaxtree.statement; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import org.antlr.v4.runtime.Token; public class ReturnVoid extends Return{ public ReturnVoid(Token offset) { super(new EmptyStmt(offset), offset); } + + @Override + public void accept(StatementVisitor visitor) { + visitor.visit(this); + } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/StaticClassName.java b/src/de/dhbwstuttgart/syntaxtree/statement/StaticClassName.java index 2f6d35f4..536b6d41 100644 --- a/src/de/dhbwstuttgart/syntaxtree/statement/StaticClassName.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/StaticClassName.java @@ -1,5 +1,6 @@ package de.dhbwstuttgart.syntaxtree.statement; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.typecheck.JavaClassName; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; @@ -13,7 +14,7 @@ public class StaticClassName extends Expression { } @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - return new ConstraintSet(); + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/Super.java b/src/de/dhbwstuttgart/syntaxtree/statement/Super.java index 47f5d8cc..fbeba99b 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/Super.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/Super.java @@ -1,5 +1,6 @@ package de.dhbwstuttgart.syntaxtree.statement; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceInformation; @@ -14,7 +15,7 @@ public class Super extends Expression } @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - throw new NotImplementedException(); + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/This.java b/src/de/dhbwstuttgart/syntaxtree/statement/This.java index 25d732e5..f3084777 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/This.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/This.java @@ -1,5 +1,6 @@ package de.dhbwstuttgart.syntaxtree.statement; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.syntaxtree.operator.Operator; import de.dhbwstuttgart.syntaxtree.type.RefType; import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; @@ -23,9 +24,7 @@ public class This extends Expression public ArgumentList arglist; @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - ConstraintSet ret = new ConstraintSet(); - ret.addUndConstraint(ConstraintsFactory.createPair( this.getType(), info.getCurrentClass().getType(), PairOperator.EQUALSDOT, info)); - return ret; + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/UnaryPlus.java b/src/de/dhbwstuttgart/syntaxtree/statement/UnaryPlus.java index 7c0caf10..b374166f 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/UnaryPlus.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/UnaryPlus.java @@ -1,5 +1,6 @@ package de.dhbwstuttgart.syntaxtree.statement; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceInformation; @@ -13,7 +14,7 @@ public class UnaryPlus extends Expression } @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - throw new NotImplementedException(); + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/WhileStmt.java b/src/de/dhbwstuttgart/syntaxtree/statement/WhileStmt.java index 7641efb3..351133e6 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/WhileStmt.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/WhileStmt.java @@ -1,6 +1,7 @@ package de.dhbwstuttgart.syntaxtree.statement; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceInformation; @@ -25,9 +26,8 @@ public class WhileStmt extends Statement return "WHILE " + loop_block.toString(); } - @Override - public ConstraintSet getConstraints(TypeInferenceBlockInformation info) { - throw new NotImplementedException(); + public void accept(StatementVisitor visitor) { + visitor.visit(this); } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/literal/BoolLiteral.java b/src/de/dhbwstuttgart/syntaxtree/statement/literal/BoolLiteral.java index c42b4c91..29bdb47d 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/literal/BoolLiteral.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/literal/BoolLiteral.java @@ -1,5 +1,6 @@ package de.dhbwstuttgart.syntaxtree.statement.literal; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; import org.antlr.v4.runtime.Token; @@ -15,7 +16,11 @@ public class BoolLiteral extends Literal this.value = value; } - + + @Override + public void accept(StatementVisitor visitor) { + visitor.visit(this); + } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/literal/CharLiteral.java b/src/de/dhbwstuttgart/syntaxtree/statement/literal/CharLiteral.java index 6f1c7959..7e379690 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/literal/CharLiteral.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/literal/CharLiteral.java @@ -1,4 +1,5 @@ package de.dhbwstuttgart.syntaxtree.statement.literal; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; import org.antlr.v4.runtime.Token; @@ -13,4 +14,8 @@ public class CharLiteral extends Literal this.value = value; } + @Override + public void accept(StatementVisitor visitor) { + visitor.visit(this); + } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/literal/Null.java b/src/de/dhbwstuttgart/syntaxtree/statement/literal/Null.java index 38a73406..254408e8 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/literal/Null.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/literal/Null.java @@ -1,5 +1,6 @@ package de.dhbwstuttgart.syntaxtree.statement.literal; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; import org.antlr.v4.runtime.Token; @@ -11,5 +12,10 @@ public class Null extends Literal { super(type,offset); } - + + @Override + public void accept(StatementVisitor visitor) { + visitor.visit(this); + } + } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/literal/NumberLiteral.java b/src/de/dhbwstuttgart/syntaxtree/statement/literal/NumberLiteral.java index aef0012d..2c90f413 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/literal/NumberLiteral.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/literal/NumberLiteral.java @@ -1,5 +1,6 @@ package de.dhbwstuttgart.syntaxtree.statement.literal; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; import org.antlr.v4.runtime.Token; @@ -14,4 +15,8 @@ public class NumberLiteral extends Literal this.value = value; } + @Override + public void accept(StatementVisitor visitor) { + visitor.visit(this); + } } diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/literal/StringLiteral.java b/src/de/dhbwstuttgart/syntaxtree/statement/literal/StringLiteral.java index 89219051..d6ab9808 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/literal/StringLiteral.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/literal/StringLiteral.java @@ -1,6 +1,7 @@ package de.dhbwstuttgart.syntaxtree.statement.literal; +import de.dhbwstuttgart.syntaxtree.StatementVisitor; import de.dhbwstuttgart.syntaxtree.type.RefType; import org.antlr.v4.runtime.Token; @@ -15,4 +16,8 @@ public class StringLiteral extends Literal this.value = value; } + @Override + public void accept(StatementVisitor visitor) { + visitor.visit(this); + } } diff --git a/src/de/dhbwstuttgart/syntaxtree/type/FunVoidN.java b/src/de/dhbwstuttgart/syntaxtree/type/FunVoidN.java deleted file mode 100644 index 02543c39..00000000 --- a/src/de/dhbwstuttgart/syntaxtree/type/FunVoidN.java +++ /dev/null @@ -1,42 +0,0 @@ -package de.dhbwstuttgart.syntaxtree.type; - - -import java.util.ArrayList; -import java.util.List; - -/** - * FunVoid { - * void apply(T1 arg1, ... TN argN); - * } - * @author A10023 - Andreas Stadelmeier - * - */ -public class FunVoidN extends FunN { - - private RefTypeOrTPHOrWildcardOrGeneric R; - private List T; - - /** - * @author Andreas Stadelmeier, a10023 - * Benötigt für den Typinferenzalgorithmus für Java 8 - * Generiert einen RefType auf eine FunVoidN - Klasse. - * @param T - * @return - */ - public FunVoidN(List T) { - super(null,T); - } - - - - /** - * Muss nach jeder Änderung von T oder R aufgerufen werden. - * Dabei werden bestimmte, von RefType geerbte, Parameter angepasst. Dies ist wichtig für den Typinferenzalgorithmus. - */ - private void calculateNewParalist(){ - List t = new ArrayList<>(); - if(T!=null)t.addAll(T); - this.parameter = t; - } - -} diff --git a/src/de/dhbwstuttgart/syntaxtree/type/GenericRefType.java b/src/de/dhbwstuttgart/syntaxtree/type/GenericRefType.java index 8d36c0bb..8a50c726 100755 --- a/src/de/dhbwstuttgart/syntaxtree/type/GenericRefType.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/GenericRefType.java @@ -17,5 +17,8 @@ public class GenericRefType extends RefTypeOrTPHOrWildcardOrGeneric return name; } + public String getUniqueIdentifier(){ + return name.toString(); + } } diff --git a/src/de/dhbwstuttgart/syntaxtree/type/RefType.java b/src/de/dhbwstuttgart/syntaxtree/type/RefType.java index 40c92ebb..bd370c3f 100755 --- a/src/de/dhbwstuttgart/syntaxtree/type/RefType.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/RefType.java @@ -16,8 +16,8 @@ public class RefType extends RefTypeOrTPHOrWildcardOrGeneric * Bsp.: 9| tag = CONSTANT_Utf8, length = 21, (Ljava/lang/String;)V */ private boolean IsArray = false; - protected JavaClassName name; - protected List parameter = null; + protected final JavaClassName name; + protected final List parameter; /** * Ist primitiveFlag auf true, muss beim Codegen dieser Reftype durch * den primitiven Datentyp ersetzt werden @@ -28,8 +28,7 @@ public class RefType extends RefTypeOrTPHOrWildcardOrGeneric public RefType(JavaClassName fullyQualifiedName, Token offset) { - super(offset); - this.name = (fullyQualifiedName); + this(fullyQualifiedName, null, offset); } @Override @@ -42,13 +41,14 @@ public class RefType extends RefTypeOrTPHOrWildcardOrGeneric int hash = 0; hash += super.hashCode(); hash += this.name.hashCode();//Nur den Name hashen. Sorgt für langsame, aber funktionierende HashMaps - return hash; + return hash; } public RefType(JavaClassName fullyQualifiedName, List parameter, Token offset) { - this(fullyQualifiedName, offset); - if(parameter != null && parameter.size()>0)this.parameter = parameter; + super(offset); + this.name = (fullyQualifiedName); + this.parameter = parameter; } public JavaClassName getName() diff --git a/src/de/dhbwstuttgart/syntaxtree/type/SuperWildcardType.java b/src/de/dhbwstuttgart/syntaxtree/type/SuperWildcardType.java index fdb36193..babc0a31 100755 --- a/src/de/dhbwstuttgart/syntaxtree/type/SuperWildcardType.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/SuperWildcardType.java @@ -17,7 +17,7 @@ public class SuperWildcardType extends WildcardType{ * Author: Arne Lüdtke
* Standard Konstruktor für eine SuperWildcard */ - public SuperWildcardType(Token offset, RefType innerType) + public SuperWildcardType( RefType innerType, Token offset) { super(innerType, offset); } diff --git a/src/de/dhbwstuttgart/syntaxtree/type/TypePlaceholder.java b/src/de/dhbwstuttgart/syntaxtree/type/TypePlaceholder.java index 7759fdf8..82f7e298 100755 --- a/src/de/dhbwstuttgart/syntaxtree/type/TypePlaceholder.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/TypePlaceholder.java @@ -15,10 +15,7 @@ import org.antlr.v4.runtime.Token; */ public class TypePlaceholder extends RefTypeOrTPHOrWildcardOrGeneric { - - private static Hashtable m_TypePlaceholdersRegistry = new Hashtable(); - - private final String name; + private final String name; @@ -32,30 +29,6 @@ public class TypePlaceholder extends RefTypeOrTPHOrWildcardOrGeneric super(offset); this.name = name; } - - /** - * Statische Methode, um einen TypePlaceholder aus der Registry zu holen. - *
Author: J�rg B�uerle - * @param name Der Name des TypePlaceholders - * @return Der TypePlaceholder oder null, falls er nicht in der - * Registry existiert - - public static TypePlaceholder getInstance(String name) - { - return m_TypePlaceholdersRegistry.get(name); - } - */ - - /** - * Generiert einen neuen TPH mit einem bestimmten Namen. - * Wird benötigt, wenn aus Generischen Variablen TPH generiert werden. - * @param name - * @return - */ - public static TypePlaceholder fresh(String name, SyntaxTreeNode parent) - { - return null; - } /** diff --git a/src/de/dhbwstuttgart/typecheck/GenericTypeName.java b/src/de/dhbwstuttgart/typecheck/GenericTypeName.java index d6321fa7..f3abf4d3 100644 --- a/src/de/dhbwstuttgart/typecheck/GenericTypeName.java +++ b/src/de/dhbwstuttgart/typecheck/GenericTypeName.java @@ -1,6 +1,7 @@ package de.dhbwstuttgart.typecheck; import de.dhbwstuttgart.parser.SyntaxTreeGenerator.GenericContext; +import jdk.nashorn.internal.ir.Node; public class GenericTypeName extends JavaClassName { private final static String DELIMITER = "%"; @@ -8,10 +9,10 @@ public class GenericTypeName extends JavaClassName { private final JavaClassName parentClass; private final String methodName; - public GenericTypeName(GenericContext parentClass, String name) { + public GenericTypeName(GenericContext genericContext, String name) { super(name); - this.parentClass = parentClass.parentClass; - this.methodName = parentClass.parentMethod; + this.parentClass = genericContext.parentClass; + this.methodName = genericContext.parentMethod; } public String toString(){ @@ -19,4 +20,8 @@ public class GenericTypeName extends JavaClassName { + DELIMITER + methodName + DELIMITER + super.toString(); } + + public String getShortName() { + return super.toString(); + } } diff --git a/src/de/dhbwstuttgart/typedeployment/TypeInsertFactory.java b/src/de/dhbwstuttgart/typedeployment/TypeInsertFactory.java new file mode 100644 index 00000000..3af59dc1 --- /dev/null +++ b/src/de/dhbwstuttgart/typedeployment/TypeInsertFactory.java @@ -0,0 +1,54 @@ +package de.dhbwstuttgart.typedeployment; + +import de.dhbwstuttgart.exceptions.NotImplementedException; +import de.dhbwstuttgart.syntaxtree.*; +import de.dhbwstuttgart.syntaxtree.type.GenericRefType; +import de.dhbwstuttgart.syntaxtree.type.RefType; +import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; +import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; +import de.dhbwstuttgart.typeinference.ResultSet; + +import java.util.ArrayList; +import java.util.List; + +public class TypeInsertFactory { + public static List createTypeInsertPoints(SourceFile forSourcefile, ResultSet withResults){ + List ret = new ArrayList<>(); + for(ClassOrInterface cl : forSourcefile.getClasses()){ + //Felder: + for(Field field : cl.getFieldDecl()){ + if(field.getType() instanceof TypePlaceholder){ + RefTypeOrTPHOrWildcardOrGeneric resolved = withResults.resolveType(field.getType()); + String toInsert = getString(resolved) + " "; + ret.add(new TypeInsertPoint(field.getType().getOffset(), toInsert)); + } + } + + for(Method m : cl.getMethods()){ + RefTypeOrTPHOrWildcardOrGeneric resolved = withResults.resolveType(m.getReturnType()); + String toInsert = getString(resolved) + " "; + ret.add(new TypeInsertPoint(m.getReturnType().getOffset(), toInsert)); + + for(FormalParameter param : m.getParameterList().getFormalparalist()){ + resolved = withResults.resolveType(param.getType()); + toInsert = getString(resolved) + " "; + ret.add(new TypeInsertPoint(param.getType().getOffset(), toInsert)); + + } + } + } + return ret; + } + + private static String getString(RefTypeOrTPHOrWildcardOrGeneric resolved) { + if(resolved instanceof RefType){ + return ((RefType) resolved).getName().toString(); + }else if(resolved instanceof TypePlaceholder){ + return ((TypePlaceholder) resolved).getName(); + }else if(resolved instanceof GenericRefType){ + return ((GenericRefType)resolved).getName().getShortName().toString(); + }else{ + throw new NotImplementedException(); + } + } +} diff --git a/src/de/dhbwstuttgart/typeinference/ResultSet.java b/src/de/dhbwstuttgart/typeinference/ResultSet.java index e8dbb6d7..44890576 100644 --- a/src/de/dhbwstuttgart/typeinference/ResultSet.java +++ b/src/de/dhbwstuttgart/typeinference/ResultSet.java @@ -1,11 +1,36 @@ package de.dhbwstuttgart.typeinference; +import de.dhbwstuttgart.exceptions.NotImplementedException; +import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; +import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; +import de.dhbwstuttgart.typeinference.constraints.Pair; +import de.dhbwstuttgart.typeinference.unify.model.PairOperator; import de.dhbwstuttgart.typeinference.unify.model.UnifyPair; import java.util.Set; public class ResultSet { - public ResultSet(Set> results){ + Set> results; + public ResultSet(Set> results){ + this.results = results; + } + public RefTypeOrTPHOrWildcardOrGeneric resolveType(RefTypeOrTPHOrWildcardOrGeneric type) { + /*//Probleme: + * Es müssen teilweise mehrere TPH eingesetzt werden + * Es werden alle eingesetzt, welch in der Kette stehen! + * TPHs müssen zu eindeutigen Namen aufgelöst werden + */ + final RefTypeOrTPHOrWildcardOrGeneric ret; + for(Set pairs : results)for(Pair pair : pairs){ + if(pair.OperatorEqual()){ //type ist vom Typ TypePlaceholder + if(pair.TA1.equals(type)){ + return pair.TA2; + }else if(pair.TA2.equals(type)){ + return pair.TA1; + } + } + } + return type; } } diff --git a/src/de/dhbwstuttgart/typeinference/constraints/Pair.java b/src/de/dhbwstuttgart/typeinference/constraints/Pair.java index a1986c50..c7e1f6b6 100644 --- a/src/de/dhbwstuttgart/typeinference/constraints/Pair.java +++ b/src/de/dhbwstuttgart/typeinference/constraints/Pair.java @@ -3,17 +3,16 @@ import java.io.Serializable; import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; import de.dhbwstuttgart.typeinference.unify.model.PairOperator; -import de.dhbwstuttgart.typeinference.unify.model.UnifyPair; public class Pair implements Serializable { - public RefTypeOrTPHOrWildcardOrGeneric TA1; - public RefTypeOrTPHOrWildcardOrGeneric TA2; + public final RefTypeOrTPHOrWildcardOrGeneric TA1; + public final RefTypeOrTPHOrWildcardOrGeneric TA2; private PairOperator eOperator = PairOperator.SMALLER; - Pair(RefTypeOrTPHOrWildcardOrGeneric TA1, RefTypeOrTPHOrWildcardOrGeneric TA2 ) + public Pair(RefTypeOrTPHOrWildcardOrGeneric TA1, RefTypeOrTPHOrWildcardOrGeneric TA2 ) { this.TA1 = TA1; this.TA2 = TA2; @@ -22,7 +21,7 @@ public class Pair implements Serializable eOperator = PairOperator.SMALLER; } - Pair(RefTypeOrTPHOrWildcardOrGeneric TA1, RefTypeOrTPHOrWildcardOrGeneric TA2, PairOperator eOp) + public Pair(RefTypeOrTPHOrWildcardOrGeneric TA1, RefTypeOrTPHOrWildcardOrGeneric TA2, PairOperator eOp) { // Konstruktor this(TA1,TA2); diff --git a/src/de/dhbwstuttgart/typeinference/typeAlgo/TYPE.java b/src/de/dhbwstuttgart/typeinference/typeAlgo/TYPE.java new file mode 100644 index 00000000..7a0cad92 --- /dev/null +++ b/src/de/dhbwstuttgart/typeinference/typeAlgo/TYPE.java @@ -0,0 +1,279 @@ +package de.dhbwstuttgart.typeinference.typeAlgo; + +import de.dhbwstuttgart.exceptions.NotImplementedException; +import de.dhbwstuttgart.exceptions.TypeinferenceException; +import de.dhbwstuttgart.syntaxtree.*; +import de.dhbwstuttgart.syntaxtree.statement.*; +import de.dhbwstuttgart.syntaxtree.statement.literal.Literal; +import de.dhbwstuttgart.syntaxtree.statement.literal.Null; +import de.dhbwstuttgart.syntaxtree.type.RefType; +import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; +import de.dhbwstuttgart.typeinference.assumptions.FieldAssumption; +import de.dhbwstuttgart.typeinference.assumptions.MethodAssumption; +import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation; +import de.dhbwstuttgart.typeinference.constraints.Constraint; +import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; +import de.dhbwstuttgart.typeinference.constraints.ConstraintsFactory; +import de.dhbwstuttgart.typeinference.constraints.Pair; +import de.dhbwstuttgart.typeinference.unify.model.PairOperator; + +import java.util.*; + +public class TYPE implements StatementVisitor{ + + private final TypeInferenceBlockInformation info; + private final ConstraintSet constraintsSet = new ConstraintSet(); + + public TYPE(TypeInferenceBlockInformation info){ + this.info = info; + } + + public ConstraintSet getConstraints() { + return constraintsSet; + } + + @Override + public void visit(LambdaExpression lambdaExpression) { + TYPE lambdaScope = new TYPE(new TypeInferenceBlockInformation(info, lambdaExpression)); + lambdaExpression.methodBody.accept(lambdaScope); + constraintsSet.addAll(lambdaScope.getConstraints()); + } + + @Override + public void visit(Assign assign) { + assign.lefSide.accept(this); + assign.rightSide.accept(this); + constraintsSet.addUndConstraint(ConstraintsFactory.createPair( + assign.rightSide.getType(), assign.lefSide.getType(), PairOperator.SMALLERDOT, info)); + } + + @Override + public void visit(Binary binary) { + throw new NotImplementedException(); + } + + @Override + public void visit(Block block) { + for(Statement stmt : block.getStatements()){ + stmt.accept(this); + } + } + + @Override + public void visit(CastExpr castExpr) { + throw new NotImplementedException(); + } + + @Override + public void visit(EmptyStmt emptyStmt) { + //Nothing :) + } + + @Override + public void visit(FieldVar fieldVar) { + fieldVar.receiver.accept(this); + Set oderConstraints = new HashSet<>(); + for(FieldAssumption fieldAssumption : info.getFields(fieldVar.fieldVarName)){ + Constraint constraint = new Constraint(); + constraint.add(ConstraintsFactory.createPair( + fieldVar.receiver.getType(),fieldAssumption.getReceiverType(), info)); + constraint.add(ConstraintsFactory.createPair( + fieldVar.getType(),fieldAssumption.getType(), info)); + oderConstraints.add(constraint); + } + if(oderConstraints.size() == 0) + throw new TypeinferenceException("Kein Feld "+fieldVar.fieldVarName+ " gefunden", fieldVar.getOffset()); + constraintsSet.addOderConstraint(oderConstraints); + } + + @Override + public void visit(ForStmt forStmt) { + throw new NotImplementedException(); + } + + @Override + public void visit(IfStmt ifStmt) { + throw new NotImplementedException(); + } + + @Override + public void visit(InstanceOf instanceOf) { + throw new NotImplementedException(); + } + + @Override + public void visit(InstVar instVar) { + throw new NotImplementedException(); + } + + @Override + public void visit(LocalVar localVar) { + // Es werden nur bei Feldvariablen Constraints generiert. Lokale Variablen sind eindeutig + } + + @Override + public void visit(LocalVarDecl localVarDecl) { + //Hier ist nichts zu tun. Allen lokalen Variablen bekommen beim parsen schon den korrekten Typ + } + + @Override + public void visit(MethodCall methodCall) { + methodCall.receiver.accept(this); + constraintsSet.addAll(this.getArgumentListConstraints(methodCall, info)); + //Overloading: + Set methodConstraints = new HashSet<>(); + for(MethodAssumption m : this.getMethods(methodCall.name, methodCall.arglist, info)){ + methodConstraints.add(generateConstraint(methodCall, m, info)); + } + if(methodConstraints.size()<1){ + throw new TypeinferenceException("Methode "+methodCall.name+" ist nicht vorhanden!",methodCall.getOffset()); + } + constraintsSet.addOderConstraint(methodConstraints); + } + + @Override + public void visit(NewClass methodCall) { + constraintsSet.addAll(this.getArgumentListConstraints(methodCall, info)); + //Overloading: + Set methodConstraints = new HashSet<>(); + for(MethodAssumption m : this.getConstructors(info, (RefType) methodCall.getType(), methodCall.getArgumentList())){ + methodConstraints.add(generateConstructorConstraint(methodCall, m, info)); + } + if(methodConstraints.size()<1){ + throw new TypeinferenceException("Konstruktor in Klasse "+methodCall.getType().toString()+" ist nicht vorhanden!",methodCall.getOffset()); + } + constraintsSet.addOderConstraint(methodConstraints); + } + + @Override + public void visit(NewArray newArray) { + throw new NotImplementedException(); + } + + @Override + public void visit(Receiver receiver) { + receiver.expr.accept(this); + } + + @Override + public void visit(Return returnExpr) { + returnExpr.retexpr.accept(this); + constraintsSet.addUndConstraint(ConstraintsFactory.createPair( + returnExpr.getType(),info.getCurrentTypeScope().getReturnType(), info)); + } + + @Override + public void visit(ReturnVoid aReturn) { + visit((Return) aReturn); + } + + @Override + public void visit(StaticClassName staticClassName) { + throw new NotImplementedException(); + } + + @Override + public void visit(Super aSuper) { + throw new NotImplementedException(); + } + + @Override + public void visit(This aThis) { + constraintsSet.addUndConstraint(ConstraintsFactory.createPair( aThis.getType(), info.getCurrentClass().getType(), PairOperator.EQUALSDOT, info)); + } + + @Override + public void visit(UnaryPlus unaryPlus) { + throw new NotImplementedException(); + } + + @Override + public void visit(WhileStmt whileStmt) { + throw new NotImplementedException(); + } + + @Override + public void visit(Null aNull) { + throw new NotImplementedException(); + } + + @Override + public void visit(Literal literal) { + throw new NotImplementedException(); + } + + /* + METHOD CALL Section: + */ + + protected Constraint generateConstraint(MethodCall forMethod, MethodAssumption assumption, TypeInferenceBlockInformation info){ + Constraint methodConstraint = new Constraint(); + methodConstraint.add(ConstraintsFactory.createPair(forMethod.receiver.getType(), assumption.getReceiverType(), PairOperator.SMALLERDOT, info)); + methodConstraint.add(ConstraintsFactory.createPair(assumption.getReturnType(), forMethod.getType(), PairOperator.SMALLERDOT, info)); + methodConstraint.addAll(generateParameterConstraints(forMethod, assumption, info)); + return methodConstraint; + } + + protected Set generateParameterConstraints(MethodCall foMethod, MethodAssumption assumption, TypeInferenceBlockInformation info) { + Set ret = new HashSet<>(); + for(int i = 0;i getMethods(String name, ArgumentList arglist, TypeInferenceBlockInformation info) { + List ret = new ArrayList<>(); + for(ClassOrInterface cl : info.getAvailableClasses()){ + for(Method m : cl.getMethods()){ + if(m.getName().equals(name) && + m.getParameterList().getFormalparalist().size() == arglist.getArguments().size()){ + RefTypeOrTPHOrWildcardOrGeneric retType = info.checkGTV(m.getType()); + + ret.add(new MethodAssumption(cl.getType(), retType, convertParams(m.getParameterList(),info))); + } + } + } + return ret; + } + + protected static List convertParams(ParameterList parameterList, TypeInferenceBlockInformation info){ + List params = new ArrayList<>(); + for(FormalParameter fp : parameterList.getFormalparalist()){ + params.add(info.checkGTV(fp.getType())); + } + return params; + } + + public ConstraintSet getArgumentListConstraints(MethodCall forMethod, TypeInferenceBlockInformation info) { + TYPE ret = new TYPE(info); + for(int i = 0;i getConstructors(TypeInferenceBlockInformation info, RefType ofType, ArgumentList argList){ + List ret = new ArrayList<>(); + for(ClassOrInterface cl : info.getAvailableClasses()){ + if(cl.getClassName().equals(ofType.getName())){ + for(Method m : cl.getConstructors()){ + if(m.getParameterList().getFormalparalist().size() == argList.getArguments().size()){ + ret.add(new MethodAssumption(ofType, ofType, convertParams(m.getParameterList(), info))); + } + } + } + } + return ret; + } + + protected Constraint generateConstructorConstraint(NewClass forConstructor, MethodAssumption assumption, TypeInferenceBlockInformation info){ + Constraint methodConstraint = new Constraint(); + methodConstraint.add(ConstraintsFactory.createPair(assumption.getReturnType(), forConstructor.getType(), PairOperator.SMALLERDOT, info)); + methodConstraint.addAll(generateParameterConstraints(forConstructor, assumption, info)); + return methodConstraint; + } + +} diff --git a/src/de/dhbwstuttgart/typeinference/unify/model/UnifyPair.java b/src/de/dhbwstuttgart/typeinference/unify/model/UnifyPair.java index 988f9b7a..0909690a 100644 --- a/src/de/dhbwstuttgart/typeinference/unify/model/UnifyPair.java +++ b/src/de/dhbwstuttgart/typeinference/unify/model/UnifyPair.java @@ -8,7 +8,7 @@ import java.util.List; * A pair which contains two types and an operator, e.q. (Integer <. a). * @author Florian Steurer */ -public class UnifyPair { +public class UnifyPair { /** * The type on the left hand side of the pair. @@ -88,12 +88,14 @@ public class UnifyPair { return "(" + lhs + " " + pairOp + " " + rhs + ")"; } + /* public List getInvolvedPlaceholderTypes() { ArrayList ret = new ArrayList<>(); ret.addAll(lhs.getInvolvedPlaceholderTypes()); ret.addAll(rhs.getInvolvedPlaceholderTypes()); return ret; } + */ } diff --git a/test/javFiles/Lambda.jav b/test/javFiles/Lambda.jav index 8d394b0c..998dbe3b 100644 --- a/test/javFiles/Lambda.jav +++ b/test/javFiles/Lambda.jav @@ -3,10 +3,18 @@ class Lambda{ String var; methode(){ -return () -> (f) -> { - f.apply(this,var); - return var; -}; + return () -> (f) -> { + f.apply(this, var); + return var; + }; } +} + +interface Fun1{ + A apply(B b); +} + +interface Fun2{ + A apply(B b, C c); } \ No newline at end of file diff --git a/test/javFiles/Lambda2.jav b/test/javFiles/Lambda2.jav new file mode 100644 index 00000000..8326dcd5 --- /dev/null +++ b/test/javFiles/Lambda2.jav @@ -0,0 +1,26 @@ + +public class Lambda2 +{ + public static void main(List args){ + auto listOfStrings = new List(); + auto listOfObjects; + //listOfObjects = map(listOfStrings, (a) -> a); +} +/* +public static List map(List input, Function func) { + List output; + output = new List(); + output.add(func.apply(input.get())); + return output; +} +*/ +} + +class List{ + A get(); + void add(A); +} + +class Function{ + B apply(A a); +} \ No newline at end of file diff --git a/test/javFiles/Matrix.jav b/test/javFiles/Matrix.jav new file mode 100644 index 00000000..7096ba0c --- /dev/null +++ b/test/javFiles/Matrix.jav @@ -0,0 +1,43 @@ +class Matrix extends Menge> { + + Matrix mul_rec(Matrix m) { + v1; + v1 = new Menge(); + v2; + v2 = new Menge(); + i; + i = 0; + while(i < m.size()) { + v; + v = m.elementAt(i); + v2.addElement(v.remove(v.size()-1)); + i++; + } + Matrix ret; + if (m.elementAt(0).size() > 0) { + ret = this.mul_rec(m); + } + else { + ret = new Matrix(); + i = 0; + while (i < this.size()) { + ret.addElement(new Menge()); + i++; + } + } + i = 0; + while (i < this.size()) { + int erg = 0; + j; + j = 0; + while (j < v2.size()) { + erg = erg + this.elementAt(i).elementAt(j).intValue() + * v2.elementAt(j).intValue(); + j++; + } + ret.elementAt(i).addElement(erg); + i++; + } + return ret; + } +} \ No newline at end of file diff --git a/test/javFiles/Methods.jav b/test/javFiles/Methods.jav index 4a6c9d6c..e45d9830 100644 --- a/test/javFiles/Methods.jav +++ b/test/javFiles/Methods.jav @@ -2,7 +2,7 @@ class Methods { mt4(a,b,c) { return a.add(b).sub(c) ; } - mt1(a) {return a; } + mt1(a) {return a;} mt2(a) {return a.f; } @@ -10,8 +10,8 @@ class Methods { } class Test { - f; + java.lang.Object f; add(){} - add(b){} + add(b){return b;} sub(b){} } \ No newline at end of file diff --git a/test/javFiles/Vector.jav b/test/javFiles/Vector.jav new file mode 100644 index 00000000..f2a9cdae --- /dev/null +++ b/test/javFiles/Vector.jav @@ -0,0 +1,11 @@ + +class Vector{ + +id(x){ + return id2(x); +} + +id2(x){ +return id(x); +} +} \ No newline at end of file diff --git a/test/parser/FeatherWeightJavaTest.java b/test/parser/FeatherWeightJavaTest.java index 84113e0c..12db947f 100644 --- a/test/parser/FeatherWeightJavaTest.java +++ b/test/parser/FeatherWeightJavaTest.java @@ -1,5 +1,6 @@ package parser; +import de.dhbwstuttgart.parser.ClassNotFoundException; import de.dhbwstuttgart.parser.JavaTXParser; import de.dhbwstuttgart.syntaxtree.ClassOrInterface; import de.dhbwstuttgart.syntaxtree.Field; diff --git a/test/parser/FieldTest.java b/test/parser/FieldTest.java index 067ff23e..464e2007 100644 --- a/test/parser/FieldTest.java +++ b/test/parser/FieldTest.java @@ -1,5 +1,6 @@ package parser; +import de.dhbwstuttgart.parser.ClassNotFoundException; import de.dhbwstuttgart.parser.JavaTXParser; import de.dhbwstuttgart.syntaxtree.ClassOrInterface; import de.dhbwstuttgart.syntaxtree.Field; @@ -14,7 +15,7 @@ public class FieldTest { private static final String rootDirectory = System.getProperty("user.dir")+"/test/parser/"; @Test - public void test() throws IOException, ClassNotFoundException { + public void test() throws IOException, ClassNotFoundException, ClassNotFoundException { JavaTXParser parser = new JavaTXParser(); SourceFile f = parser.parse(new File(rootDirectory + "FieldVarTest.jav")); diff --git a/test/parser/GeneralParserTest.java b/test/parser/GeneralParserTest.java index fc293d13..53cb6f7b 100644 --- a/test/parser/GeneralParserTest.java +++ b/test/parser/GeneralParserTest.java @@ -30,10 +30,7 @@ public class GeneralParserTest{ filenames.add("ImportTest.jav"); filenames.add("CastTest.jav"); filenames.add("StatementsTest.jav"); -<<<<<<< HEAD //filenames.add("Methods.jav"); -======= ->>>>>>> f05222fb563282945ba395047f54f6b3059b10c5 filenames.add("ImportTestGeneric.jav"); filenames.add("CastTest.jav"); //filenames.add("BoundedParameter.jav"); diff --git a/test/parser/RunParserTest.java b/test/parser/RunParserTest.java index 5effe244..3028ef3d 100644 --- a/test/parser/RunParserTest.java +++ b/test/parser/RunParserTest.java @@ -1,7 +1,6 @@ package parser; import de.dhbwstuttgart.parser.JavaTXParser; -import de.dhbwstuttgart.parser.RunParser; import org.junit.Test; import java.io.File; diff --git a/test/typeinference/JavaTXCompilerTest.java b/test/typeinference/JavaTXCompilerTest.java index 7a73974b..d710174b 100644 --- a/test/typeinference/JavaTXCompilerTest.java +++ b/test/typeinference/JavaTXCompilerTest.java @@ -1,25 +1,52 @@ package typeinference; import de.dhbwstuttgart.core.JavaTXCompiler; +import de.dhbwstuttgart.parser.ClassNotFoundException; +import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode; +import de.dhbwstuttgart.typedeployment.TypeInsertPoint; +import de.dhbwstuttgart.typeinference.ResultSet; import org.junit.Test; import java.io.File; import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; import static org.junit.Assert.*; public class JavaTXCompilerTest { private static final String rootDirectory = System.getProperty("user.dir")+"/test/javFiles/"; - + private static final List filesToTest = new ArrayList<>(); @Test public void test() throws IOException, ClassNotFoundException { + filesToTest.add(new File(rootDirectory+"Lambda2.jav")); + //filesToTest.add(new File(rootDirectory+"Vector.jav")); + //filesToTest.add(new File(rootDirectory+"Generics.jav")); + //filesToTest.add(new File(rootDirectory+"MethodsEasy.jav")); + //filesToTest.add(new File(rootDirectory+"Lambda.jav")); + //filesToTest.add(new File(rootDirectory+"Matrix.jav")); JavaTXCompiler compiler = new JavaTXCompiler(); - //compiler.parse(new File(rootDirectory+"Methods.jav")); - //compiler.parse(new File(rootDirectory+"Generics.jav")); - compiler.parse(new File(rootDirectory+"MethodsEasy.jav")); - //compiler.parse(new File(rootDirectory+"Lambda.jav")); - compiler.typeInference(); + for(File f : filesToTest){ + compiler.parse(f); + List result = compiler.getTypeInserts(f); + String content = readFile(f.getPath(), StandardCharsets.UTF_8); + for(TypeInsertPoint tip : result){ + System.out.println(tip.insert(content)); + } + } + + } + + static String readFile(String path, Charset encoding) + throws IOException + { + byte[] encoded = Files.readAllBytes(Paths.get(path)); + return new String(encoded, encoding); } } \ No newline at end of file