Click here to Skip to main content
15,885,278 members
Articles / Desktop Programming / Windows Forms

SQLite Compare Utility

Rate me:
Please Sign up or sign in to vote.
4.89/5 (68 votes)
21 Feb 2015LGPL35 min read 281.3K   37.1K   131  
Utility for comparing two SQLite database files for both structure and data
// This code was generated by the Gardens Point Parser Generator
// Copyright (c) Wayne Kelly, QUT 2005-2008
// (see accompanying GPPGcopyright.rtf)

// GPPG version 1.3.1.136 (2008-11-11)
// Machine:  LIRONPC
// DateTime: 01/07/2011 16:39:37
// UserName: liron
// Input file <C:\Projects\TEMP\SQLiteCompare\SQLiteParser\sqlite.y>

// options: conflicts no-lines gplex conflicts

using System;
using System.Collections.Generic;
using System.Text;
using gppg;

namespace SQLiteParser
{
public enum Tokens {
    error=1,EOF=2,AS=3,NUMBER=4,LP=5,RP=6,
    CREATE=7,UNIQUE=8,INDEX=9,IF=10,NOT=11,EXISTS=12,
    ON=13,COLLATE=14,ASC=15,DESC=16,COMMA=17,ID=18,
    DQUOTED=19,SQUOTED=20,BQUOTED=21,TQUOTED=22,TABLE=23,PRIMARY=24,
    KEY=25,CONFLICT=26,AUTOINCR=27,CONSTRAINT=28,ROLLBACK=29,ABORT=30,
    FAIL=31,IGNORE=32,REPLACE=33,LIKE_KW=34,ISNULL=35,NOTNULL=36,
    NE=37,EQ=38,BETWEEN=39,MATCH=40,IS=41,GT=42,
    LE=43,LT=44,GE=45,ESCAPE=46,BITAND=47,BITOR=48,
    LSHIFT=49,RSHIFT=50,PLUS=51,MINUS=52,STAR=53,SLASH=54,
    REM=55,CONCAT=56,BITNOT=57,IN=58,JOIN_KW=59,DOT=60,
    DEFAULT=61,NULL=62,REFERENCES=63,DEFERRABLE=64,CASCADE=65,RESTRICT=66,
    INITIALLY=67,DEFERRED=68,IMMEDIATE=69,FOREIGN=70,OR=71,REGISTER=72,
    VARIABLE=73,CAST=74,CASE=75,RAISE=76,BEGIN=77,END=78,
    WHEN=79,THEN=80,BLOB=81,CTIME_KW=82,TRIGGER=83,BEFORE=84,
    AFTER=85,INSTEAD=86,OF=87,LIMIT=88,OFFSET=89,DELETE=90,
    INSERT=91,UPDATE=92,FOR=93,EACH=94,ROW=95,SEMI=96,
    ELSE=97,SET=98,VALUES=99,INTO=100,FROM=101,UNION=102,
    ALL=103,EXCEPT=104,INTERSECT=105,SELECT=106,DISTINCT=107,JOIN=108,
    INDEXED=109,BY=110,USING=111,ORDER=112,GROUP=113,HAVING=114,
    CHECK=115,VIEW=116,WHERE=117,TEMP=118,AND=119,TEMPORARY=120,
    UMINUS=121,UPLUS=122};

public struct ValueType
{ 	
    public SQLiteDdlStatement			DdlStatement;
    public SQLiteCreateTableStatement	CreateTableStatement;
    public SQLiteCreateViewStatement	CreateViewStatement;
    public SQLiteCreateTriggerStatement	CreateTriggerStatement;
    public SQLiteCreateIndexStatement	CreateIndexStatement;
    
    public List<SQLiteColumnStatement>	ColumnsList;
    public List<SQLiteTableConstraint>  TableConstraintsList;
    public SQLiteColumnStatement		ColumnStatement;
    public SQLiteColumnType				ColumnType;
    public SQLiteColumnConstraint		ColumnConstraint;
    public List<SQLiteColumnConstraint> ColumnConstraintsList;
    public SQLiteTerm					Term;
    public SQLiteExpression				Expression;
    public SQLiteSortOrder				SortOrder;
    public List<SQLiteIndexedColumn>	IndexedColumnsList;
    public SQLiteReferenceAction		ReferenceAction;
    public SQLiteReferenceHandler		ReferenceHandler;
    public List<SQLiteReferenceHandler>	ReferenceHandlersList;
    public SQLiteDeferType				DeferType;
    public SQLiteDeferColumnConstraint	DeferColumnConstraint;
    public SQLiteTableConstraint		TableConstraint;
    public SQLiteResolveAction			ResolveAction;
    public SQLiteTimeFunction			TimeFunction;
    public SQLiteLikeOperator			LikeOperator;
    public SQLiteLike					Like;
    public List<SQLiteExpression>		ExpressionsList;
    public SQLiteDistinct				Distinct;
    public List<SQLiteSelectColumn>		SelectColumnsList;
    public SQLiteSelectStatement		SelectStatement;
    public SQLiteJoinOperator			JoinOperator;
    public SQLiteFromClause				FromClause;
    public SQLiteFromIndexed			FromIndexed;
    public SQLiteObjectName				ObjectName;
    public List<string>					TextList;
    public SQLiteFromInternalTable		FromInternalTable;
    public SQLiteSortItem				SortItem;
    public List<SQLiteSortItem>			SortItemsList;
    public SQLiteLimitClause			LimitClause;
    public SQLiteSingleSelectStatement	SingleSelectStatement;
    public SQLiteSelectOperator			SelectOperator;
    public List<SQLiteCaseItem>			CaseItemsList;
    public SQLiteTriggerTime			TriggerTime;
    public SQLiteTriggerEventClause		TriggerEventClause;
    public SQLiteStatement				Statement;
    public List<SQLiteStatement>		StatementsList;
    public List<SQLiteUpdateItem>		UpdateItemsList;
    public SQLiteInsertPrefix			InsertPrefix;
        
	public string						Text;
	public bool							Bool;	
	public double						Number;
	public byte[]						Blob;
}
// Abstract base class for GPLEX scanners
public abstract class ScanBase : IScanner<ValueType,LexLocation> {
  private LexLocation __yylloc = new LexLocation();
  public override LexLocation yylloc { get { return __yylloc; } set { __yylloc = value; } }
  protected virtual bool yywrap() { return true; }
}

public class Parser: ShiftReduceParser<ValueType, LexLocation>
{
    private Dictionary<int, string> aliasses = null;

  protected override void Initialize()
  {
    this.errToken = (int)Tokens.error;
    this.eofToken = (int)Tokens.EOF;

    states=new State[616];
    AddState(0,new State(new int[]{7,4},new int[]{-1,1,-22,3,-24,613,-23,614,-25,615}));
    AddState(1,new State(new int[]{2,2}));
    AddState(2,new State(-1));
    AddState(3,new State(-2));
    AddState(4,new State(new int[]{23,5,118,610,120,611,8,612,116,-293,83,-293,9,-284},new int[]{-26,521,-16,567,-4,577}));
    AddState(5,new State(new int[]{10,518,18,-16,25,-16,15,-16,16,-16,26,-16,30,-16,31,-16,32,-16,33,-16,34,-16,40,-16,59,-16,65,-16,66,-16,67,-16,68,-16,69,-16,74,-16,76,-16,77,-16,78,-16,83,-16,84,-16,85,-16,86,-16,87,-16,89,-16,93,-16,94,-16,95,-16,109,-16,82,-16,116,-16,118,-16,120,-16,19,-16,20,-16,21,-16,22,-16},new int[]{-5,6}));
    AddState(6,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,7}));
    AddState(7,new State(new int[]{60,405,5,-206},new int[]{-3,8}));
    AddState(8,new State(new int[]{5,10},new int[]{-27,9}));
    AddState(9,new State(-6));
    AddState(10,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-28,11,-31,517,-7,466,-2,515}));
    AddState(11,new State(new int[]{17,14,6,-184},new int[]{-29,12}));
    AddState(12,new State(new int[]{6,13}));
    AddState(13,new State(-10));
    AddState(14,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60,28,19,24,61,8,129,115,134,70,428},new int[]{-31,15,-30,16,-7,466,-2,515,-46,516}));
    AddState(15,new State(-11));
    AddState(16,new State(new int[]{17,17,28,19,24,61,8,129,115,134,70,428,6,-185},new int[]{-46,465}));
    AddState(17,new State(new int[]{28,19,24,61,8,129,115,134,70,428},new int[]{-46,18}));
    AddState(18,new State(-186));
    AddState(19,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,20}));
    AddState(20,new State(-189));
    AddState(21,new State(-58));
    AddState(22,new State(-59));
    AddState(23,new State(-60));
    AddState(24,new State(-61));
    AddState(25,new State(-62));
    AddState(26,new State(-63));
    AddState(27,new State(-64));
    AddState(28,new State(-65));
    AddState(29,new State(-66));
    AddState(30,new State(-67));
    AddState(31,new State(-68));
    AddState(32,new State(-69));
    AddState(33,new State(-70));
    AddState(34,new State(-71));
    AddState(35,new State(-72));
    AddState(36,new State(-73));
    AddState(37,new State(-74));
    AddState(38,new State(-75));
    AddState(39,new State(-76));
    AddState(40,new State(-77));
    AddState(41,new State(-78));
    AddState(42,new State(-79));
    AddState(43,new State(-80));
    AddState(44,new State(-81));
    AddState(45,new State(-82));
    AddState(46,new State(-83));
    AddState(47,new State(-84));
    AddState(48,new State(-85));
    AddState(49,new State(-86));
    AddState(50,new State(-87));
    AddState(51,new State(-88));
    AddState(52,new State(-89));
    AddState(53,new State(-90));
    AddState(54,new State(-91));
    AddState(55,new State(-92));
    AddState(56,new State(-93));
    AddState(57,new State(-94));
    AddState(58,new State(-95));
    AddState(59,new State(-96));
    AddState(60,new State(-97));
    AddState(61,new State(new int[]{25,62}));
    AddState(62,new State(new int[]{5,63}));
    AddState(63,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-38,64,-2,126}));
    AddState(64,new State(new int[]{17,77,27,125,6,-167},new int[]{-13,65}));
    AddState(65,new State(new int[]{6,66}));
    AddState(66,new State(new int[]{13,68,17,-196,28,-196,24,-196,8,-196,115,-196,70,-196,6,-196},new int[]{-47,67}));
    AddState(67,new State(-190));
    AddState(68,new State(new int[]{26,69}));
    AddState(69,new State(new int[]{29,72,30,73,31,74,32,75,33,76},new int[]{-50,70,-49,71}));
    AddState(70,new State(-197));
    AddState(71,new State(-200));
    AddState(72,new State(-203));
    AddState(73,new State(-204));
    AddState(74,new State(-205));
    AddState(75,new State(-201));
    AddState(76,new State(-202));
    AddState(77,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,78}));
    AddState(78,new State(new int[]{14,83,15,-290,16,-290,17,-290,27,-290,6,-290},new int[]{-21,79}));
    AddState(79,new State(new int[]{15,81,16,82,17,-371,27,-371,6,-371},new int[]{-37,80}));
    AddState(80,new State(-288));
    AddState(81,new State(-372));
    AddState(82,new State(-373));
    AddState(83,new State(new int[]{18,85,25,86,10,87,15,88,16,89,26,90,30,91,31,92,32,93,33,94,34,95,40,96,59,97,65,98,66,99,67,100,68,101,69,102,74,103,76,104,77,105,78,106,83,107,84,108,85,109,86,110,87,111,89,112,93,113,94,114,95,115,109,116,82,117,116,118,118,119,120,120,19,121,20,122,21,123,22,124},new int[]{-6,84}));
    AddState(84,new State(-291));
    AddState(85,new State(-18));
    AddState(86,new State(-19));
    AddState(87,new State(-20));
    AddState(88,new State(-21));
    AddState(89,new State(-22));
    AddState(90,new State(-23));
    AddState(91,new State(-24));
    AddState(92,new State(-25));
    AddState(93,new State(-26));
    AddState(94,new State(-27));
    AddState(95,new State(-28));
    AddState(96,new State(-29));
    AddState(97,new State(-30));
    AddState(98,new State(-31));
    AddState(99,new State(-32));
    AddState(100,new State(-33));
    AddState(101,new State(-34));
    AddState(102,new State(-35));
    AddState(103,new State(-36));
    AddState(104,new State(-37));
    AddState(105,new State(-38));
    AddState(106,new State(-39));
    AddState(107,new State(-40));
    AddState(108,new State(-41));
    AddState(109,new State(-42));
    AddState(110,new State(-43));
    AddState(111,new State(-44));
    AddState(112,new State(-45));
    AddState(113,new State(-46));
    AddState(114,new State(-47));
    AddState(115,new State(-48));
    AddState(116,new State(-49));
    AddState(117,new State(-50));
    AddState(118,new State(-51));
    AddState(119,new State(-52));
    AddState(120,new State(-53));
    AddState(121,new State(-54));
    AddState(122,new State(-55));
    AddState(123,new State(-56));
    AddState(124,new State(-57));
    AddState(125,new State(-168));
    AddState(126,new State(new int[]{14,83,15,-290,16,-290,17,-290,27,-290,6,-290},new int[]{-21,127}));
    AddState(127,new State(new int[]{15,81,16,82,17,-371,27,-371,6,-371},new int[]{-37,128}));
    AddState(128,new State(-289));
    AddState(129,new State(new int[]{5,130}));
    AddState(130,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-38,131,-2,126}));
    AddState(131,new State(new int[]{6,132,17,77}));
    AddState(132,new State(new int[]{13,68,17,-196,28,-196,24,-196,8,-196,115,-196,70,-196,6,-196},new int[]{-47,133}));
    AddState(133,new State(-191));
    AddState(134,new State(new int[]{5,135}));
    AddState(135,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,136,-90,221,-20,239,-2,311}));
    AddState(136,new State(new int[]{6,137,14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220},new int[]{-51,139,-15,144,-14,196}));
    AddState(137,new State(new int[]{13,68,17,-196,28,-196,24,-196,8,-196,115,-196,70,-196,6,-196},new int[]{-47,138}));
    AddState(138,new State(-192));
    AddState(139,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,140,-90,221,-20,239,-2,311}));
    AddState(140,new State(new int[]{14,142,119,-280,71,-280,44,-280,42,-280,45,-280,43,-280,38,-280,37,-280,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,-280,36,-280,41,-280,11,-280,46,426,34,-280,40,-280,39,-280,58,-280,6,-280,17,-280,89,-280,102,-280,104,-280,105,-280,96,-280,2,-280,114,-280,112,-280,88,-280,3,-280,79,-280,80,-280,97,-280,78,-280,15,-280,16,-280,113,-280,111,-280,108,-280,59,-280,117,-280,18,-280,25,-280,10,-280,26,-280,30,-280,31,-280,32,-280,33,-280,65,-280,66,-280,67,-280,68,-280,69,-280,74,-280,76,-280,77,-280,83,-280,84,-280,85,-280,86,-280,87,-280,93,-280,94,-280,95,-280,109,-280,82,-280,116,-280,118,-280,120,-280,19,-280,20,-280,21,-280,22,-280,101,-280},new int[]{-52,141,-51,139,-15,144,-14,196}));
    AddState(141,new State(-216));
    AddState(142,new State(new int[]{18,85,25,86,10,87,15,88,16,89,26,90,30,91,31,92,32,93,33,94,34,95,40,96,59,97,65,98,66,99,67,100,68,101,69,102,74,103,76,104,77,105,78,106,83,107,84,108,85,109,86,110,87,111,89,112,93,113,94,114,95,115,109,116,82,117,116,118,118,119,120,120,19,121,20,122,21,123,22,124},new int[]{-6,143}));
    AddState(143,new State(-217));
    AddState(144,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,145,-90,221,-20,239,-2,311}));
    AddState(145,new State(new int[]{119,146,14,142,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220},new int[]{-51,139,-15,144,-14,196}));
    AddState(146,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,147,-90,221,-20,239,-2,311}));
    AddState(147,new State(new int[]{14,142,119,-221,71,-221,44,152,42,154,45,156,43,158,38,-221,37,-221,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,-221,36,-221,41,-221,11,-221,34,-221,40,-221,39,-221,58,-221,6,-221,46,-221,17,-221,89,-221,102,-221,104,-221,105,-221,96,-221,2,-221,114,-221,112,-221,88,-221,3,-221,79,-221,80,-221,97,-221,78,-221,15,-221,16,-221,113,-221,111,-221,108,-221,59,-221,117,-221,18,-221,25,-221,10,-221,26,-221,30,-221,31,-221,32,-221,33,-221,65,-221,66,-221,67,-221,68,-221,69,-221,74,-221,76,-221,77,-221,83,-221,84,-221,85,-221,86,-221,87,-221,93,-221,94,-221,95,-221,109,-221,82,-221,116,-221,118,-221,120,-221,19,-221,20,-221,21,-221,22,-221,101,-221},new int[]{-51,139,-15,144,-14,196}));
    AddState(148,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,149,-90,221,-20,239,-2,311}));
    AddState(149,new State(new int[]{14,142,119,-222,71,-222,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,6,-222,46,-222,17,-222,89,-222,102,-222,104,-222,105,-222,96,-222,2,-222,114,-222,112,-222,88,-222,3,-222,79,-222,80,-222,97,-222,78,-222,15,-222,16,-222,113,-222,111,-222,108,-222,59,-222,117,-222,18,-222,25,-222,10,-222,26,-222,30,-222,31,-222,32,-222,33,-222,65,-222,66,-222,67,-222,68,-222,69,-222,74,-222,76,-222,77,-222,83,-222,84,-222,85,-222,86,-222,87,-222,93,-222,94,-222,95,-222,109,-222,82,-222,116,-222,118,-222,120,-222,19,-222,20,-222,21,-222,22,-222,101,-222},new int[]{-51,139,-15,144,-14,196}));
    AddState(150,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,151,-90,221,-20,239,-2,311}));
    AddState(151,new State(new int[]{14,142,119,148,71,-223,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,6,-223,46,-223,17,-223,89,-223,102,-223,104,-223,105,-223,96,-223,2,-223,114,-223,112,-223,88,-223,3,-223,79,-223,80,-223,97,-223,78,-223,15,-223,16,-223,113,-223,111,-223,108,-223,59,-223,117,-223,18,-223,25,-223,10,-223,26,-223,30,-223,31,-223,32,-223,33,-223,65,-223,66,-223,67,-223,68,-223,69,-223,74,-223,76,-223,77,-223,83,-223,84,-223,85,-223,86,-223,87,-223,93,-223,94,-223,95,-223,109,-223,82,-223,116,-223,118,-223,120,-223,19,-223,20,-223,21,-223,22,-223,101,-223},new int[]{-51,139,-15,144,-14,196}));
    AddState(152,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,153,-90,221,-20,239,-2,311}));
    AddState(153,new State(new int[]{14,142,119,-224,71,-224,44,-224,42,-224,45,-224,43,-224,38,-224,37,-224,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,-224,36,-224,41,-224,11,-224,34,-224,40,-224,39,-224,58,-224,6,-224,46,-224,17,-224,89,-224,102,-224,104,-224,105,-224,96,-224,2,-224,114,-224,112,-224,88,-224,3,-224,79,-224,80,-224,97,-224,78,-224,15,-224,16,-224,113,-224,111,-224,108,-224,59,-224,117,-224,18,-224,25,-224,10,-224,26,-224,30,-224,31,-224,32,-224,33,-224,65,-224,66,-224,67,-224,68,-224,69,-224,74,-224,76,-224,77,-224,83,-224,84,-224,85,-224,86,-224,87,-224,93,-224,94,-224,95,-224,109,-224,82,-224,116,-224,118,-224,120,-224,19,-224,20,-224,21,-224,22,-224,101,-224},new int[]{-51,139,-15,144,-14,196}));
    AddState(154,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,155,-90,221,-20,239,-2,311}));
    AddState(155,new State(new int[]{14,142,119,-225,71,-225,44,-225,42,-225,45,-225,43,-225,38,-225,37,-225,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,-225,36,-225,41,-225,11,-225,34,-225,40,-225,39,-225,58,-225,6,-225,46,-225,17,-225,89,-225,102,-225,104,-225,105,-225,96,-225,2,-225,114,-225,112,-225,88,-225,3,-225,79,-225,80,-225,97,-225,78,-225,15,-225,16,-225,113,-225,111,-225,108,-225,59,-225,117,-225,18,-225,25,-225,10,-225,26,-225,30,-225,31,-225,32,-225,33,-225,65,-225,66,-225,67,-225,68,-225,69,-225,74,-225,76,-225,77,-225,83,-225,84,-225,85,-225,86,-225,87,-225,93,-225,94,-225,95,-225,109,-225,82,-225,116,-225,118,-225,120,-225,19,-225,20,-225,21,-225,22,-225,101,-225},new int[]{-51,139,-15,144,-14,196}));
    AddState(156,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,157,-90,221,-20,239,-2,311}));
    AddState(157,new State(new int[]{14,142,119,-226,71,-226,44,-226,42,-226,45,-226,43,-226,38,-226,37,-226,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,-226,36,-226,41,-226,11,-226,34,-226,40,-226,39,-226,58,-226,6,-226,46,-226,17,-226,89,-226,102,-226,104,-226,105,-226,96,-226,2,-226,114,-226,112,-226,88,-226,3,-226,79,-226,80,-226,97,-226,78,-226,15,-226,16,-226,113,-226,111,-226,108,-226,59,-226,117,-226,18,-226,25,-226,10,-226,26,-226,30,-226,31,-226,32,-226,33,-226,65,-226,66,-226,67,-226,68,-226,69,-226,74,-226,76,-226,77,-226,83,-226,84,-226,85,-226,86,-226,87,-226,93,-226,94,-226,95,-226,109,-226,82,-226,116,-226,118,-226,120,-226,19,-226,20,-226,21,-226,22,-226,101,-226},new int[]{-51,139,-15,144,-14,196}));
    AddState(158,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,159,-90,221,-20,239,-2,311}));
    AddState(159,new State(new int[]{14,142,119,-227,71,-227,44,-227,42,-227,45,-227,43,-227,38,-227,37,-227,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,-227,36,-227,41,-227,11,-227,34,-227,40,-227,39,-227,58,-227,6,-227,46,-227,17,-227,89,-227,102,-227,104,-227,105,-227,96,-227,2,-227,114,-227,112,-227,88,-227,3,-227,79,-227,80,-227,97,-227,78,-227,15,-227,16,-227,113,-227,111,-227,108,-227,59,-227,117,-227,18,-227,25,-227,10,-227,26,-227,30,-227,31,-227,32,-227,33,-227,65,-227,66,-227,67,-227,68,-227,69,-227,74,-227,76,-227,77,-227,83,-227,84,-227,85,-227,86,-227,87,-227,93,-227,94,-227,95,-227,109,-227,82,-227,116,-227,118,-227,120,-227,19,-227,20,-227,21,-227,22,-227,101,-227},new int[]{-51,139,-15,144,-14,196}));
    AddState(160,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,161,-90,221,-20,239,-2,311}));
    AddState(161,new State(new int[]{14,142,119,-228,71,-228,44,152,42,154,45,156,43,158,38,-228,37,-228,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,-228,36,-228,41,-228,11,-228,34,-228,40,-228,39,-228,58,-228,6,-228,46,-228,17,-228,89,-228,102,-228,104,-228,105,-228,96,-228,2,-228,114,-228,112,-228,88,-228,3,-228,79,-228,80,-228,97,-228,78,-228,15,-228,16,-228,113,-228,111,-228,108,-228,59,-228,117,-228,18,-228,25,-228,10,-228,26,-228,30,-228,31,-228,32,-228,33,-228,65,-228,66,-228,67,-228,68,-228,69,-228,74,-228,76,-228,77,-228,83,-228,84,-228,85,-228,86,-228,87,-228,93,-228,94,-228,95,-228,109,-228,82,-228,116,-228,118,-228,120,-228,19,-228,20,-228,21,-228,22,-228,101,-228},new int[]{-51,139,-15,144,-14,196}));
    AddState(162,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,163,-90,221,-20,239,-2,311}));
    AddState(163,new State(new int[]{14,142,119,-229,71,-229,44,152,42,154,45,156,43,158,38,-229,37,-229,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,-229,36,-229,41,-229,11,-229,34,-229,40,-229,39,-229,58,-229,6,-229,46,-229,17,-229,89,-229,102,-229,104,-229,105,-229,96,-229,2,-229,114,-229,112,-229,88,-229,3,-229,79,-229,80,-229,97,-229,78,-229,15,-229,16,-229,113,-229,111,-229,108,-229,59,-229,117,-229,18,-229,25,-229,10,-229,26,-229,30,-229,31,-229,32,-229,33,-229,65,-229,66,-229,67,-229,68,-229,69,-229,74,-229,76,-229,77,-229,83,-229,84,-229,85,-229,86,-229,87,-229,93,-229,94,-229,95,-229,109,-229,82,-229,116,-229,118,-229,120,-229,19,-229,20,-229,21,-229,22,-229,101,-229},new int[]{-51,139,-15,144,-14,196}));
    AddState(164,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,165,-90,221,-20,239,-2,311}));
    AddState(165,new State(new int[]{14,142,119,-230,71,-230,44,-230,42,-230,45,-230,43,-230,38,-230,37,-230,47,-230,48,-230,49,-230,50,-230,51,172,52,174,53,176,54,178,55,180,56,182,35,-230,36,-230,41,-230,11,-230,34,-230,40,-230,39,-230,58,-230,6,-230,46,-230,17,-230,89,-230,102,-230,104,-230,105,-230,96,-230,2,-230,114,-230,112,-230,88,-230,3,-230,79,-230,80,-230,97,-230,78,-230,15,-230,16,-230,113,-230,111,-230,108,-230,59,-230,117,-230,18,-230,25,-230,10,-230,26,-230,30,-230,31,-230,32,-230,33,-230,65,-230,66,-230,67,-230,68,-230,69,-230,74,-230,76,-230,77,-230,83,-230,84,-230,85,-230,86,-230,87,-230,93,-230,94,-230,95,-230,109,-230,82,-230,116,-230,118,-230,120,-230,19,-230,20,-230,21,-230,22,-230,101,-230},new int[]{-51,139,-15,144,-14,196}));
    AddState(166,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,167,-90,221,-20,239,-2,311}));
    AddState(167,new State(new int[]{14,142,119,-231,71,-231,44,-231,42,-231,45,-231,43,-231,38,-231,37,-231,47,-231,48,-231,49,-231,50,-231,51,172,52,174,53,176,54,178,55,180,56,182,35,-231,36,-231,41,-231,11,-231,34,-231,40,-231,39,-231,58,-231,6,-231,46,-231,17,-231,89,-231,102,-231,104,-231,105,-231,96,-231,2,-231,114,-231,112,-231,88,-231,3,-231,79,-231,80,-231,97,-231,78,-231,15,-231,16,-231,113,-231,111,-231,108,-231,59,-231,117,-231,18,-231,25,-231,10,-231,26,-231,30,-231,31,-231,32,-231,33,-231,65,-231,66,-231,67,-231,68,-231,69,-231,74,-231,76,-231,77,-231,83,-231,84,-231,85,-231,86,-231,87,-231,93,-231,94,-231,95,-231,109,-231,82,-231,116,-231,118,-231,120,-231,19,-231,20,-231,21,-231,22,-231,101,-231},new int[]{-51,139,-15,144,-14,196}));
    AddState(168,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,169,-90,221,-20,239,-2,311}));
    AddState(169,new State(new int[]{14,142,119,-232,71,-232,44,-232,42,-232,45,-232,43,-232,38,-232,37,-232,47,-232,48,-232,49,-232,50,-232,51,172,52,174,53,176,54,178,55,180,56,182,35,-232,36,-232,41,-232,11,-232,34,-232,40,-232,39,-232,58,-232,6,-232,46,-232,17,-232,89,-232,102,-232,104,-232,105,-232,96,-232,2,-232,114,-232,112,-232,88,-232,3,-232,79,-232,80,-232,97,-232,78,-232,15,-232,16,-232,113,-232,111,-232,108,-232,59,-232,117,-232,18,-232,25,-232,10,-232,26,-232,30,-232,31,-232,32,-232,33,-232,65,-232,66,-232,67,-232,68,-232,69,-232,74,-232,76,-232,77,-232,83,-232,84,-232,85,-232,86,-232,87,-232,93,-232,94,-232,95,-232,109,-232,82,-232,116,-232,118,-232,120,-232,19,-232,20,-232,21,-232,22,-232,101,-232},new int[]{-51,139,-15,144,-14,196}));
    AddState(170,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,171,-90,221,-20,239,-2,311}));
    AddState(171,new State(new int[]{14,142,119,-233,71,-233,44,-233,42,-233,45,-233,43,-233,38,-233,37,-233,47,-233,48,-233,49,-233,50,-233,51,172,52,174,53,176,54,178,55,180,56,182,35,-233,36,-233,41,-233,11,-233,34,-233,40,-233,39,-233,58,-233,6,-233,46,-233,17,-233,89,-233,102,-233,104,-233,105,-233,96,-233,2,-233,114,-233,112,-233,88,-233,3,-233,79,-233,80,-233,97,-233,78,-233,15,-233,16,-233,113,-233,111,-233,108,-233,59,-233,117,-233,18,-233,25,-233,10,-233,26,-233,30,-233,31,-233,32,-233,33,-233,65,-233,66,-233,67,-233,68,-233,69,-233,74,-233,76,-233,77,-233,83,-233,84,-233,85,-233,86,-233,87,-233,93,-233,94,-233,95,-233,109,-233,82,-233,116,-233,118,-233,120,-233,19,-233,20,-233,21,-233,22,-233,101,-233},new int[]{-51,139,-15,144,-14,196}));
    AddState(172,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,173,-90,221,-20,239,-2,311}));
    AddState(173,new State(new int[]{14,142,119,-234,71,-234,44,-234,42,-234,45,-234,43,-234,38,-234,37,-234,47,-234,48,-234,49,-234,50,-234,51,-234,52,-234,53,176,54,178,55,180,56,182,35,-234,36,-234,41,-234,11,-234,34,-234,40,-234,39,-234,58,-234,6,-234,46,-234,17,-234,89,-234,102,-234,104,-234,105,-234,96,-234,2,-234,114,-234,112,-234,88,-234,3,-234,79,-234,80,-234,97,-234,78,-234,15,-234,16,-234,113,-234,111,-234,108,-234,59,-234,117,-234,18,-234,25,-234,10,-234,26,-234,30,-234,31,-234,32,-234,33,-234,65,-234,66,-234,67,-234,68,-234,69,-234,74,-234,76,-234,77,-234,83,-234,84,-234,85,-234,86,-234,87,-234,93,-234,94,-234,95,-234,109,-234,82,-234,116,-234,118,-234,120,-234,19,-234,20,-234,21,-234,22,-234,101,-234},new int[]{-51,139,-15,144,-14,196}));
    AddState(174,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,175,-90,221,-20,239,-2,311}));
    AddState(175,new State(new int[]{14,142,119,-235,71,-235,44,-235,42,-235,45,-235,43,-235,38,-235,37,-235,47,-235,48,-235,49,-235,50,-235,51,-235,52,-235,53,176,54,178,55,180,56,182,35,-235,36,-235,41,-235,11,-235,34,-235,40,-235,39,-235,58,-235,6,-235,46,-235,17,-235,89,-235,102,-235,104,-235,105,-235,96,-235,2,-235,114,-235,112,-235,88,-235,3,-235,79,-235,80,-235,97,-235,78,-235,15,-235,16,-235,113,-235,111,-235,108,-235,59,-235,117,-235,18,-235,25,-235,10,-235,26,-235,30,-235,31,-235,32,-235,33,-235,65,-235,66,-235,67,-235,68,-235,69,-235,74,-235,76,-235,77,-235,83,-235,84,-235,85,-235,86,-235,87,-235,93,-235,94,-235,95,-235,109,-235,82,-235,116,-235,118,-235,120,-235,19,-235,20,-235,21,-235,22,-235,101,-235},new int[]{-51,139,-15,144,-14,196}));
    AddState(176,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,177,-90,221,-20,239,-2,311}));
    AddState(177,new State(new int[]{14,142,119,-236,71,-236,44,-236,42,-236,45,-236,43,-236,38,-236,37,-236,47,-236,48,-236,49,-236,50,-236,51,-236,52,-236,53,-236,54,-236,55,-236,56,182,35,-236,36,-236,41,-236,11,-236,34,-236,40,-236,39,-236,58,-236,6,-236,46,-236,17,-236,89,-236,102,-236,104,-236,105,-236,96,-236,2,-236,114,-236,112,-236,88,-236,3,-236,79,-236,80,-236,97,-236,78,-236,15,-236,16,-236,113,-236,111,-236,108,-236,59,-236,117,-236,18,-236,25,-236,10,-236,26,-236,30,-236,31,-236,32,-236,33,-236,65,-236,66,-236,67,-236,68,-236,69,-236,74,-236,76,-236,77,-236,83,-236,84,-236,85,-236,86,-236,87,-236,93,-236,94,-236,95,-236,109,-236,82,-236,116,-236,118,-236,120,-236,19,-236,20,-236,21,-236,22,-236,101,-236},new int[]{-51,139,-15,144,-14,196}));
    AddState(178,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,179,-90,221,-20,239,-2,311}));
    AddState(179,new State(new int[]{14,142,119,-237,71,-237,44,-237,42,-237,45,-237,43,-237,38,-237,37,-237,47,-237,48,-237,49,-237,50,-237,51,-237,52,-237,53,-237,54,-237,55,-237,56,182,35,-237,36,-237,41,-237,11,-237,34,-237,40,-237,39,-237,58,-237,6,-237,46,-237,17,-237,89,-237,102,-237,104,-237,105,-237,96,-237,2,-237,114,-237,112,-237,88,-237,3,-237,79,-237,80,-237,97,-237,78,-237,15,-237,16,-237,113,-237,111,-237,108,-237,59,-237,117,-237,18,-237,25,-237,10,-237,26,-237,30,-237,31,-237,32,-237,33,-237,65,-237,66,-237,67,-237,68,-237,69,-237,74,-237,76,-237,77,-237,83,-237,84,-237,85,-237,86,-237,87,-237,93,-237,94,-237,95,-237,109,-237,82,-237,116,-237,118,-237,120,-237,19,-237,20,-237,21,-237,22,-237,101,-237},new int[]{-51,139,-15,144,-14,196}));
    AddState(180,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,181,-90,221,-20,239,-2,311}));
    AddState(181,new State(new int[]{14,142,119,-238,71,-238,44,-238,42,-238,45,-238,43,-238,38,-238,37,-238,47,-238,48,-238,49,-238,50,-238,51,-238,52,-238,53,-238,54,-238,55,-238,56,182,35,-238,36,-238,41,-238,11,-238,34,-238,40,-238,39,-238,58,-238,6,-238,46,-238,17,-238,89,-238,102,-238,104,-238,105,-238,96,-238,2,-238,114,-238,112,-238,88,-238,3,-238,79,-238,80,-238,97,-238,78,-238,15,-238,16,-238,113,-238,111,-238,108,-238,59,-238,117,-238,18,-238,25,-238,10,-238,26,-238,30,-238,31,-238,32,-238,33,-238,65,-238,66,-238,67,-238,68,-238,69,-238,74,-238,76,-238,77,-238,83,-238,84,-238,85,-238,86,-238,87,-238,93,-238,94,-238,95,-238,109,-238,82,-238,116,-238,118,-238,120,-238,19,-238,20,-238,21,-238,22,-238,101,-238},new int[]{-51,139,-15,144,-14,196}));
    AddState(182,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,183,-90,221,-20,239,-2,311}));
    AddState(183,new State(new int[]{14,142,119,-239,71,-239,44,-239,42,-239,45,-239,43,-239,38,-239,37,-239,47,-239,48,-239,49,-239,50,-239,51,-239,52,-239,53,-239,54,-239,55,-239,56,-239,35,-239,36,-239,41,-239,11,-239,34,-239,40,-239,39,-239,58,-239,6,-239,46,-239,17,-239,89,-239,102,-239,104,-239,105,-239,96,-239,2,-239,114,-239,112,-239,88,-239,3,-239,79,-239,80,-239,97,-239,78,-239,15,-239,16,-239,113,-239,111,-239,108,-239,59,-239,117,-239,18,-239,25,-239,10,-239,26,-239,30,-239,31,-239,32,-239,33,-239,65,-239,66,-239,67,-239,68,-239,69,-239,74,-239,76,-239,77,-239,83,-239,84,-239,85,-239,86,-239,87,-239,93,-239,94,-239,95,-239,109,-239,82,-239,116,-239,118,-239,120,-239,19,-239,20,-239,21,-239,22,-239,101,-239},new int[]{-51,139,-15,144,-14,196}));
    AddState(184,new State(-240));
    AddState(185,new State(-241));
    AddState(186,new State(new int[]{62,187,11,188}));
    AddState(187,new State(-242));
    AddState(188,new State(new int[]{62,189}));
    AddState(189,new State(-244));
    AddState(190,new State(new int[]{62,191,34,192,40,193,39,194,58,195}));
    AddState(191,new State(-243));
    AddState(192,new State(-277));
    AddState(193,new State(-279));
    AddState(194,new State(-283));
    AddState(195,new State(-268));
    AddState(196,new State(new int[]{5,197,18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,424}));
    AddState(197,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330,106,204,6,-259},new int[]{-53,198,-59,200,-54,245,-91,346,-90,221,-20,239,-2,311,-58,329}));
    AddState(198,new State(new int[]{6,199}));
    AddState(199,new State(-249));
    AddState(200,new State(new int[]{6,201,102,234,104,236,105,237},new int[]{-78,202}));
    AddState(201,new State(-251));
    AddState(202,new State(new int[]{106,204},new int[]{-58,203}));
    AddState(203,new State(-328));
    AddState(204,new State(new int[]{107,349,103,350,53,-334,4,-334,81,-334,19,-334,20,-334,21,-334,22,-334,82,-334,5,-334,62,-334,18,-334,25,-334,10,-334,15,-334,16,-334,26,-334,30,-334,31,-334,32,-334,33,-334,34,-334,40,-334,59,-334,65,-334,66,-334,67,-334,68,-334,69,-334,74,-334,76,-334,77,-334,78,-334,83,-334,84,-334,85,-334,86,-334,87,-334,89,-334,93,-334,94,-334,95,-334,109,-334,116,-334,118,-334,120,-334,73,-334,11,-334,57,-334,52,-334,51,-334,12,-334,75,-334},new int[]{-55,205}));
    AddState(205,new State(-337,new int[]{-56,206,-57,415}));
    AddState(206,new State(new int[]{17,369,101,370,117,-345,113,-345,114,-345,112,-345,88,-345,6,-345,102,-345,104,-345,105,-345,96,-345,2,-345},new int[]{-63,207}));
    AddState(207,new State(new int[]{117,367,113,-323,114,-323,112,-323,88,-323,6,-323,102,-323,104,-323,105,-323,96,-323,2,-323},new int[]{-71,208}));
    AddState(208,new State(new int[]{113,364,114,-374,112,-374,88,-374,6,-374,102,-374,104,-374,105,-374,96,-374,2,-374},new int[]{-72,209}));
    AddState(209,new State(new int[]{114,362,112,-376,88,-376,6,-376,102,-376,104,-376,105,-376,96,-376,2,-376},new int[]{-73,210}));
    AddState(210,new State(new int[]{112,353,88,-366,6,-366,102,-366,104,-366,105,-366,96,-366,2,-366},new int[]{-76,211}));
    AddState(211,new State(new int[]{88,213,6,-378,102,-378,104,-378,105,-378,96,-378,2,-378},new int[]{-77,212}));
    AddState(212,new State(-333));
    AddState(213,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,214,-90,221,-20,239,-2,311}));
    AddState(214,new State(new int[]{89,215,17,351,14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,6,-379,102,-379,104,-379,105,-379,96,-379,2,-379},new int[]{-51,139,-15,144,-14,196}));
    AddState(215,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,216,-90,221,-20,239,-2,311}));
    AddState(216,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,6,-380,102,-380,104,-380,105,-380,96,-380,2,-380},new int[]{-51,139,-15,144,-14,196}));
    AddState(217,new State(-276));
    AddState(218,new State(-278));
    AddState(219,new State(-282));
    AddState(220,new State(-267));
    AddState(221,new State(-208));
    AddState(222,new State(-269));
    AddState(223,new State(-270));
    AddState(224,new State(new int[]{6,-271,14,-271,119,-271,71,-271,44,-271,42,-271,45,-271,43,-271,38,-271,37,-271,47,-271,48,-271,49,-271,50,-271,51,-271,52,-271,53,-271,54,-271,55,-271,56,-271,35,-271,36,-271,41,-271,11,-271,34,-271,40,-271,39,-271,58,-271,46,-271,17,-271,89,-271,102,-271,104,-271,105,-271,96,-271,2,-271,114,-271,112,-271,88,-271,3,-271,79,-271,80,-271,97,-271,78,-271,15,-271,16,-271,113,-271,111,-271,108,-271,59,-271,117,-271,18,-271,25,-271,10,-271,26,-271,30,-271,31,-271,32,-271,33,-271,65,-271,66,-271,67,-271,68,-271,69,-271,74,-271,76,-271,77,-271,83,-271,84,-271,85,-271,86,-271,87,-271,93,-271,94,-271,95,-271,109,-271,82,-271,116,-271,118,-271,120,-271,19,-271,20,-271,21,-271,22,-271,101,-271,60,-94}));
    AddState(225,new State(new int[]{6,-272,14,-272,119,-272,71,-272,44,-272,42,-272,45,-272,43,-272,38,-272,37,-272,47,-272,48,-272,49,-272,50,-272,51,-272,52,-272,53,-272,54,-272,55,-272,56,-272,35,-272,36,-272,41,-272,11,-272,34,-272,40,-272,39,-272,58,-272,46,-272,17,-272,89,-272,102,-272,104,-272,105,-272,96,-272,2,-272,114,-272,112,-272,88,-272,3,-272,79,-272,80,-272,97,-272,78,-272,15,-272,16,-272,113,-272,111,-272,108,-272,59,-272,117,-272,18,-272,25,-272,10,-272,26,-272,30,-272,31,-272,32,-272,33,-272,65,-272,66,-272,67,-272,68,-272,69,-272,74,-272,76,-272,77,-272,83,-272,84,-272,85,-272,86,-272,87,-272,93,-272,94,-272,95,-272,109,-272,82,-272,116,-272,118,-272,120,-272,19,-272,20,-272,21,-272,22,-272,101,-272,60,-95}));
    AddState(226,new State(new int[]{6,-273,14,-273,119,-273,71,-273,44,-273,42,-273,45,-273,43,-273,38,-273,37,-273,47,-273,48,-273,49,-273,50,-273,51,-273,52,-273,53,-273,54,-273,55,-273,56,-273,35,-273,36,-273,41,-273,11,-273,34,-273,40,-273,39,-273,58,-273,46,-273,17,-273,89,-273,102,-273,104,-273,105,-273,96,-273,2,-273,114,-273,112,-273,88,-273,3,-273,79,-273,80,-273,97,-273,78,-273,15,-273,16,-273,113,-273,111,-273,108,-273,59,-273,117,-273,18,-273,25,-273,10,-273,26,-273,30,-273,31,-273,32,-273,33,-273,65,-273,66,-273,67,-273,68,-273,69,-273,74,-273,76,-273,77,-273,83,-273,84,-273,85,-273,86,-273,87,-273,93,-273,94,-273,95,-273,109,-273,82,-273,116,-273,118,-273,120,-273,19,-273,20,-273,21,-273,22,-273,101,-273,60,-96}));
    AddState(227,new State(new int[]{6,-274,14,-274,119,-274,71,-274,44,-274,42,-274,45,-274,43,-274,38,-274,37,-274,47,-274,48,-274,49,-274,50,-274,51,-274,52,-274,53,-274,54,-274,55,-274,56,-274,35,-274,36,-274,41,-274,11,-274,34,-274,40,-274,39,-274,58,-274,46,-274,17,-274,89,-274,102,-274,104,-274,105,-274,96,-274,2,-274,114,-274,112,-274,88,-274,3,-274,79,-274,80,-274,97,-274,78,-274,15,-274,16,-274,113,-274,111,-274,108,-274,59,-274,117,-274,18,-274,25,-274,10,-274,26,-274,30,-274,31,-274,32,-274,33,-274,65,-274,66,-274,67,-274,68,-274,69,-274,74,-274,76,-274,77,-274,83,-274,84,-274,85,-274,86,-274,87,-274,93,-274,94,-274,95,-274,109,-274,82,-274,116,-274,118,-274,120,-274,19,-274,20,-274,21,-274,22,-274,101,-274,60,-97}));
    AddState(228,new State(new int[]{6,-131,14,-131,119,-131,71,-131,44,-131,42,-131,45,-131,43,-131,38,-131,37,-131,47,-131,48,-131,49,-131,50,-131,51,-131,52,-131,53,-131,54,-131,55,-131,56,-131,35,-131,36,-131,41,-131,11,-131,34,-131,40,-131,39,-131,58,-131,46,-131,17,-131,89,-131,102,-131,104,-131,105,-131,96,-131,2,-131,114,-131,112,-131,88,-131,3,-131,79,-131,80,-131,97,-131,78,-131,15,-131,16,-131,113,-131,111,-131,108,-131,59,-131,117,-131,18,-131,25,-131,10,-131,26,-131,30,-131,31,-131,32,-131,33,-131,65,-131,66,-131,67,-131,68,-131,69,-131,74,-131,76,-131,77,-131,83,-131,84,-131,85,-131,86,-131,87,-131,93,-131,94,-131,95,-131,109,-131,82,-131,116,-131,118,-131,120,-131,19,-131,20,-131,21,-131,22,-131,101,-131,60,-90}));
    AddState(229,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330,106,204},new int[]{-91,230,-59,232,-90,221,-20,239,-2,311,-58,329}));
    AddState(230,new State(new int[]{6,231,14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220},new int[]{-51,139,-15,144,-14,196}));
    AddState(231,new State(-209));
    AddState(232,new State(new int[]{6,233,102,234,104,236,105,237},new int[]{-78,202}));
    AddState(233,new State(-250));
    AddState(234,new State(new int[]{103,235,106,-329}));
    AddState(235,new State(-330));
    AddState(236,new State(-331));
    AddState(237,new State(-332));
    AddState(238,new State(-210));
    AddState(239,new State(-211));
    AddState(240,new State(new int[]{5,241,6,-99,14,-99,119,-99,71,-99,44,-99,42,-99,45,-99,43,-99,38,-99,37,-99,47,-99,48,-99,49,-99,50,-99,51,-99,52,-99,53,-99,54,-99,55,-99,56,-99,35,-99,36,-99,41,-99,11,-99,34,-99,40,-99,39,-99,58,-99,46,-99,17,-99,89,-99,102,-99,104,-99,105,-99,96,-99,2,-99,114,-99,112,-99,88,-99,3,-99,79,-99,80,-99,97,-99,78,-99,15,-99,16,-99,113,-99,111,-99,108,-99,59,-99,117,-99,18,-99,25,-99,10,-99,26,-99,30,-99,31,-99,32,-99,33,-99,65,-99,66,-99,67,-99,68,-99,69,-99,74,-99,76,-99,77,-99,83,-99,84,-99,85,-99,86,-99,87,-99,93,-99,94,-99,95,-99,109,-99,82,-99,116,-99,118,-99,120,-99,19,-99,20,-99,21,-99,22,-99,101,-99,60,-58}));
    AddState(241,new State(new int[]{53,347,107,349,103,350,4,-334,81,-334,19,-334,20,-334,21,-334,22,-334,82,-334,5,-334,62,-334,18,-334,25,-334,10,-334,15,-334,16,-334,26,-334,30,-334,31,-334,32,-334,33,-334,34,-334,40,-334,59,-334,65,-334,66,-334,67,-334,68,-334,69,-334,74,-334,76,-334,77,-334,78,-334,83,-334,84,-334,85,-334,86,-334,87,-334,89,-334,93,-334,94,-334,95,-334,109,-334,116,-334,118,-334,120,-334,73,-334,11,-334,57,-334,52,-334,51,-334,12,-334,75,-334,6,-334},new int[]{-55,242}));
    AddState(242,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330,6,-259},new int[]{-53,243,-54,245,-91,346,-90,221,-20,239,-2,311}));
    AddState(243,new State(new int[]{6,244}));
    AddState(244,new State(-219));
    AddState(245,new State(new int[]{17,246,6,-260}));
    AddState(246,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,247,-90,221,-20,239,-2,311}));
    AddState(247,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,17,-261,6,-261,114,-261,112,-261,88,-261,102,-261,104,-261,105,-261,96,-261,2,-261},new int[]{-51,139,-15,144,-14,196}));
    AddState(248,new State(new int[]{6,-100,14,-100,119,-100,71,-100,44,-100,42,-100,45,-100,43,-100,38,-100,37,-100,47,-100,48,-100,49,-100,50,-100,51,-100,52,-100,53,-100,54,-100,55,-100,56,-100,35,-100,36,-100,41,-100,11,-100,34,-100,40,-100,39,-100,58,-100,46,-100,17,-100,89,-100,102,-100,104,-100,105,-100,96,-100,2,-100,114,-100,112,-100,88,-100,3,-100,79,-100,80,-100,97,-100,78,-100,15,-100,16,-100,113,-100,111,-100,108,-100,59,-100,117,-100,18,-100,25,-100,10,-100,26,-100,30,-100,31,-100,32,-100,33,-100,65,-100,66,-100,67,-100,68,-100,69,-100,74,-100,76,-100,77,-100,83,-100,84,-100,85,-100,86,-100,87,-100,93,-100,94,-100,95,-100,109,-100,82,-100,116,-100,118,-100,120,-100,19,-100,20,-100,21,-100,22,-100,101,-100,60,-59}));
    AddState(249,new State(new int[]{6,-101,14,-101,119,-101,71,-101,44,-101,42,-101,45,-101,43,-101,38,-101,37,-101,47,-101,48,-101,49,-101,50,-101,51,-101,52,-101,53,-101,54,-101,55,-101,56,-101,35,-101,36,-101,41,-101,11,-101,34,-101,40,-101,39,-101,58,-101,46,-101,17,-101,89,-101,102,-101,104,-101,105,-101,96,-101,2,-101,114,-101,112,-101,88,-101,3,-101,79,-101,80,-101,97,-101,78,-101,15,-101,16,-101,113,-101,111,-101,108,-101,59,-101,117,-101,18,-101,25,-101,10,-101,26,-101,30,-101,31,-101,32,-101,33,-101,65,-101,66,-101,67,-101,68,-101,69,-101,74,-101,76,-101,77,-101,83,-101,84,-101,85,-101,86,-101,87,-101,93,-101,94,-101,95,-101,109,-101,82,-101,116,-101,118,-101,120,-101,19,-101,20,-101,21,-101,22,-101,101,-101,60,-60}));
    AddState(250,new State(new int[]{6,-102,14,-102,119,-102,71,-102,44,-102,42,-102,45,-102,43,-102,38,-102,37,-102,47,-102,48,-102,49,-102,50,-102,51,-102,52,-102,53,-102,54,-102,55,-102,56,-102,35,-102,36,-102,41,-102,11,-102,34,-102,40,-102,39,-102,58,-102,46,-102,17,-102,89,-102,102,-102,104,-102,105,-102,96,-102,2,-102,114,-102,112,-102,88,-102,3,-102,79,-102,80,-102,97,-102,78,-102,15,-102,16,-102,113,-102,111,-102,108,-102,59,-102,117,-102,18,-102,25,-102,10,-102,26,-102,30,-102,31,-102,32,-102,33,-102,65,-102,66,-102,67,-102,68,-102,69,-102,74,-102,76,-102,77,-102,83,-102,84,-102,85,-102,86,-102,87,-102,93,-102,94,-102,95,-102,109,-102,82,-102,116,-102,118,-102,120,-102,19,-102,20,-102,21,-102,22,-102,101,-102,60,-61}));
    AddState(251,new State(new int[]{6,-103,14,-103,119,-103,71,-103,44,-103,42,-103,45,-103,43,-103,38,-103,37,-103,47,-103,48,-103,49,-103,50,-103,51,-103,52,-103,53,-103,54,-103,55,-103,56,-103,35,-103,36,-103,41,-103,11,-103,34,-103,40,-103,39,-103,58,-103,46,-103,17,-103,89,-103,102,-103,104,-103,105,-103,96,-103,2,-103,114,-103,112,-103,88,-103,3,-103,79,-103,80,-103,97,-103,78,-103,15,-103,16,-103,113,-103,111,-103,108,-103,59,-103,117,-103,18,-103,25,-103,10,-103,26,-103,30,-103,31,-103,32,-103,33,-103,65,-103,66,-103,67,-103,68,-103,69,-103,74,-103,76,-103,77,-103,83,-103,84,-103,85,-103,86,-103,87,-103,93,-103,94,-103,95,-103,109,-103,82,-103,116,-103,118,-103,120,-103,19,-103,20,-103,21,-103,22,-103,101,-103,60,-62}));
    AddState(252,new State(new int[]{6,-104,14,-104,119,-104,71,-104,44,-104,42,-104,45,-104,43,-104,38,-104,37,-104,47,-104,48,-104,49,-104,50,-104,51,-104,52,-104,53,-104,54,-104,55,-104,56,-104,35,-104,36,-104,41,-104,11,-104,34,-104,40,-104,39,-104,58,-104,46,-104,17,-104,89,-104,102,-104,104,-104,105,-104,96,-104,2,-104,114,-104,112,-104,88,-104,3,-104,79,-104,80,-104,97,-104,78,-104,15,-104,16,-104,113,-104,111,-104,108,-104,59,-104,117,-104,18,-104,25,-104,10,-104,26,-104,30,-104,31,-104,32,-104,33,-104,65,-104,66,-104,67,-104,68,-104,69,-104,74,-104,76,-104,77,-104,83,-104,84,-104,85,-104,86,-104,87,-104,93,-104,94,-104,95,-104,109,-104,82,-104,116,-104,118,-104,120,-104,19,-104,20,-104,21,-104,22,-104,101,-104,60,-63}));
    AddState(253,new State(new int[]{6,-105,14,-105,119,-105,71,-105,44,-105,42,-105,45,-105,43,-105,38,-105,37,-105,47,-105,48,-105,49,-105,50,-105,51,-105,52,-105,53,-105,54,-105,55,-105,56,-105,35,-105,36,-105,41,-105,11,-105,34,-105,40,-105,39,-105,58,-105,46,-105,17,-105,89,-105,102,-105,104,-105,105,-105,96,-105,2,-105,114,-105,112,-105,88,-105,3,-105,79,-105,80,-105,97,-105,78,-105,15,-105,16,-105,113,-105,111,-105,108,-105,59,-105,117,-105,18,-105,25,-105,10,-105,26,-105,30,-105,31,-105,32,-105,33,-105,65,-105,66,-105,67,-105,68,-105,69,-105,74,-105,76,-105,77,-105,83,-105,84,-105,85,-105,86,-105,87,-105,93,-105,94,-105,95,-105,109,-105,82,-105,116,-105,118,-105,120,-105,19,-105,20,-105,21,-105,22,-105,101,-105,60,-64}));
    AddState(254,new State(new int[]{6,-106,14,-106,119,-106,71,-106,44,-106,42,-106,45,-106,43,-106,38,-106,37,-106,47,-106,48,-106,49,-106,50,-106,51,-106,52,-106,53,-106,54,-106,55,-106,56,-106,35,-106,36,-106,41,-106,11,-106,34,-106,40,-106,39,-106,58,-106,46,-106,17,-106,89,-106,102,-106,104,-106,105,-106,96,-106,2,-106,114,-106,112,-106,88,-106,3,-106,79,-106,80,-106,97,-106,78,-106,15,-106,16,-106,113,-106,111,-106,108,-106,59,-106,117,-106,18,-106,25,-106,10,-106,26,-106,30,-106,31,-106,32,-106,33,-106,65,-106,66,-106,67,-106,68,-106,69,-106,74,-106,76,-106,77,-106,83,-106,84,-106,85,-106,86,-106,87,-106,93,-106,94,-106,95,-106,109,-106,82,-106,116,-106,118,-106,120,-106,19,-106,20,-106,21,-106,22,-106,101,-106,60,-65}));
    AddState(255,new State(new int[]{6,-107,14,-107,119,-107,71,-107,44,-107,42,-107,45,-107,43,-107,38,-107,37,-107,47,-107,48,-107,49,-107,50,-107,51,-107,52,-107,53,-107,54,-107,55,-107,56,-107,35,-107,36,-107,41,-107,11,-107,34,-107,40,-107,39,-107,58,-107,46,-107,17,-107,89,-107,102,-107,104,-107,105,-107,96,-107,2,-107,114,-107,112,-107,88,-107,3,-107,79,-107,80,-107,97,-107,78,-107,15,-107,16,-107,113,-107,111,-107,108,-107,59,-107,117,-107,18,-107,25,-107,10,-107,26,-107,30,-107,31,-107,32,-107,33,-107,65,-107,66,-107,67,-107,68,-107,69,-107,74,-107,76,-107,77,-107,83,-107,84,-107,85,-107,86,-107,87,-107,93,-107,94,-107,95,-107,109,-107,82,-107,116,-107,118,-107,120,-107,19,-107,20,-107,21,-107,22,-107,101,-107,60,-66}));
    AddState(256,new State(new int[]{6,-108,14,-108,119,-108,71,-108,44,-108,42,-108,45,-108,43,-108,38,-108,37,-108,47,-108,48,-108,49,-108,50,-108,51,-108,52,-108,53,-108,54,-108,55,-108,56,-108,35,-108,36,-108,41,-108,11,-108,34,-108,40,-108,39,-108,58,-108,46,-108,17,-108,89,-108,102,-108,104,-108,105,-108,96,-108,2,-108,114,-108,112,-108,88,-108,3,-108,79,-108,80,-108,97,-108,78,-108,15,-108,16,-108,113,-108,111,-108,108,-108,59,-108,117,-108,18,-108,25,-108,10,-108,26,-108,30,-108,31,-108,32,-108,33,-108,65,-108,66,-108,67,-108,68,-108,69,-108,74,-108,76,-108,77,-108,83,-108,84,-108,85,-108,86,-108,87,-108,93,-108,94,-108,95,-108,109,-108,82,-108,116,-108,118,-108,120,-108,19,-108,20,-108,21,-108,22,-108,101,-108,60,-67}));
    AddState(257,new State(new int[]{6,-109,14,-109,119,-109,71,-109,44,-109,42,-109,45,-109,43,-109,38,-109,37,-109,47,-109,48,-109,49,-109,50,-109,51,-109,52,-109,53,-109,54,-109,55,-109,56,-109,35,-109,36,-109,41,-109,11,-109,34,-109,40,-109,39,-109,58,-109,46,-109,17,-109,89,-109,102,-109,104,-109,105,-109,96,-109,2,-109,114,-109,112,-109,88,-109,3,-109,79,-109,80,-109,97,-109,78,-109,15,-109,16,-109,113,-109,111,-109,108,-109,59,-109,117,-109,18,-109,25,-109,10,-109,26,-109,30,-109,31,-109,32,-109,33,-109,65,-109,66,-109,67,-109,68,-109,69,-109,74,-109,76,-109,77,-109,83,-109,84,-109,85,-109,86,-109,87,-109,93,-109,94,-109,95,-109,109,-109,82,-109,116,-109,118,-109,120,-109,19,-109,20,-109,21,-109,22,-109,101,-109,60,-68}));
    AddState(258,new State(new int[]{6,-110,14,-110,119,-110,71,-110,44,-110,42,-110,45,-110,43,-110,38,-110,37,-110,47,-110,48,-110,49,-110,50,-110,51,-110,52,-110,53,-110,54,-110,55,-110,56,-110,35,-110,36,-110,41,-110,11,-110,34,-110,40,-110,39,-110,58,-110,46,-110,17,-110,89,-110,102,-110,104,-110,105,-110,96,-110,2,-110,114,-110,112,-110,88,-110,3,-110,79,-110,80,-110,97,-110,78,-110,15,-110,16,-110,113,-110,111,-110,108,-110,59,-110,117,-110,18,-110,25,-110,10,-110,26,-110,30,-110,31,-110,32,-110,33,-110,65,-110,66,-110,67,-110,68,-110,69,-110,74,-110,76,-110,77,-110,83,-110,84,-110,85,-110,86,-110,87,-110,93,-110,94,-110,95,-110,109,-110,82,-110,116,-110,118,-110,120,-110,19,-110,20,-110,21,-110,22,-110,101,-110,60,-69}));
    AddState(259,new State(new int[]{6,-111,14,-111,119,-111,71,-111,44,-111,42,-111,45,-111,43,-111,38,-111,37,-111,47,-111,48,-111,49,-111,50,-111,51,-111,52,-111,53,-111,54,-111,55,-111,56,-111,35,-111,36,-111,41,-111,11,-111,34,-111,40,-111,39,-111,58,-111,46,-111,17,-111,89,-111,102,-111,104,-111,105,-111,96,-111,2,-111,114,-111,112,-111,88,-111,3,-111,79,-111,80,-111,97,-111,78,-111,15,-111,16,-111,113,-111,111,-111,108,-111,59,-111,117,-111,18,-111,25,-111,10,-111,26,-111,30,-111,31,-111,32,-111,33,-111,65,-111,66,-111,67,-111,68,-111,69,-111,74,-111,76,-111,77,-111,83,-111,84,-111,85,-111,86,-111,87,-111,93,-111,94,-111,95,-111,109,-111,82,-111,116,-111,118,-111,120,-111,19,-111,20,-111,21,-111,22,-111,101,-111,60,-70}));
    AddState(260,new State(new int[]{6,-112,14,-112,119,-112,71,-112,44,-112,42,-112,45,-112,43,-112,38,-112,37,-112,47,-112,48,-112,49,-112,50,-112,51,-112,52,-112,53,-112,54,-112,55,-112,56,-112,35,-112,36,-112,41,-112,11,-112,34,-112,40,-112,39,-112,58,-112,46,-112,17,-112,89,-112,102,-112,104,-112,105,-112,96,-112,2,-112,114,-112,112,-112,88,-112,3,-112,79,-112,80,-112,97,-112,78,-112,15,-112,16,-112,113,-112,111,-112,108,-112,59,-112,117,-112,18,-112,25,-112,10,-112,26,-112,30,-112,31,-112,32,-112,33,-112,65,-112,66,-112,67,-112,68,-112,69,-112,74,-112,76,-112,77,-112,83,-112,84,-112,85,-112,86,-112,87,-112,93,-112,94,-112,95,-112,109,-112,82,-112,116,-112,118,-112,120,-112,19,-112,20,-112,21,-112,22,-112,101,-112,60,-71}));
    AddState(261,new State(new int[]{6,-113,14,-113,119,-113,71,-113,44,-113,42,-113,45,-113,43,-113,38,-113,37,-113,47,-113,48,-113,49,-113,50,-113,51,-113,52,-113,53,-113,54,-113,55,-113,56,-113,35,-113,36,-113,41,-113,11,-113,34,-113,40,-113,39,-113,58,-113,46,-113,17,-113,89,-113,102,-113,104,-113,105,-113,96,-113,2,-113,114,-113,112,-113,88,-113,3,-113,79,-113,80,-113,97,-113,78,-113,15,-113,16,-113,113,-113,111,-113,108,-113,59,-113,117,-113,18,-113,25,-113,10,-113,26,-113,30,-113,31,-113,32,-113,33,-113,65,-113,66,-113,67,-113,68,-113,69,-113,74,-113,76,-113,77,-113,83,-113,84,-113,85,-113,86,-113,87,-113,93,-113,94,-113,95,-113,109,-113,82,-113,116,-113,118,-113,120,-113,19,-113,20,-113,21,-113,22,-113,101,-113,60,-72}));
    AddState(262,new State(new int[]{6,-114,14,-114,119,-114,71,-114,44,-114,42,-114,45,-114,43,-114,38,-114,37,-114,47,-114,48,-114,49,-114,50,-114,51,-114,52,-114,53,-114,54,-114,55,-114,56,-114,35,-114,36,-114,41,-114,11,-114,34,-114,40,-114,39,-114,58,-114,46,-114,17,-114,89,-114,102,-114,104,-114,105,-114,96,-114,2,-114,114,-114,112,-114,88,-114,3,-114,79,-114,80,-114,97,-114,78,-114,15,-114,16,-114,113,-114,111,-114,108,-114,59,-114,117,-114,18,-114,25,-114,10,-114,26,-114,30,-114,31,-114,32,-114,33,-114,65,-114,66,-114,67,-114,68,-114,69,-114,74,-114,76,-114,77,-114,83,-114,84,-114,85,-114,86,-114,87,-114,93,-114,94,-114,95,-114,109,-114,82,-114,116,-114,118,-114,120,-114,19,-114,20,-114,21,-114,22,-114,101,-114,60,-73}));
    AddState(263,new State(new int[]{6,-115,14,-115,119,-115,71,-115,44,-115,42,-115,45,-115,43,-115,38,-115,37,-115,47,-115,48,-115,49,-115,50,-115,51,-115,52,-115,53,-115,54,-115,55,-115,56,-115,35,-115,36,-115,41,-115,11,-115,34,-115,40,-115,39,-115,58,-115,46,-115,17,-115,89,-115,102,-115,104,-115,105,-115,96,-115,2,-115,114,-115,112,-115,88,-115,3,-115,79,-115,80,-115,97,-115,78,-115,15,-115,16,-115,113,-115,111,-115,108,-115,59,-115,117,-115,18,-115,25,-115,10,-115,26,-115,30,-115,31,-115,32,-115,33,-115,65,-115,66,-115,67,-115,68,-115,69,-115,74,-115,76,-115,77,-115,83,-115,84,-115,85,-115,86,-115,87,-115,93,-115,94,-115,95,-115,109,-115,82,-115,116,-115,118,-115,120,-115,19,-115,20,-115,21,-115,22,-115,101,-115,60,-74}));
    AddState(264,new State(new int[]{6,-116,14,-116,119,-116,71,-116,44,-116,42,-116,45,-116,43,-116,38,-116,37,-116,47,-116,48,-116,49,-116,50,-116,51,-116,52,-116,53,-116,54,-116,55,-116,56,-116,35,-116,36,-116,41,-116,11,-116,34,-116,40,-116,39,-116,58,-116,46,-116,17,-116,89,-116,102,-116,104,-116,105,-116,96,-116,2,-116,114,-116,112,-116,88,-116,3,-116,79,-116,80,-116,97,-116,78,-116,15,-116,16,-116,113,-116,111,-116,108,-116,59,-116,117,-116,18,-116,25,-116,10,-116,26,-116,30,-116,31,-116,32,-116,33,-116,65,-116,66,-116,67,-116,68,-116,69,-116,74,-116,76,-116,77,-116,83,-116,84,-116,85,-116,86,-116,87,-116,93,-116,94,-116,95,-116,109,-116,82,-116,116,-116,118,-116,120,-116,19,-116,20,-116,21,-116,22,-116,101,-116,60,-75}));
    AddState(265,new State(new int[]{5,266,6,-117,14,-117,119,-117,71,-117,44,-117,42,-117,45,-117,43,-117,38,-117,37,-117,47,-117,48,-117,49,-117,50,-117,51,-117,52,-117,53,-117,54,-117,55,-117,56,-117,35,-117,36,-117,41,-117,11,-117,34,-117,40,-117,39,-117,58,-117,46,-117,17,-117,89,-117,102,-117,104,-117,105,-117,96,-117,2,-117,114,-117,112,-117,88,-117,3,-117,79,-117,80,-117,97,-117,78,-117,15,-117,16,-117,113,-117,111,-117,108,-117,59,-117,117,-117,18,-117,25,-117,10,-117,26,-117,30,-117,31,-117,32,-117,33,-117,65,-117,66,-117,67,-117,68,-117,69,-117,74,-117,76,-117,77,-117,83,-117,84,-117,85,-117,86,-117,87,-117,93,-117,94,-117,95,-117,109,-117,82,-117,116,-117,118,-117,120,-117,19,-117,20,-117,21,-117,22,-117,101,-117,60,-76}));
    AddState(266,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,267,-90,221,-20,239,-2,311}));
    AddState(267,new State(new int[]{3,268,14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220},new int[]{-51,139,-15,144,-14,196}));
    AddState(268,new State(new int[]{18,85,25,86,10,87,15,88,16,89,26,90,30,91,31,92,32,93,33,94,34,95,40,96,59,97,65,98,66,99,67,100,68,101,69,102,74,103,76,104,77,105,78,106,83,107,84,108,85,109,86,110,87,111,89,112,93,113,94,114,95,115,109,116,82,117,116,118,118,119,120,120,19,121,20,122,21,123,22,124},new int[]{-32,269,-8,271,-6,287}));
    AddState(269,new State(new int[]{6,270}));
    AddState(270,new State(-218));
    AddState(271,new State(new int[]{5,273,18,85,25,86,10,87,15,88,16,89,26,90,30,91,31,92,32,93,33,94,34,95,40,96,59,97,65,98,66,99,67,100,68,101,69,102,74,103,76,104,77,105,78,106,83,107,84,108,85,109,86,110,87,111,89,112,93,113,94,114,95,115,109,116,82,117,116,118,118,119,120,120,19,121,20,122,21,123,22,124,6,-137,28,-137,61,-137,62,-137,11,-137,24,-137,8,-137,115,-137,63,-137,64,-137,14,-137,17,-137},new int[]{-6,272}));
    AddState(272,new State(-141));
    AddState(273,new State(new int[]{51,283,52,285,4,-145},new int[]{-10,274,-12,279,-93,280,-11,284}));
    AddState(274,new State(new int[]{6,275,17,276}));
    AddState(275,new State(-138));
    AddState(276,new State(new int[]{51,283,52,285,4,-145},new int[]{-10,277,-12,279,-93,280,-11,284}));
    AddState(277,new State(new int[]{6,278}));
    AddState(278,new State(-139));
    AddState(279,new State(-142));
    AddState(280,new State(new int[]{4,282},new int[]{-9,281}));
    AddState(281,new State(-144));
    AddState(282,new State(-148));
    AddState(283,new State(-146));
    AddState(284,new State(-143));
    AddState(285,new State(new int[]{4,282},new int[]{-9,286}));
    AddState(286,new State(-147));
    AddState(287,new State(-140));
    AddState(288,new State(new int[]{5,289,6,-118,14,-118,119,-118,71,-118,44,-118,42,-118,45,-118,43,-118,38,-118,37,-118,47,-118,48,-118,49,-118,50,-118,51,-118,52,-118,53,-118,54,-118,55,-118,56,-118,35,-118,36,-118,41,-118,11,-118,34,-118,40,-118,39,-118,58,-118,46,-118,17,-118,89,-118,102,-118,104,-118,105,-118,96,-118,2,-118,114,-118,112,-118,88,-118,3,-118,79,-118,80,-118,97,-118,78,-118,15,-118,16,-118,113,-118,111,-118,108,-118,59,-118,117,-118,18,-118,25,-118,10,-118,26,-118,30,-118,31,-118,32,-118,33,-118,65,-118,66,-118,67,-118,68,-118,69,-118,74,-118,76,-118,77,-118,83,-118,84,-118,85,-118,86,-118,87,-118,93,-118,94,-118,95,-118,109,-118,82,-118,116,-118,118,-118,120,-118,19,-118,20,-118,21,-118,22,-118,101,-118,60,-77}));
    AddState(289,new State(new int[]{32,290,29,72,30,73,31,74},new int[]{-49,292}));
    AddState(290,new State(new int[]{6,291}));
    AddState(291,new State(-255));
    AddState(292,new State(new int[]{17,293}));
    AddState(293,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,294}));
    AddState(294,new State(new int[]{6,295}));
    AddState(295,new State(-256));
    AddState(296,new State(new int[]{6,-119,14,-119,119,-119,71,-119,44,-119,42,-119,45,-119,43,-119,38,-119,37,-119,47,-119,48,-119,49,-119,50,-119,51,-119,52,-119,53,-119,54,-119,55,-119,56,-119,35,-119,36,-119,41,-119,11,-119,34,-119,40,-119,39,-119,58,-119,46,-119,17,-119,89,-119,102,-119,104,-119,105,-119,96,-119,2,-119,114,-119,112,-119,88,-119,3,-119,79,-119,80,-119,97,-119,78,-119,15,-119,16,-119,113,-119,111,-119,108,-119,59,-119,117,-119,18,-119,25,-119,10,-119,26,-119,30,-119,31,-119,32,-119,33,-119,65,-119,66,-119,67,-119,68,-119,69,-119,74,-119,76,-119,77,-119,83,-119,84,-119,85,-119,86,-119,87,-119,93,-119,94,-119,95,-119,109,-119,82,-119,116,-119,118,-119,120,-119,19,-119,20,-119,21,-119,22,-119,101,-119,60,-78}));
    AddState(297,new State(new int[]{6,-120,14,-120,119,-120,71,-120,44,-120,42,-120,45,-120,43,-120,38,-120,37,-120,47,-120,48,-120,49,-120,50,-120,51,-120,52,-120,53,-120,54,-120,55,-120,56,-120,35,-120,36,-120,41,-120,11,-120,34,-120,40,-120,39,-120,58,-120,46,-120,17,-120,89,-120,102,-120,104,-120,105,-120,96,-120,2,-120,114,-120,112,-120,88,-120,3,-120,79,-120,80,-120,97,-120,78,-120,15,-120,16,-120,113,-120,111,-120,108,-120,59,-120,117,-120,18,-120,25,-120,10,-120,26,-120,30,-120,31,-120,32,-120,33,-120,65,-120,66,-120,67,-120,68,-120,69,-120,74,-120,76,-120,77,-120,83,-120,84,-120,85,-120,86,-120,87,-120,93,-120,94,-120,95,-120,109,-120,82,-120,116,-120,118,-120,120,-120,19,-120,20,-120,21,-120,22,-120,101,-120,60,-79}));
    AddState(298,new State(new int[]{6,-121,14,-121,119,-121,71,-121,44,-121,42,-121,45,-121,43,-121,38,-121,37,-121,47,-121,48,-121,49,-121,50,-121,51,-121,52,-121,53,-121,54,-121,55,-121,56,-121,35,-121,36,-121,41,-121,11,-121,34,-121,40,-121,39,-121,58,-121,46,-121,17,-121,89,-121,102,-121,104,-121,105,-121,96,-121,2,-121,114,-121,112,-121,88,-121,3,-121,79,-121,80,-121,97,-121,78,-121,15,-121,16,-121,113,-121,111,-121,108,-121,59,-121,117,-121,18,-121,25,-121,10,-121,26,-121,30,-121,31,-121,32,-121,33,-121,65,-121,66,-121,67,-121,68,-121,69,-121,74,-121,76,-121,77,-121,83,-121,84,-121,85,-121,86,-121,87,-121,93,-121,94,-121,95,-121,109,-121,82,-121,116,-121,118,-121,120,-121,19,-121,20,-121,21,-121,22,-121,101,-121,60,-80}));
    AddState(299,new State(new int[]{6,-122,14,-122,119,-122,71,-122,44,-122,42,-122,45,-122,43,-122,38,-122,37,-122,47,-122,48,-122,49,-122,50,-122,51,-122,52,-122,53,-122,54,-122,55,-122,56,-122,35,-122,36,-122,41,-122,11,-122,34,-122,40,-122,39,-122,58,-122,46,-122,17,-122,89,-122,102,-122,104,-122,105,-122,96,-122,2,-122,114,-122,112,-122,88,-122,3,-122,79,-122,80,-122,97,-122,78,-122,15,-122,16,-122,113,-122,111,-122,108,-122,59,-122,117,-122,18,-122,25,-122,10,-122,26,-122,30,-122,31,-122,32,-122,33,-122,65,-122,66,-122,67,-122,68,-122,69,-122,74,-122,76,-122,77,-122,83,-122,84,-122,85,-122,86,-122,87,-122,93,-122,94,-122,95,-122,109,-122,82,-122,116,-122,118,-122,120,-122,19,-122,20,-122,21,-122,22,-122,101,-122,60,-81}));
    AddState(300,new State(new int[]{6,-123,14,-123,119,-123,71,-123,44,-123,42,-123,45,-123,43,-123,38,-123,37,-123,47,-123,48,-123,49,-123,50,-123,51,-123,52,-123,53,-123,54,-123,55,-123,56,-123,35,-123,36,-123,41,-123,11,-123,34,-123,40,-123,39,-123,58,-123,46,-123,17,-123,89,-123,102,-123,104,-123,105,-123,96,-123,2,-123,114,-123,112,-123,88,-123,3,-123,79,-123,80,-123,97,-123,78,-123,15,-123,16,-123,113,-123,111,-123,108,-123,59,-123,117,-123,18,-123,25,-123,10,-123,26,-123,30,-123,31,-123,32,-123,33,-123,65,-123,66,-123,67,-123,68,-123,69,-123,74,-123,76,-123,77,-123,83,-123,84,-123,85,-123,86,-123,87,-123,93,-123,94,-123,95,-123,109,-123,82,-123,116,-123,118,-123,120,-123,19,-123,20,-123,21,-123,22,-123,101,-123,60,-82}));
    AddState(301,new State(new int[]{6,-124,14,-124,119,-124,71,-124,44,-124,42,-124,45,-124,43,-124,38,-124,37,-124,47,-124,48,-124,49,-124,50,-124,51,-124,52,-124,53,-124,54,-124,55,-124,56,-124,35,-124,36,-124,41,-124,11,-124,34,-124,40,-124,39,-124,58,-124,46,-124,17,-124,89,-124,102,-124,104,-124,105,-124,96,-124,2,-124,114,-124,112,-124,88,-124,3,-124,79,-124,80,-124,97,-124,78,-124,15,-124,16,-124,113,-124,111,-124,108,-124,59,-124,117,-124,18,-124,25,-124,10,-124,26,-124,30,-124,31,-124,32,-124,33,-124,65,-124,66,-124,67,-124,68,-124,69,-124,74,-124,76,-124,77,-124,83,-124,84,-124,85,-124,86,-124,87,-124,93,-124,94,-124,95,-124,109,-124,82,-124,116,-124,118,-124,120,-124,19,-124,20,-124,21,-124,22,-124,101,-124,60,-83}));
    AddState(302,new State(new int[]{6,-125,14,-125,119,-125,71,-125,44,-125,42,-125,45,-125,43,-125,38,-125,37,-125,47,-125,48,-125,49,-125,50,-125,51,-125,52,-125,53,-125,54,-125,55,-125,56,-125,35,-125,36,-125,41,-125,11,-125,34,-125,40,-125,39,-125,58,-125,46,-125,17,-125,89,-125,102,-125,104,-125,105,-125,96,-125,2,-125,114,-125,112,-125,88,-125,3,-125,79,-125,80,-125,97,-125,78,-125,15,-125,16,-125,113,-125,111,-125,108,-125,59,-125,117,-125,18,-125,25,-125,10,-125,26,-125,30,-125,31,-125,32,-125,33,-125,65,-125,66,-125,67,-125,68,-125,69,-125,74,-125,76,-125,77,-125,83,-125,84,-125,85,-125,86,-125,87,-125,93,-125,94,-125,95,-125,109,-125,82,-125,116,-125,118,-125,120,-125,19,-125,20,-125,21,-125,22,-125,101,-125,60,-84}));
    AddState(303,new State(new int[]{6,-126,14,-126,119,-126,71,-126,44,-126,42,-126,45,-126,43,-126,38,-126,37,-126,47,-126,48,-126,49,-126,50,-126,51,-126,52,-126,53,-126,54,-126,55,-126,56,-126,35,-126,36,-126,41,-126,11,-126,34,-126,40,-126,39,-126,58,-126,46,-126,17,-126,89,-126,102,-126,104,-126,105,-126,96,-126,2,-126,114,-126,112,-126,88,-126,3,-126,79,-126,80,-126,97,-126,78,-126,15,-126,16,-126,113,-126,111,-126,108,-126,59,-126,117,-126,18,-126,25,-126,10,-126,26,-126,30,-126,31,-126,32,-126,33,-126,65,-126,66,-126,67,-126,68,-126,69,-126,74,-126,76,-126,77,-126,83,-126,84,-126,85,-126,86,-126,87,-126,93,-126,94,-126,95,-126,109,-126,82,-126,116,-126,118,-126,120,-126,19,-126,20,-126,21,-126,22,-126,101,-126,60,-85}));
    AddState(304,new State(new int[]{6,-127,14,-127,119,-127,71,-127,44,-127,42,-127,45,-127,43,-127,38,-127,37,-127,47,-127,48,-127,49,-127,50,-127,51,-127,52,-127,53,-127,54,-127,55,-127,56,-127,35,-127,36,-127,41,-127,11,-127,34,-127,40,-127,39,-127,58,-127,46,-127,17,-127,89,-127,102,-127,104,-127,105,-127,96,-127,2,-127,114,-127,112,-127,88,-127,3,-127,79,-127,80,-127,97,-127,78,-127,15,-127,16,-127,113,-127,111,-127,108,-127,59,-127,117,-127,18,-127,25,-127,10,-127,26,-127,30,-127,31,-127,32,-127,33,-127,65,-127,66,-127,67,-127,68,-127,69,-127,74,-127,76,-127,77,-127,83,-127,84,-127,85,-127,86,-127,87,-127,93,-127,94,-127,95,-127,109,-127,82,-127,116,-127,118,-127,120,-127,19,-127,20,-127,21,-127,22,-127,101,-127,60,-86}));
    AddState(305,new State(new int[]{6,-128,14,-128,119,-128,71,-128,44,-128,42,-128,45,-128,43,-128,38,-128,37,-128,47,-128,48,-128,49,-128,50,-128,51,-128,52,-128,53,-128,54,-128,55,-128,56,-128,35,-128,36,-128,41,-128,11,-128,34,-128,40,-128,39,-128,58,-128,46,-128,17,-128,89,-128,102,-128,104,-128,105,-128,96,-128,2,-128,114,-128,112,-128,88,-128,3,-128,79,-128,80,-128,97,-128,78,-128,15,-128,16,-128,113,-128,111,-128,108,-128,59,-128,117,-128,18,-128,25,-128,10,-128,26,-128,30,-128,31,-128,32,-128,33,-128,65,-128,66,-128,67,-128,68,-128,69,-128,74,-128,76,-128,77,-128,83,-128,84,-128,85,-128,86,-128,87,-128,93,-128,94,-128,95,-128,109,-128,82,-128,116,-128,118,-128,120,-128,19,-128,20,-128,21,-128,22,-128,101,-128,60,-87}));
    AddState(306,new State(new int[]{6,-129,14,-129,119,-129,71,-129,44,-129,42,-129,45,-129,43,-129,38,-129,37,-129,47,-129,48,-129,49,-129,50,-129,51,-129,52,-129,53,-129,54,-129,55,-129,56,-129,35,-129,36,-129,41,-129,11,-129,34,-129,40,-129,39,-129,58,-129,46,-129,17,-129,89,-129,102,-129,104,-129,105,-129,96,-129,2,-129,114,-129,112,-129,88,-129,3,-129,79,-129,80,-129,97,-129,78,-129,15,-129,16,-129,113,-129,111,-129,108,-129,59,-129,117,-129,18,-129,25,-129,10,-129,26,-129,30,-129,31,-129,32,-129,33,-129,65,-129,66,-129,67,-129,68,-129,69,-129,74,-129,76,-129,77,-129,83,-129,84,-129,85,-129,86,-129,87,-129,93,-129,94,-129,95,-129,109,-129,82,-129,116,-129,118,-129,120,-129,19,-129,20,-129,21,-129,22,-129,101,-129,60,-88}));
    AddState(307,new State(new int[]{6,-130,14,-130,119,-130,71,-130,44,-130,42,-130,45,-130,43,-130,38,-130,37,-130,47,-130,48,-130,49,-130,50,-130,51,-130,52,-130,53,-130,54,-130,55,-130,56,-130,35,-130,36,-130,41,-130,11,-130,34,-130,40,-130,39,-130,58,-130,46,-130,17,-130,89,-130,102,-130,104,-130,105,-130,96,-130,2,-130,114,-130,112,-130,88,-130,3,-130,79,-130,80,-130,97,-130,78,-130,15,-130,16,-130,113,-130,111,-130,108,-130,59,-130,117,-130,18,-130,25,-130,10,-130,26,-130,30,-130,31,-130,32,-130,33,-130,65,-130,66,-130,67,-130,68,-130,69,-130,74,-130,76,-130,77,-130,83,-130,84,-130,85,-130,86,-130,87,-130,93,-130,94,-130,95,-130,109,-130,82,-130,116,-130,118,-130,120,-130,19,-130,20,-130,21,-130,22,-130,101,-130,60,-89}));
    AddState(308,new State(new int[]{6,-132,14,-132,119,-132,71,-132,44,-132,42,-132,45,-132,43,-132,38,-132,37,-132,47,-132,48,-132,49,-132,50,-132,51,-132,52,-132,53,-132,54,-132,55,-132,56,-132,35,-132,36,-132,41,-132,11,-132,34,-132,40,-132,39,-132,58,-132,46,-132,17,-132,89,-132,102,-132,104,-132,105,-132,96,-132,2,-132,114,-132,112,-132,88,-132,3,-132,79,-132,80,-132,97,-132,78,-132,15,-132,16,-132,113,-132,111,-132,108,-132,59,-132,117,-132,18,-132,25,-132,10,-132,26,-132,30,-132,31,-132,32,-132,33,-132,65,-132,66,-132,67,-132,68,-132,69,-132,74,-132,76,-132,77,-132,83,-132,84,-132,85,-132,86,-132,87,-132,93,-132,94,-132,95,-132,109,-132,82,-132,116,-132,118,-132,120,-132,19,-132,20,-132,21,-132,22,-132,101,-132,60,-91}));
    AddState(309,new State(new int[]{6,-133,14,-133,119,-133,71,-133,44,-133,42,-133,45,-133,43,-133,38,-133,37,-133,47,-133,48,-133,49,-133,50,-133,51,-133,52,-133,53,-133,54,-133,55,-133,56,-133,35,-133,36,-133,41,-133,11,-133,34,-133,40,-133,39,-133,58,-133,46,-133,17,-133,89,-133,102,-133,104,-133,105,-133,96,-133,2,-133,114,-133,112,-133,88,-133,3,-133,79,-133,80,-133,97,-133,78,-133,15,-133,16,-133,113,-133,111,-133,108,-133,59,-133,117,-133,18,-133,25,-133,10,-133,26,-133,30,-133,31,-133,32,-133,33,-133,65,-133,66,-133,67,-133,68,-133,69,-133,74,-133,76,-133,77,-133,83,-133,84,-133,85,-133,86,-133,87,-133,93,-133,94,-133,95,-133,109,-133,82,-133,116,-133,118,-133,120,-133,19,-133,20,-133,21,-133,22,-133,101,-133,60,-92}));
    AddState(310,new State(new int[]{6,-134,14,-134,119,-134,71,-134,44,-134,42,-134,45,-134,43,-134,38,-134,37,-134,47,-134,48,-134,49,-134,50,-134,51,-134,52,-134,53,-134,54,-134,55,-134,56,-134,35,-134,36,-134,41,-134,11,-134,34,-134,40,-134,39,-134,58,-134,46,-134,17,-134,89,-134,102,-134,104,-134,105,-134,96,-134,2,-134,114,-134,112,-134,88,-134,3,-134,79,-134,80,-134,97,-134,78,-134,15,-134,16,-134,113,-134,111,-134,108,-134,59,-134,117,-134,18,-134,25,-134,10,-134,26,-134,30,-134,31,-134,32,-134,33,-134,65,-134,66,-134,67,-134,68,-134,69,-134,74,-134,76,-134,77,-134,83,-134,84,-134,85,-134,86,-134,87,-134,93,-134,94,-134,95,-134,109,-134,82,-134,116,-134,118,-134,120,-134,19,-134,20,-134,21,-134,22,-134,101,-134,60,-93}));
    AddState(311,new State(new int[]{60,312}));
    AddState(312,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,313}));
    AddState(313,new State(new int[]{60,314,6,-213,14,-213,119,-213,71,-213,44,-213,42,-213,45,-213,43,-213,38,-213,37,-213,47,-213,48,-213,49,-213,50,-213,51,-213,52,-213,53,-213,54,-213,55,-213,56,-213,35,-213,36,-213,41,-213,11,-213,34,-213,40,-213,39,-213,58,-213,46,-213,17,-213,89,-213,102,-213,104,-213,105,-213,96,-213,2,-213,114,-213,112,-213,88,-213,3,-213,79,-213,80,-213,97,-213,78,-213,15,-213,16,-213,113,-213,111,-213,108,-213,59,-213,117,-213,18,-213,25,-213,10,-213,26,-213,30,-213,31,-213,32,-213,33,-213,65,-213,66,-213,67,-213,68,-213,69,-213,74,-213,76,-213,77,-213,83,-213,84,-213,85,-213,86,-213,87,-213,93,-213,94,-213,95,-213,109,-213,82,-213,116,-213,118,-213,120,-213,19,-213,20,-213,21,-213,22,-213,101,-213}));
    AddState(314,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,315}));
    AddState(315,new State(-214));
    AddState(316,new State(-215));
    AddState(317,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,318,-90,221,-20,239,-2,311}));
    AddState(318,new State(new int[]{14,142,119,-245,71,-245,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,6,-245,46,-245,17,-245,89,-245,102,-245,104,-245,105,-245,96,-245,2,-245,114,-245,112,-245,88,-245,3,-245,79,-245,80,-245,97,-245,78,-245,15,-245,16,-245,113,-245,111,-245,108,-245,59,-245,117,-245,18,-245,25,-245,10,-245,26,-245,30,-245,31,-245,32,-245,33,-245,65,-245,66,-245,67,-245,68,-245,69,-245,74,-245,76,-245,77,-245,83,-245,84,-245,85,-245,86,-245,87,-245,93,-245,94,-245,95,-245,109,-245,82,-245,116,-245,118,-245,120,-245,19,-245,20,-245,21,-245,22,-245,101,-245},new int[]{-51,139,-15,144,-14,196}));
    AddState(319,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,320,-90,221,-20,239,-2,311}));
    AddState(320,new State(-246,new int[]{-51,139,-15,144,-14,196}));
    AddState(321,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,322,-90,221,-20,239,-2,311}));
    AddState(322,new State(-247,new int[]{-51,139,-15,144,-14,196}));
    AddState(323,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,324,-90,221,-20,239,-2,311}));
    AddState(324,new State(-248,new int[]{-51,139,-15,144,-14,196}));
    AddState(325,new State(new int[]{5,326}));
    AddState(326,new State(new int[]{106,204},new int[]{-59,327,-58,329}));
    AddState(327,new State(new int[]{6,328,102,234,104,236,105,237},new int[]{-78,202}));
    AddState(328,new State(-253));
    AddState(329,new State(-327));
    AddState(330,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330,79,-265},new int[]{-79,331,-91,345,-90,221,-20,239,-2,311}));
    AddState(331,new State(new int[]{79,341},new int[]{-80,332}));
    AddState(332,new State(new int[]{79,335,97,339,78,-263},new int[]{-81,333}));
    AddState(333,new State(new int[]{78,334}));
    AddState(334,new State(-254));
    AddState(335,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,336,-90,221,-20,239,-2,311}));
    AddState(336,new State(new int[]{80,337,14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220},new int[]{-51,139,-15,144,-14,196}));
    AddState(337,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,338,-90,221,-20,239,-2,311}));
    AddState(338,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,79,-257,97,-257,78,-257},new int[]{-51,139,-15,144,-14,196}));
    AddState(339,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,340,-90,221,-20,239,-2,311}));
    AddState(340,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,78,-264},new int[]{-51,139,-15,144,-14,196}));
    AddState(341,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,342,-90,221,-20,239,-2,311}));
    AddState(342,new State(new int[]{80,343,14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220},new int[]{-51,139,-15,144,-14,196}));
    AddState(343,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,344,-90,221,-20,239,-2,311}));
    AddState(344,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,79,-258,97,-258,78,-258},new int[]{-51,139,-15,144,-14,196}));
    AddState(345,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,79,-266},new int[]{-51,139,-15,144,-14,196}));
    AddState(346,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,17,-262,6,-262,114,-262,112,-262,88,-262,102,-262,104,-262,105,-262,96,-262,2,-262},new int[]{-51,139,-15,144,-14,196}));
    AddState(347,new State(new int[]{6,348}));
    AddState(348,new State(-220));
    AddState(349,new State(-335));
    AddState(350,new State(-336));
    AddState(351,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,352,-90,221,-20,239,-2,311}));
    AddState(352,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,6,-381,102,-381,104,-381,105,-381,96,-381,2,-381},new int[]{-51,139,-15,144,-14,196}));
    AddState(353,new State(new int[]{110,354}));
    AddState(354,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-75,355,-74,360,-91,359,-90,221,-20,239,-2,311}));
    AddState(355,new State(new int[]{17,356,88,-367,6,-367,102,-367,104,-367,105,-367,96,-367,2,-367}));
    AddState(356,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-74,357,-91,359,-90,221,-20,239,-2,311}));
    AddState(357,new State(new int[]{15,81,16,82,17,-371,88,-371,6,-371,102,-371,104,-371,105,-371,96,-371,2,-371},new int[]{-37,358}));
    AddState(358,new State(-368));
    AddState(359,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,15,-370,16,-370,17,-370,88,-370,6,-370,102,-370,104,-370,105,-370,96,-370,2,-370},new int[]{-51,139,-15,144,-14,196}));
    AddState(360,new State(new int[]{15,81,16,82,17,-371,88,-371,6,-371,102,-371,104,-371,105,-371,96,-371,2,-371},new int[]{-37,361}));
    AddState(361,new State(-369));
    AddState(362,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,363,-90,221,-20,239,-2,311}));
    AddState(363,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,112,-377,88,-377,6,-377,102,-377,104,-377,105,-377,96,-377,2,-377},new int[]{-51,139,-15,144,-14,196}));
    AddState(364,new State(new int[]{110,365}));
    AddState(365,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-54,366,-91,346,-90,221,-20,239,-2,311}));
    AddState(366,new State(new int[]{17,246,114,-375,112,-375,88,-375,6,-375,102,-375,104,-375,105,-375,96,-375,2,-375}));
    AddState(367,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,368,-90,221,-20,239,-2,311}));
    AddState(368,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,113,-324,114,-324,112,-324,88,-324,6,-324,102,-324,104,-324,105,-324,96,-324,2,-324},new int[]{-51,139,-15,144,-14,196}));
    AddState(369,new State(-338));
    AddState(370,new State(-347,new int[]{-62,371,-61,381}));
    AddState(371,new State(new int[]{17,373,108,374,59,375,117,-346,113,-346,114,-346,112,-346,88,-346,6,-346,102,-346,104,-346,105,-346,96,-346,2,-346},new int[]{-60,372}));
    AddState(372,new State(-348));
    AddState(373,new State(-354));
    AddState(374,new State(-355));
    AddState(375,new State(new int[]{108,376,59,377}));
    AddState(376,new State(-356));
    AddState(377,new State(new int[]{108,378,59,379}));
    AddState(378,new State(-357));
    AddState(379,new State(new int[]{108,380}));
    AddState(380,new State(-358));
    AddState(381,new State(new int[]{5,407,18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,382}));
    AddState(382,new State(new int[]{60,405,3,-206,18,-206,25,-206,10,-206,15,-206,16,-206,26,-206,30,-206,31,-206,32,-206,33,-206,34,-206,40,-206,59,-206,65,-206,66,-206,67,-206,68,-206,69,-206,74,-206,76,-206,77,-206,78,-206,83,-206,84,-206,85,-206,86,-206,87,-206,89,-206,93,-206,94,-206,95,-206,109,-206,82,-206,116,-206,118,-206,120,-206,19,-206,20,-206,21,-206,22,-206,11,-206,13,-206,111,-206,17,-206,108,-206,117,-206,113,-206,114,-206,112,-206,88,-206,6,-206,102,-206,104,-206,105,-206,96,-206,2,-206},new int[]{-3,383}));
    AddState(383,new State(new int[]{3,402,18,85,25,86,10,87,15,88,16,89,26,90,30,91,31,92,32,93,33,94,34,95,40,96,59,97,65,98,66,99,67,100,68,101,69,102,74,103,76,104,77,105,78,106,83,107,84,108,85,109,86,110,87,111,89,112,93,113,94,114,95,115,109,116,82,117,116,118,118,119,120,120,19,121,20,122,21,123,22,124,11,-342,13,-342,111,-342,17,-342,108,-342,117,-342,113,-342,114,-342,112,-342,88,-342,6,-342,102,-342,104,-342,105,-342,96,-342,2,-342},new int[]{-18,384,-6,404}));
    AddState(384,new State(new int[]{109,397,11,400,13,-361,111,-361,17,-361,108,-361,59,-361,117,-361,113,-361,114,-361,112,-361,88,-361,6,-361,102,-361,104,-361,105,-361,96,-361,2,-361},new int[]{-64,385}));
    AddState(385,new State(new int[]{13,395,111,-359,17,-359,108,-359,59,-359,117,-359,113,-359,114,-359,112,-359,88,-359,6,-359,102,-359,104,-359,105,-359,96,-359,2,-359},new int[]{-66,386}));
    AddState(386,new State(new int[]{111,388,17,-364,108,-364,59,-364,117,-364,113,-364,114,-364,112,-364,88,-364,6,-364,102,-364,104,-364,105,-364,96,-364,2,-364},new int[]{-69,387}));
    AddState(387,new State(-349));
    AddState(388,new State(new int[]{5,389}));
    AddState(389,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-67,390,-2,394}));
    AddState(390,new State(new int[]{6,391,17,392}));
    AddState(391,new State(-365));
    AddState(392,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,393}));
    AddState(393,new State(-306));
    AddState(394,new State(-307));
    AddState(395,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,396,-90,221,-20,239,-2,311}));
    AddState(396,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,111,-360,17,-360,108,-360,59,-360,117,-360,113,-360,114,-360,112,-360,88,-360,6,-360,102,-360,104,-360,105,-360,96,-360,2,-360},new int[]{-51,139,-15,144,-14,196}));
    AddState(397,new State(new int[]{110,398}));
    AddState(398,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,399}));
    AddState(399,new State(-362));
    AddState(400,new State(new int[]{109,401}));
    AddState(401,new State(-363));
    AddState(402,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,403}));
    AddState(403,new State(-343));
    AddState(404,new State(-344));
    AddState(405,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,406}));
    AddState(406,new State(-207));
    AddState(407,new State(new int[]{106,204,5,-347,18,-347,25,-347,10,-347,15,-347,16,-347,26,-347,30,-347,31,-347,32,-347,33,-347,34,-347,40,-347,59,-347,65,-347,66,-347,67,-347,68,-347,69,-347,74,-347,76,-347,77,-347,78,-347,83,-347,84,-347,85,-347,86,-347,87,-347,89,-347,93,-347,94,-347,95,-347,109,-347,82,-347,116,-347,118,-347,120,-347,19,-347,20,-347,21,-347,22,-347},new int[]{-70,408,-59,413,-58,329,-62,414,-61,381}));
    AddState(408,new State(new int[]{6,409}));
    AddState(409,new State(new int[]{3,402,18,85,25,86,10,87,15,88,16,89,26,90,30,91,31,92,32,93,33,94,34,95,40,96,59,97,65,98,66,99,67,100,68,101,69,102,74,103,76,104,77,105,78,106,83,107,84,108,85,109,86,110,87,111,89,112,93,113,94,114,95,115,109,116,82,117,116,118,118,119,120,120,19,121,20,122,21,123,22,124,13,-342,111,-342,17,-342,108,-342,117,-342,113,-342,114,-342,112,-342,88,-342,6,-342,102,-342,104,-342,105,-342,96,-342,2,-342},new int[]{-18,410,-6,404}));
    AddState(410,new State(new int[]{13,395,111,-359,17,-359,108,-359,59,-359,117,-359,113,-359,114,-359,112,-359,88,-359,6,-359,102,-359,104,-359,105,-359,96,-359,2,-359},new int[]{-66,411}));
    AddState(411,new State(new int[]{111,388,17,-364,108,-364,59,-364,117,-364,113,-364,114,-364,112,-364,88,-364,6,-364,102,-364,104,-364,105,-364,96,-364,2,-364},new int[]{-69,412}));
    AddState(412,new State(-350));
    AddState(413,new State(new int[]{102,234,104,236,105,237,6,-351},new int[]{-78,202}));
    AddState(414,new State(new int[]{17,373,108,374,59,375,6,-352},new int[]{-60,372}));
    AddState(415,new State(new int[]{53,420,4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,416,-2,421,-90,221,-20,239}));
    AddState(416,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,3,402,18,85,25,86,10,87,15,88,16,89,26,90,30,91,31,92,32,93,33,94,34,418,40,419,59,97,65,98,66,99,67,100,68,101,69,102,74,103,76,104,77,105,78,106,83,107,84,108,85,109,86,110,87,111,89,112,93,113,94,114,95,115,109,116,82,117,116,118,118,119,120,120,19,121,20,122,21,123,22,124,39,219,58,220,17,-342,101,-342,117,-342,113,-342,114,-342,112,-342,88,-342,6,-342,102,-342,104,-342,105,-342,96,-342,2,-342},new int[]{-18,417,-51,139,-15,144,-14,196,-6,404}));
    AddState(417,new State(-339));
    AddState(418,new State(new int[]{17,-28,101,-28,117,-28,113,-28,114,-28,112,-28,88,-28,6,-28,102,-28,104,-28,105,-28,96,-28,2,-28,4,-276,81,-276,19,-276,20,-276,21,-276,22,-276,82,-276,5,-276,62,-276,18,-276,25,-276,10,-276,15,-276,16,-276,26,-276,30,-276,31,-276,32,-276,33,-276,34,-276,40,-276,59,-276,65,-276,66,-276,67,-276,68,-276,69,-276,74,-276,76,-276,77,-276,78,-276,83,-276,84,-276,85,-276,86,-276,87,-276,89,-276,93,-276,94,-276,95,-276,109,-276,116,-276,118,-276,120,-276,73,-276,11,-276,57,-276,52,-276,51,-276,12,-276,75,-276}));
    AddState(419,new State(new int[]{17,-29,101,-29,117,-29,113,-29,114,-29,112,-29,88,-29,6,-29,102,-29,104,-29,105,-29,96,-29,2,-29,4,-278,81,-278,19,-278,20,-278,21,-278,22,-278,82,-278,5,-278,62,-278,18,-278,25,-278,10,-278,15,-278,16,-278,26,-278,30,-278,31,-278,32,-278,33,-278,34,-278,40,-278,59,-278,65,-278,66,-278,67,-278,68,-278,69,-278,74,-278,76,-278,77,-278,78,-278,83,-278,84,-278,85,-278,86,-278,87,-278,89,-278,93,-278,94,-278,95,-278,109,-278,116,-278,118,-278,120,-278,73,-278,11,-278,57,-278,52,-278,51,-278,12,-278,75,-278}));
    AddState(420,new State(-340));
    AddState(421,new State(new int[]{60,422}));
    AddState(422,new State(new int[]{53,423,18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,313}));
    AddState(423,new State(-341));
    AddState(424,new State(new int[]{60,405,6,-206,14,-206,119,-206,71,-206,44,-206,42,-206,45,-206,43,-206,38,-206,37,-206,47,-206,48,-206,49,-206,50,-206,51,-206,52,-206,53,-206,54,-206,55,-206,56,-206,35,-206,36,-206,41,-206,11,-206,34,-206,40,-206,39,-206,58,-206,46,-206,17,-206,89,-206,102,-206,104,-206,105,-206,96,-206,2,-206,114,-206,112,-206,88,-206,3,-206,79,-206,80,-206,97,-206,78,-206,15,-206,16,-206,113,-206,111,-206,108,-206,59,-206,117,-206,18,-206,25,-206,10,-206,26,-206,30,-206,31,-206,32,-206,33,-206,65,-206,66,-206,67,-206,68,-206,69,-206,74,-206,76,-206,77,-206,83,-206,84,-206,85,-206,86,-206,87,-206,93,-206,94,-206,95,-206,109,-206,82,-206,116,-206,118,-206,120,-206,19,-206,20,-206,21,-206,22,-206,101,-206},new int[]{-3,425}));
    AddState(425,new State(-252));
    AddState(426,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,427,-90,221,-20,239,-2,311}));
    AddState(427,new State(new int[]{14,142,119,-281,71,-281,44,-281,42,-281,45,-281,43,-281,38,-281,37,-281,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,-281,36,-281,41,-281,11,-281,34,-281,40,-281,39,-281,58,-281,46,-281,6,-281,17,-281,89,-281,102,-281,104,-281,105,-281,96,-281,2,-281,114,-281,112,-281,88,-281,3,-281,79,-281,80,-281,97,-281,78,-281,15,-281,16,-281,113,-281,111,-281,108,-281,59,-281,117,-281,18,-281,25,-281,10,-281,26,-281,30,-281,31,-281,32,-281,33,-281,65,-281,66,-281,67,-281,68,-281,69,-281,74,-281,76,-281,77,-281,83,-281,84,-281,85,-281,86,-281,87,-281,93,-281,94,-281,95,-281,109,-281,82,-281,116,-281,118,-281,120,-281,19,-281,20,-281,21,-281,22,-281,101,-281},new int[]{-51,139,-15,144,-14,196}));
    AddState(428,new State(new int[]{25,429}));
    AddState(429,new State(new int[]{5,430}));
    AddState(430,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-38,431,-2,126}));
    AddState(431,new State(new int[]{6,432,17,77}));
    AddState(432,new State(new int[]{63,433}));
    AddState(433,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,434}));
    AddState(434,new State(new int[]{5,462,11,-286,64,-286,40,-286,13,-286,17,-286,28,-286,24,-286,8,-286,115,-286,70,-286,6,-286},new int[]{-39,435}));
    AddState(435,new State(-169,new int[]{-42,436}));
    AddState(436,new State(new int[]{11,440,64,446,40,448,13,450,17,-194,28,-194,24,-194,8,-194,115,-194,70,-194,6,-194},new int[]{-45,437,-41,438,-44,439}));
    AddState(437,new State(-193));
    AddState(438,new State(-170));
    AddState(439,new State(-195));
    AddState(440,new State(new int[]{64,441}));
    AddState(441,new State(new int[]{67,443,17,-181,28,-181,24,-181,8,-181,115,-181,70,-181,6,-181,61,-181,62,-181,11,-181,63,-181,64,-181,14,-181},new int[]{-43,442}));
    AddState(442,new State(-179));
    AddState(443,new State(new int[]{68,444,69,445}));
    AddState(444,new State(-182));
    AddState(445,new State(-183));
    AddState(446,new State(new int[]{67,443,17,-181,28,-181,24,-181,8,-181,115,-181,70,-181,6,-181,61,-181,62,-181,11,-181,63,-181,64,-181,14,-181},new int[]{-43,447}));
    AddState(447,new State(-180));
    AddState(448,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,449}));
    AddState(449,new State(-171));
    AddState(450,new State(new int[]{90,451,92,458,91,460}));
    AddState(451,new State(new int[]{98,453,65,456,66,457},new int[]{-40,452}));
    AddState(452,new State(-172));
    AddState(453,new State(new int[]{62,454,61,455}));
    AddState(454,new State(-175));
    AddState(455,new State(-176));
    AddState(456,new State(-177));
    AddState(457,new State(-178));
    AddState(458,new State(new int[]{98,453,65,456,66,457},new int[]{-40,459}));
    AddState(459,new State(-173));
    AddState(460,new State(new int[]{98,453,65,456,66,457},new int[]{-40,461}));
    AddState(461,new State(-174));
    AddState(462,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-38,463,-2,126}));
    AddState(463,new State(new int[]{6,464,17,77}));
    AddState(464,new State(-287));
    AddState(465,new State(-187));
    AddState(466,new State(new int[]{18,85,25,86,10,87,15,88,16,89,26,90,30,91,31,92,32,93,33,94,34,95,40,96,59,97,65,98,66,99,67,100,68,101,69,102,74,103,76,104,77,105,78,106,83,107,84,108,85,109,86,110,87,111,89,112,93,113,94,114,95,115,109,116,82,117,116,118,118,119,120,120,19,121,20,122,21,123,22,124,28,-135,61,-135,62,-135,11,-135,24,-135,8,-135,115,-135,63,-135,64,-135,14,-135,17,-135,6,-135},new int[]{-33,467,-32,514,-8,271,-6,287}));
    AddState(467,new State(-149,new int[]{-36,468}));
    AddState(468,new State(new int[]{28,470,61,473,62,490,11,492,24,495,8,500,115,502,63,506,64,446,14,511,17,-13,6,-13},new int[]{-34,469,-35,513,-44,510}));
    AddState(469,new State(-150));
    AddState(470,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,471}));
    AddState(471,new State(new int[]{61,473,62,490,11,492,24,495,8,500,115,502,63,506,64,446,14,511},new int[]{-35,472,-44,510}));
    AddState(472,new State(-151));
    AddState(473,new State(new int[]{62,475,5,476,51,479,52,486,4,222,81,223,19,481,20,482,21,483,22,484,82,485,18,489},new int[]{-90,474,-19,488}));
    AddState(474,new State(-153));
    AddState(475,new State(-154));
    AddState(476,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,477,-90,221,-20,239,-2,311}));
    AddState(477,new State(new int[]{6,478,14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220},new int[]{-51,139,-15,144,-14,196}));
    AddState(478,new State(-155));
    AddState(479,new State(new int[]{4,222,81,223,19,481,20,482,21,483,22,484,82,485},new int[]{-90,480}));
    AddState(480,new State(-156));
    AddState(481,new State(-271));
    AddState(482,new State(-272));
    AddState(483,new State(-273));
    AddState(484,new State(-274));
    AddState(485,new State(-275));
    AddState(486,new State(new int[]{4,222,81,223,19,481,20,482,21,483,22,484,82,485},new int[]{-90,487}));
    AddState(487,new State(-157));
    AddState(488,new State(-158));
    AddState(489,new State(-15));
    AddState(490,new State(new int[]{13,68,28,-196,61,-196,62,-196,11,-196,24,-196,8,-196,115,-196,63,-196,64,-196,14,-196,17,-196,6,-196},new int[]{-47,491}));
    AddState(491,new State(-159));
    AddState(492,new State(new int[]{62,493,64,441}));
    AddState(493,new State(new int[]{13,68,28,-196,61,-196,62,-196,11,-196,24,-196,8,-196,115,-196,63,-196,64,-196,14,-196,17,-196,6,-196},new int[]{-47,494}));
    AddState(494,new State(-160));
    AddState(495,new State(new int[]{25,496}));
    AddState(496,new State(new int[]{15,81,16,82,13,-371,27,-371,28,-371,61,-371,62,-371,11,-371,24,-371,8,-371,115,-371,63,-371,64,-371,14,-371,17,-371,6,-371},new int[]{-37,497}));
    AddState(497,new State(new int[]{13,68,27,-196,28,-196,61,-196,62,-196,11,-196,24,-196,8,-196,115,-196,63,-196,64,-196,14,-196,17,-196,6,-196},new int[]{-47,498}));
    AddState(498,new State(new int[]{27,125,28,-167,61,-167,62,-167,11,-167,24,-167,8,-167,115,-167,63,-167,64,-167,14,-167,17,-167,6,-167},new int[]{-13,499}));
    AddState(499,new State(-161));
    AddState(500,new State(new int[]{13,68,28,-196,61,-196,62,-196,11,-196,24,-196,8,-196,115,-196,63,-196,64,-196,14,-196,17,-196,6,-196},new int[]{-47,501}));
    AddState(501,new State(-162));
    AddState(502,new State(new int[]{5,503}));
    AddState(503,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,504,-90,221,-20,239,-2,311}));
    AddState(504,new State(new int[]{6,505,14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220},new int[]{-51,139,-15,144,-14,196}));
    AddState(505,new State(-163));
    AddState(506,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,507}));
    AddState(507,new State(new int[]{5,462,40,-286,13,-286,28,-286,61,-286,62,-286,11,-286,24,-286,8,-286,115,-286,63,-286,64,-286,14,-286,17,-286,6,-286},new int[]{-39,508}));
    AddState(508,new State(-169,new int[]{-42,509}));
    AddState(509,new State(new int[]{40,448,13,450,28,-164,61,-164,62,-164,11,-164,24,-164,8,-164,115,-164,63,-164,64,-164,14,-164,17,-164,6,-164},new int[]{-41,438}));
    AddState(510,new State(-165));
    AddState(511,new State(new int[]{18,85,25,86,10,87,15,88,16,89,26,90,30,91,31,92,32,93,33,94,34,95,40,96,59,97,65,98,66,99,67,100,68,101,69,102,74,103,76,104,77,105,78,106,83,107,84,108,85,109,86,110,87,111,89,112,93,113,94,114,95,115,109,116,82,117,116,118,118,119,120,120,19,121,20,122,21,123,22,124},new int[]{-6,512}));
    AddState(512,new State(-166));
    AddState(513,new State(-152));
    AddState(514,new State(-136));
    AddState(515,new State(-14));
    AddState(516,new State(-188));
    AddState(517,new State(-12));
    AddState(518,new State(new int[]{11,519}));
    AddState(519,new State(new int[]{12,520}));
    AddState(520,new State(-17));
    AddState(521,new State(new int[]{77,522}));
    AddState(522,new State(new int[]{92,527,91,557,33,559,90,560,106,204},new int[]{-86,523,-85,565,-88,542,-59,564,-58,329}));
    AddState(523,new State(new int[]{78,524,92,527,91,557,33,559,90,560,106,204},new int[]{-85,525,-88,542,-59,564,-58,329}));
    AddState(524,new State(-8));
    AddState(525,new State(new int[]{96,526}));
    AddState(526,new State(-312));
    AddState(527,new State(new int[]{71,540,18,-198,25,-198,10,-198,15,-198,16,-198,26,-198,30,-198,31,-198,32,-198,33,-198,34,-198,40,-198,59,-198,65,-198,66,-198,67,-198,68,-198,69,-198,74,-198,76,-198,77,-198,78,-198,83,-198,84,-198,85,-198,86,-198,87,-198,89,-198,93,-198,94,-198,95,-198,109,-198,82,-198,116,-198,118,-198,120,-198,19,-198,20,-198,21,-198,22,-198},new int[]{-48,528}));
    AddState(528,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,529}));
    AddState(529,new State(new int[]{98,530}));
    AddState(530,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-87,531,-2,537}));
    AddState(531,new State(new int[]{17,533,117,367,96,-323},new int[]{-71,532}));
    AddState(532,new State(-314));
    AddState(533,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,534}));
    AddState(534,new State(new int[]{38,535}));
    AddState(535,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,536,-90,221,-20,239,-2,311}));
    AddState(536,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,17,-325,117,-325,96,-325},new int[]{-51,139,-15,144,-14,196}));
    AddState(537,new State(new int[]{38,538}));
    AddState(538,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,539,-90,221,-20,239,-2,311}));
    AddState(539,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,17,-326,117,-326,96,-326},new int[]{-51,139,-15,144,-14,196}));
    AddState(540,new State(new int[]{29,72,30,73,31,74,32,75,33,76},new int[]{-50,541,-49,71}));
    AddState(541,new State(-199));
    AddState(542,new State(new int[]{100,543}));
    AddState(543,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,544}));
    AddState(544,new State(new int[]{5,554,99,-304,106,-304},new int[]{-68,545}));
    AddState(545,new State(new int[]{99,546,106,204},new int[]{-59,553,-58,329}));
    AddState(546,new State(new int[]{5,547}));
    AddState(547,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-89,548,-91,552,-90,221,-20,239,-2,311}));
    AddState(548,new State(new int[]{6,549,17,550}));
    AddState(549,new State(-315));
    AddState(550,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,551,-90,221,-20,239,-2,311}));
    AddState(551,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,6,-319,17,-319},new int[]{-51,139,-15,144,-14,196}));
    AddState(552,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,6,-320,17,-320},new int[]{-51,139,-15,144,-14,196}));
    AddState(553,new State(new int[]{102,234,104,236,105,237,96,-316},new int[]{-78,202}));
    AddState(554,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-67,555,-2,394}));
    AddState(555,new State(new int[]{6,556,17,392}));
    AddState(556,new State(-305));
    AddState(557,new State(new int[]{71,540,100,-198},new int[]{-48,558}));
    AddState(558,new State(-321));
    AddState(559,new State(-322));
    AddState(560,new State(new int[]{101,561}));
    AddState(561,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,562}));
    AddState(562,new State(new int[]{117,367,96,-323},new int[]{-71,563}));
    AddState(563,new State(-317));
    AddState(564,new State(new int[]{102,234,104,236,105,237,96,-318},new int[]{-78,202}));
    AddState(565,new State(new int[]{96,566}));
    AddState(566,new State(-313));
    AddState(567,new State(new int[]{9,568}));
    AddState(568,new State(new int[]{10,518,18,-16,25,-16,15,-16,16,-16,26,-16,30,-16,31,-16,32,-16,33,-16,34,-16,40,-16,59,-16,65,-16,66,-16,67,-16,68,-16,69,-16,74,-16,76,-16,77,-16,78,-16,83,-16,84,-16,85,-16,86,-16,87,-16,89,-16,93,-16,94,-16,95,-16,109,-16,82,-16,116,-16,118,-16,120,-16,19,-16,20,-16,21,-16,22,-16},new int[]{-5,569}));
    AddState(569,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,570}));
    AddState(570,new State(new int[]{60,405,13,-206},new int[]{-3,571}));
    AddState(571,new State(new int[]{13,572}));
    AddState(572,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,573}));
    AddState(573,new State(new int[]{5,574}));
    AddState(574,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-38,575,-2,126}));
    AddState(575,new State(new int[]{6,576,17,77}));
    AddState(576,new State(-7));
    AddState(577,new State(new int[]{116,578,83,584}));
    AddState(578,new State(new int[]{10,518,18,-16,25,-16,15,-16,16,-16,26,-16,30,-16,31,-16,32,-16,33,-16,34,-16,40,-16,59,-16,65,-16,66,-16,67,-16,68,-16,69,-16,74,-16,76,-16,77,-16,78,-16,83,-16,84,-16,85,-16,86,-16,87,-16,89,-16,93,-16,94,-16,95,-16,109,-16,82,-16,116,-16,118,-16,120,-16,19,-16,20,-16,21,-16,22,-16},new int[]{-5,579}));
    AddState(579,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,580}));
    AddState(580,new State(new int[]{60,405,3,-206},new int[]{-3,581}));
    AddState(581,new State(new int[]{3,582}));
    AddState(582,new State(new int[]{106,204},new int[]{-59,583,-58,329}));
    AddState(583,new State(new int[]{102,234,104,236,105,237,2,-9},new int[]{-78,202}));
    AddState(584,new State(new int[]{10,518,18,-16,25,-16,15,-16,16,-16,26,-16,30,-16,31,-16,32,-16,33,-16,34,-16,40,-16,59,-16,65,-16,66,-16,67,-16,68,-16,69,-16,74,-16,76,-16,77,-16,78,-16,83,-16,84,-16,85,-16,86,-16,87,-16,89,-16,93,-16,94,-16,95,-16,109,-16,82,-16,116,-16,118,-16,120,-16,19,-16,20,-16,21,-16,22,-16},new int[]{-5,585}));
    AddState(585,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,586}));
    AddState(586,new State(new int[]{60,405,84,-206,85,-206,86,-206,90,-206,91,-206,92,-206},new int[]{-3,587}));
    AddState(587,new State(new int[]{84,606,85,607,86,608,90,-296,91,-296,92,-296},new int[]{-82,588}));
    AddState(588,new State(new int[]{90,601,91,602,92,603},new int[]{-83,589}));
    AddState(589,new State(new int[]{13,590}));
    AddState(590,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-65,591,-2,599}));
    AddState(591,new State(new int[]{93,596,79,-308,77,-308},new int[]{-17,592}));
    AddState(592,new State(new int[]{79,594,77,-310},new int[]{-84,593}));
    AddState(593,new State(-292));
    AddState(594,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,595,-90,221,-20,239,-2,311}));
    AddState(595,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,77,-311},new int[]{-51,139,-15,144,-14,196}));
    AddState(596,new State(new int[]{94,597}));
    AddState(597,new State(new int[]{95,598}));
    AddState(598,new State(-309));
    AddState(599,new State(new int[]{60,405,93,-206,79,-206,77,-206},new int[]{-3,600}));
    AddState(600,new State(-353));
    AddState(601,new State(-300));
    AddState(602,new State(-301));
    AddState(603,new State(new int[]{87,604,13,-302}));
    AddState(604,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-67,605,-2,394}));
    AddState(605,new State(new int[]{17,392,13,-303}));
    AddState(606,new State(-297));
    AddState(607,new State(-298));
    AddState(608,new State(new int[]{87,609}));
    AddState(609,new State(-299));
    AddState(610,new State(-294));
    AddState(611,new State(-295));
    AddState(612,new State(-285));
    AddState(613,new State(-3));
    AddState(614,new State(-4));
    AddState(615,new State(-5));

    rules=new Rule[382];
    rules[1]=new Rule(-92, new int[]{-1,2});
    rules[2]=new Rule(-1, new int[]{-22});
    rules[3]=new Rule(-1, new int[]{-24});
    rules[4]=new Rule(-1, new int[]{-23});
    rules[5]=new Rule(-1, new int[]{-25});
    rules[6]=new Rule(-22, new int[]{7,23,-5,-2,-3,-27});
    rules[7]=new Rule(-23, new int[]{7,-16,9,-5,-2,-3,13,-2,5,-38,6});
    rules[8]=new Rule(-24, new int[]{7,-26,77,-86,78});
    rules[9]=new Rule(-25, new int[]{7,-4,116,-5,-2,-3,3,-59});
    rules[10]=new Rule(-27, new int[]{5,-28,-29,6});
    rules[11]=new Rule(-28, new int[]{-28,17,-31});
    rules[12]=new Rule(-28, new int[]{-31});
    rules[13]=new Rule(-31, new int[]{-7,-33,-36});
    rules[14]=new Rule(-7, new int[]{-2});
    rules[15]=new Rule(-19, new int[]{18});
    rules[16]=new Rule(-5, new int[]{});
    rules[17]=new Rule(-5, new int[]{10,11,12});
    rules[18]=new Rule(-6, new int[]{18});
    rules[19]=new Rule(-6, new int[]{25});
    rules[20]=new Rule(-6, new int[]{10});
    rules[21]=new Rule(-6, new int[]{15});
    rules[22]=new Rule(-6, new int[]{16});
    rules[23]=new Rule(-6, new int[]{26});
    rules[24]=new Rule(-6, new int[]{30});
    rules[25]=new Rule(-6, new int[]{31});
    rules[26]=new Rule(-6, new int[]{32});
    rules[27]=new Rule(-6, new int[]{33});
    rules[28]=new Rule(-6, new int[]{34});
    rules[29]=new Rule(-6, new int[]{40});
    rules[30]=new Rule(-6, new int[]{59});
    rules[31]=new Rule(-6, new int[]{65});
    rules[32]=new Rule(-6, new int[]{66});
    rules[33]=new Rule(-6, new int[]{67});
    rules[34]=new Rule(-6, new int[]{68});
    rules[35]=new Rule(-6, new int[]{69});
    rules[36]=new Rule(-6, new int[]{74});
    rules[37]=new Rule(-6, new int[]{76});
    rules[38]=new Rule(-6, new int[]{77});
    rules[39]=new Rule(-6, new int[]{78});
    rules[40]=new Rule(-6, new int[]{83});
    rules[41]=new Rule(-6, new int[]{84});
    rules[42]=new Rule(-6, new int[]{85});
    rules[43]=new Rule(-6, new int[]{86});
    rules[44]=new Rule(-6, new int[]{87});
    rules[45]=new Rule(-6, new int[]{89});
    rules[46]=new Rule(-6, new int[]{93});
    rules[47]=new Rule(-6, new int[]{94});
    rules[48]=new Rule(-6, new int[]{95});
    rules[49]=new Rule(-6, new int[]{109});
    rules[50]=new Rule(-6, new int[]{82});
    rules[51]=new Rule(-6, new int[]{116});
    rules[52]=new Rule(-6, new int[]{118});
    rules[53]=new Rule(-6, new int[]{120});
    rules[54]=new Rule(-6, new int[]{19});
    rules[55]=new Rule(-6, new int[]{20});
    rules[56]=new Rule(-6, new int[]{21});
    rules[57]=new Rule(-6, new int[]{22});
    rules[58]=new Rule(-2, new int[]{18});
    rules[59]=new Rule(-2, new int[]{25});
    rules[60]=new Rule(-2, new int[]{10});
    rules[61]=new Rule(-2, new int[]{15});
    rules[62]=new Rule(-2, new int[]{16});
    rules[63]=new Rule(-2, new int[]{26});
    rules[64]=new Rule(-2, new int[]{30});
    rules[65]=new Rule(-2, new int[]{31});
    rules[66]=new Rule(-2, new int[]{32});
    rules[67]=new Rule(-2, new int[]{33});
    rules[68]=new Rule(-2, new int[]{34});
    rules[69]=new Rule(-2, new int[]{40});
    rules[70]=new Rule(-2, new int[]{59});
    rules[71]=new Rule(-2, new int[]{65});
    rules[72]=new Rule(-2, new int[]{66});
    rules[73]=new Rule(-2, new int[]{67});
    rules[74]=new Rule(-2, new int[]{68});
    rules[75]=new Rule(-2, new int[]{69});
    rules[76]=new Rule(-2, new int[]{74});
    rules[77]=new Rule(-2, new int[]{76});
    rules[78]=new Rule(-2, new int[]{77});
    rules[79]=new Rule(-2, new int[]{78});
    rules[80]=new Rule(-2, new int[]{83});
    rules[81]=new Rule(-2, new int[]{84});
    rules[82]=new Rule(-2, new int[]{85});
    rules[83]=new Rule(-2, new int[]{86});
    rules[84]=new Rule(-2, new int[]{87});
    rules[85]=new Rule(-2, new int[]{89});
    rules[86]=new Rule(-2, new int[]{93});
    rules[87]=new Rule(-2, new int[]{94});
    rules[88]=new Rule(-2, new int[]{95});
    rules[89]=new Rule(-2, new int[]{109});
    rules[90]=new Rule(-2, new int[]{82});
    rules[91]=new Rule(-2, new int[]{116});
    rules[92]=new Rule(-2, new int[]{118});
    rules[93]=new Rule(-2, new int[]{120});
    rules[94]=new Rule(-2, new int[]{19});
    rules[95]=new Rule(-2, new int[]{20});
    rules[96]=new Rule(-2, new int[]{21});
    rules[97]=new Rule(-2, new int[]{22});
    rules[98]=new Rule(-2, new int[]{59});
    rules[99]=new Rule(-20, new int[]{18});
    rules[100]=new Rule(-20, new int[]{25});
    rules[101]=new Rule(-20, new int[]{10});
    rules[102]=new Rule(-20, new int[]{15});
    rules[103]=new Rule(-20, new int[]{16});
    rules[104]=new Rule(-20, new int[]{26});
    rules[105]=new Rule(-20, new int[]{30});
    rules[106]=new Rule(-20, new int[]{31});
    rules[107]=new Rule(-20, new int[]{32});
    rules[108]=new Rule(-20, new int[]{33});
    rules[109]=new Rule(-20, new int[]{34});
    rules[110]=new Rule(-20, new int[]{40});
    rules[111]=new Rule(-20, new int[]{59});
    rules[112]=new Rule(-20, new int[]{65});
    rules[113]=new Rule(-20, new int[]{66});
    rules[114]=new Rule(-20, new int[]{67});
    rules[115]=new Rule(-20, new int[]{68});
    rules[116]=new Rule(-20, new int[]{69});
    rules[117]=new Rule(-20, new int[]{74});
    rules[118]=new Rule(-20, new int[]{76});
    rules[119]=new Rule(-20, new int[]{77});
    rules[120]=new Rule(-20, new int[]{78});
    rules[121]=new Rule(-20, new int[]{83});
    rules[122]=new Rule(-20, new int[]{84});
    rules[123]=new Rule(-20, new int[]{85});
    rules[124]=new Rule(-20, new int[]{86});
    rules[125]=new Rule(-20, new int[]{87});
    rules[126]=new Rule(-20, new int[]{89});
    rules[127]=new Rule(-20, new int[]{93});
    rules[128]=new Rule(-20, new int[]{94});
    rules[129]=new Rule(-20, new int[]{95});
    rules[130]=new Rule(-20, new int[]{109});
    rules[131]=new Rule(-20, new int[]{82});
    rules[132]=new Rule(-20, new int[]{116});
    rules[133]=new Rule(-20, new int[]{118});
    rules[134]=new Rule(-20, new int[]{120});
    rules[135]=new Rule(-33, new int[]{});
    rules[136]=new Rule(-33, new int[]{-32});
    rules[137]=new Rule(-32, new int[]{-8});
    rules[138]=new Rule(-32, new int[]{-8,5,-10,6});
    rules[139]=new Rule(-32, new int[]{-8,5,-10,17,-10,6});
    rules[140]=new Rule(-8, new int[]{-6});
    rules[141]=new Rule(-8, new int[]{-8,-6});
    rules[142]=new Rule(-10, new int[]{-12});
    rules[143]=new Rule(-10, new int[]{-11});
    rules[144]=new Rule(-12, new int[]{-93,-9});
    rules[145]=new Rule(-93, new int[]{});
    rules[146]=new Rule(-93, new int[]{51});
    rules[147]=new Rule(-11, new int[]{52,-9});
    rules[148]=new Rule(-9, new int[]{4});
    rules[149]=new Rule(-36, new int[]{});
    rules[150]=new Rule(-36, new int[]{-36,-34});
    rules[151]=new Rule(-34, new int[]{28,-2,-35});
    rules[152]=new Rule(-34, new int[]{-35});
    rules[153]=new Rule(-35, new int[]{61,-90});
    rules[154]=new Rule(-35, new int[]{61,62});
    rules[155]=new Rule(-35, new int[]{61,5,-91,6});
    rules[156]=new Rule(-35, new int[]{61,51,-90});
    rules[157]=new Rule(-35, new int[]{61,52,-90});
    rules[158]=new Rule(-35, new int[]{61,-19});
    rules[159]=new Rule(-35, new int[]{62,-47});
    rules[160]=new Rule(-35, new int[]{11,62,-47});
    rules[161]=new Rule(-35, new int[]{24,25,-37,-47,-13});
    rules[162]=new Rule(-35, new int[]{8,-47});
    rules[163]=new Rule(-35, new int[]{115,5,-91,6});
    rules[164]=new Rule(-35, new int[]{63,-2,-39,-42});
    rules[165]=new Rule(-35, new int[]{-44});
    rules[166]=new Rule(-35, new int[]{14,-6});
    rules[167]=new Rule(-13, new int[]{});
    rules[168]=new Rule(-13, new int[]{27});
    rules[169]=new Rule(-42, new int[]{});
    rules[170]=new Rule(-42, new int[]{-42,-41});
    rules[171]=new Rule(-41, new int[]{40,-2});
    rules[172]=new Rule(-41, new int[]{13,90,-40});
    rules[173]=new Rule(-41, new int[]{13,92,-40});
    rules[174]=new Rule(-41, new int[]{13,91,-40});
    rules[175]=new Rule(-40, new int[]{98,62});
    rules[176]=new Rule(-40, new int[]{98,61});
    rules[177]=new Rule(-40, new int[]{65});
    rules[178]=new Rule(-40, new int[]{66});
    rules[179]=new Rule(-44, new int[]{11,64,-43});
    rules[180]=new Rule(-44, new int[]{64,-43});
    rules[181]=new Rule(-43, new int[]{});
    rules[182]=new Rule(-43, new int[]{67,68});
    rules[183]=new Rule(-43, new int[]{67,69});
    rules[184]=new Rule(-29, new int[]{});
    rules[185]=new Rule(-29, new int[]{17,-30});
    rules[186]=new Rule(-30, new int[]{-30,17,-46});
    rules[187]=new Rule(-30, new int[]{-30,-46});
    rules[188]=new Rule(-30, new int[]{-46});
    rules[189]=new Rule(-46, new int[]{28,-2});
    rules[190]=new Rule(-46, new int[]{24,25,5,-38,-13,6,-47});
    rules[191]=new Rule(-46, new int[]{8,5,-38,6,-47});
    rules[192]=new Rule(-46, new int[]{115,5,-91,6,-47});
    rules[193]=new Rule(-46, new int[]{70,25,5,-38,6,63,-2,-39,-42,-45});
    rules[194]=new Rule(-45, new int[]{});
    rules[195]=new Rule(-45, new int[]{-44});
    rules[196]=new Rule(-47, new int[]{});
    rules[197]=new Rule(-47, new int[]{13,26,-50});
    rules[198]=new Rule(-48, new int[]{});
    rules[199]=new Rule(-48, new int[]{71,-50});
    rules[200]=new Rule(-50, new int[]{-49});
    rules[201]=new Rule(-50, new int[]{32});
    rules[202]=new Rule(-50, new int[]{33});
    rules[203]=new Rule(-49, new int[]{29});
    rules[204]=new Rule(-49, new int[]{30});
    rules[205]=new Rule(-49, new int[]{31});
    rules[206]=new Rule(-3, new int[]{});
    rules[207]=new Rule(-3, new int[]{60,-2});
    rules[208]=new Rule(-91, new int[]{-90});
    rules[209]=new Rule(-91, new int[]{5,-91,6});
    rules[210]=new Rule(-91, new int[]{62});
    rules[211]=new Rule(-91, new int[]{-20});
    rules[212]=new Rule(-91, new int[]{59});
    rules[213]=new Rule(-91, new int[]{-2,60,-2});
    rules[214]=new Rule(-91, new int[]{-2,60,-2,60,-2});
    rules[215]=new Rule(-91, new int[]{73});
    rules[216]=new Rule(-91, new int[]{-91,-51,-91,-52});
    rules[217]=new Rule(-91, new int[]{-91,14,-6});
    rules[218]=new Rule(-91, new int[]{74,5,-91,3,-32,6});
    rules[219]=new Rule(-91, new int[]{18,5,-55,-53,6});
    rules[220]=new Rule(-91, new int[]{18,5,53,6});
    rules[221]=new Rule(-91, new int[]{-91,-15,-91,119,-91});
    rules[222]=new Rule(-91, new int[]{-91,119,-91});
    rules[223]=new Rule(-91, new int[]{-91,71,-91});
    rules[224]=new Rule(-91, new int[]{-91,44,-91});
    rules[225]=new Rule(-91, new int[]{-91,42,-91});
    rules[226]=new Rule(-91, new int[]{-91,45,-91});
    rules[227]=new Rule(-91, new int[]{-91,43,-91});
    rules[228]=new Rule(-91, new int[]{-91,38,-91});
    rules[229]=new Rule(-91, new int[]{-91,37,-91});
    rules[230]=new Rule(-91, new int[]{-91,47,-91});
    rules[231]=new Rule(-91, new int[]{-91,48,-91});
    rules[232]=new Rule(-91, new int[]{-91,49,-91});
    rules[233]=new Rule(-91, new int[]{-91,50,-91});
    rules[234]=new Rule(-91, new int[]{-91,51,-91});
    rules[235]=new Rule(-91, new int[]{-91,52,-91});
    rules[236]=new Rule(-91, new int[]{-91,53,-91});
    rules[237]=new Rule(-91, new int[]{-91,54,-91});
    rules[238]=new Rule(-91, new int[]{-91,55,-91});
    rules[239]=new Rule(-91, new int[]{-91,56,-91});
    rules[240]=new Rule(-91, new int[]{-91,35});
    rules[241]=new Rule(-91, new int[]{-91,36});
    rules[242]=new Rule(-91, new int[]{-91,41,62});
    rules[243]=new Rule(-91, new int[]{-91,11,62});
    rules[244]=new Rule(-91, new int[]{-91,41,11,62});
    rules[245]=new Rule(-91, new int[]{11,-91});
    rules[246]=new Rule(-91, new int[]{57,-91});
    rules[247]=new Rule(-91, new int[]{52,-91});
    rules[248]=new Rule(-91, new int[]{51,-91});
    rules[249]=new Rule(-91, new int[]{-91,-14,5,-53,6});
    rules[250]=new Rule(-91, new int[]{5,-59,6});
    rules[251]=new Rule(-91, new int[]{-91,-14,5,-59,6});
    rules[252]=new Rule(-91, new int[]{-91,-14,-2,-3});
    rules[253]=new Rule(-91, new int[]{12,5,-59,6});
    rules[254]=new Rule(-91, new int[]{75,-79,-80,-81,78});
    rules[255]=new Rule(-91, new int[]{76,5,32,6});
    rules[256]=new Rule(-91, new int[]{76,5,-49,17,-2,6});
    rules[257]=new Rule(-80, new int[]{-80,79,-91,80,-91});
    rules[258]=new Rule(-80, new int[]{79,-91,80,-91});
    rules[259]=new Rule(-53, new int[]{});
    rules[260]=new Rule(-53, new int[]{-54});
    rules[261]=new Rule(-54, new int[]{-54,17,-91});
    rules[262]=new Rule(-54, new int[]{-91});
    rules[263]=new Rule(-81, new int[]{});
    rules[264]=new Rule(-81, new int[]{97,-91});
    rules[265]=new Rule(-79, new int[]{});
    rules[266]=new Rule(-79, new int[]{-91});
    rules[267]=new Rule(-14, new int[]{58});
    rules[268]=new Rule(-14, new int[]{11,58});
    rules[269]=new Rule(-90, new int[]{4});
    rules[270]=new Rule(-90, new int[]{81});
    rules[271]=new Rule(-90, new int[]{19});
    rules[272]=new Rule(-90, new int[]{20});
    rules[273]=new Rule(-90, new int[]{21});
    rules[274]=new Rule(-90, new int[]{22});
    rules[275]=new Rule(-90, new int[]{82});
    rules[276]=new Rule(-51, new int[]{34});
    rules[277]=new Rule(-51, new int[]{11,34});
    rules[278]=new Rule(-51, new int[]{40});
    rules[279]=new Rule(-51, new int[]{11,40});
    rules[280]=new Rule(-52, new int[]{});
    rules[281]=new Rule(-52, new int[]{46,-91});
    rules[282]=new Rule(-15, new int[]{39});
    rules[283]=new Rule(-15, new int[]{11,39});
    rules[284]=new Rule(-16, new int[]{});
    rules[285]=new Rule(-16, new int[]{8});
    rules[286]=new Rule(-39, new int[]{});
    rules[287]=new Rule(-39, new int[]{5,-38,6});
    rules[288]=new Rule(-38, new int[]{-38,17,-2,-21,-37});
    rules[289]=new Rule(-38, new int[]{-2,-21,-37});
    rules[290]=new Rule(-21, new int[]{});
    rules[291]=new Rule(-21, new int[]{14,-6});
    rules[292]=new Rule(-26, new int[]{-4,83,-5,-2,-3,-82,-83,13,-65,-17,-84});
    rules[293]=new Rule(-4, new int[]{});
    rules[294]=new Rule(-4, new int[]{118});
    rules[295]=new Rule(-4, new int[]{120});
    rules[296]=new Rule(-82, new int[]{});
    rules[297]=new Rule(-82, new int[]{84});
    rules[298]=new Rule(-82, new int[]{85});
    rules[299]=new Rule(-82, new int[]{86,87});
    rules[300]=new Rule(-83, new int[]{90});
    rules[301]=new Rule(-83, new int[]{91});
    rules[302]=new Rule(-83, new int[]{92});
    rules[303]=new Rule(-83, new int[]{92,87,-67});
    rules[304]=new Rule(-68, new int[]{});
    rules[305]=new Rule(-68, new int[]{5,-67,6});
    rules[306]=new Rule(-67, new int[]{-67,17,-2});
    rules[307]=new Rule(-67, new int[]{-2});
    rules[308]=new Rule(-17, new int[]{});
    rules[309]=new Rule(-17, new int[]{93,94,95});
    rules[310]=new Rule(-84, new int[]{});
    rules[311]=new Rule(-84, new int[]{79,-91});
    rules[312]=new Rule(-86, new int[]{-86,-85,96});
    rules[313]=new Rule(-86, new int[]{-85,96});
    rules[314]=new Rule(-85, new int[]{92,-48,-2,98,-87,-71});
    rules[315]=new Rule(-85, new int[]{-88,100,-2,-68,99,5,-89,6});
    rules[316]=new Rule(-85, new int[]{-88,100,-2,-68,-59});
    rules[317]=new Rule(-85, new int[]{90,101,-2,-71});
    rules[318]=new Rule(-85, new int[]{-59});
    rules[319]=new Rule(-89, new int[]{-89,17,-91});
    rules[320]=new Rule(-89, new int[]{-91});
    rules[321]=new Rule(-88, new int[]{91,-48});
    rules[322]=new Rule(-88, new int[]{33});
    rules[323]=new Rule(-71, new int[]{});
    rules[324]=new Rule(-71, new int[]{117,-91});
    rules[325]=new Rule(-87, new int[]{-87,17,-2,38,-91});
    rules[326]=new Rule(-87, new int[]{-2,38,-91});
    rules[327]=new Rule(-59, new int[]{-58});
    rules[328]=new Rule(-59, new int[]{-59,-78,-58});
    rules[329]=new Rule(-78, new int[]{102});
    rules[330]=new Rule(-78, new int[]{102,103});
    rules[331]=new Rule(-78, new int[]{104});
    rules[332]=new Rule(-78, new int[]{105});
    rules[333]=new Rule(-58, new int[]{106,-55,-56,-63,-71,-72,-73,-76,-77});
    rules[334]=new Rule(-55, new int[]{});
    rules[335]=new Rule(-55, new int[]{107});
    rules[336]=new Rule(-55, new int[]{103});
    rules[337]=new Rule(-57, new int[]{});
    rules[338]=new Rule(-57, new int[]{-56,17});
    rules[339]=new Rule(-56, new int[]{-57,-91,-18});
    rules[340]=new Rule(-56, new int[]{-57,53});
    rules[341]=new Rule(-56, new int[]{-57,-2,60,53});
    rules[342]=new Rule(-18, new int[]{});
    rules[343]=new Rule(-18, new int[]{3,-2});
    rules[344]=new Rule(-18, new int[]{-6});
    rules[345]=new Rule(-63, new int[]{});
    rules[346]=new Rule(-63, new int[]{101,-62});
    rules[347]=new Rule(-61, new int[]{});
    rules[348]=new Rule(-61, new int[]{-62,-60});
    rules[349]=new Rule(-62, new int[]{-61,-2,-3,-18,-64,-66,-69});
    rules[350]=new Rule(-62, new int[]{-61,5,-70,6,-18,-66,-69});
    rules[351]=new Rule(-70, new int[]{-59});
    rules[352]=new Rule(-70, new int[]{-62});
    rules[353]=new Rule(-65, new int[]{-2,-3});
    rules[354]=new Rule(-60, new int[]{17});
    rules[355]=new Rule(-60, new int[]{108});
    rules[356]=new Rule(-60, new int[]{59,108});
    rules[357]=new Rule(-60, new int[]{59,59,108});
    rules[358]=new Rule(-60, new int[]{59,59,59,108});
    rules[359]=new Rule(-66, new int[]{});
    rules[360]=new Rule(-66, new int[]{13,-91});
    rules[361]=new Rule(-64, new int[]{});
    rules[362]=new Rule(-64, new int[]{109,110,-2});
    rules[363]=new Rule(-64, new int[]{11,109});
    rules[364]=new Rule(-69, new int[]{});
    rules[365]=new Rule(-69, new int[]{111,5,-67,6});
    rules[366]=new Rule(-76, new int[]{});
    rules[367]=new Rule(-76, new int[]{112,110,-75});
    rules[368]=new Rule(-75, new int[]{-75,17,-74,-37});
    rules[369]=new Rule(-75, new int[]{-74,-37});
    rules[370]=new Rule(-74, new int[]{-91});
    rules[371]=new Rule(-37, new int[]{});
    rules[372]=new Rule(-37, new int[]{15});
    rules[373]=new Rule(-37, new int[]{16});
    rules[374]=new Rule(-72, new int[]{});
    rules[375]=new Rule(-72, new int[]{113,110,-54});
    rules[376]=new Rule(-73, new int[]{});
    rules[377]=new Rule(-73, new int[]{114,-91});
    rules[378]=new Rule(-77, new int[]{});
    rules[379]=new Rule(-77, new int[]{88,-91});
    rules[380]=new Rule(-77, new int[]{88,-91,89,-91});
    rules[381]=new Rule(-77, new int[]{88,-91,17,-91});

    nonTerminals = new string[] {"", "main", "nm", "dbnm", "temp", "ifnotexists", 
      "ids", "columnid", "typename", "number", "signed", "minus_num", "plus_num", 
      "autoinc", "in_op", "between_op", "uniqueflag", "foreach_clause", "as", 
      "id", "exid", "collate", "create_table", "create_index", "create_trigger", 
      "create_view", "trigger_decl", "create_table_args", "columnlist", "conslist_opt", 
      "conslist", "column", "typetoken", "type", "carg", "ccons", "carglist", 
      "sortorder", "idxlist", "idxlist_opt", "refact", "refarg", "refargs", "init_deferred_pred_opt", 
      "defer_subclause", "defer_subclause_opt", "tcons", "onconf", "orconf", 
      "raisetype", "resolvetype", "likeop", "escape", "exprlist", "nexprlist", 
      "distinct", "selcollist", "sclp", "oneselect", "select", "joinop", "stl_prefix", 
      "seltablist", "from", "indexed_opt", "fullname", "on_opt", "inscollist", 
      "inscollist_opt", "using_opt", "seltablist_paren", "where_opt", "groupby_opt", 
      "having_opt", "sortitem", "sortlist", "orderby_opt", "limit_opt", "multiselect_op", 
      "case_operand", "case_exprlist", "case_else", "trigger_time", "trigger_event", 
      "when_clause", "trigger_cmd", "trigger_cmd_list", "setlist", "insert_cmd", 
      "itemlist", "term", "expr", "$accept", "plus_opt", };
  }

  protected override void DoAction(int action)
  {
    switch (action)
    {
      case 2: // main -> create_table
{ yyval.DdlStatement = value_stack.array[value_stack.top-1].CreateTableStatement; SQLiteDdlMain.CreateTable = value_stack.array[value_stack.top-1].CreateTableStatement; }
        break;
      case 3: // main -> create_trigger
{ yyval.DdlStatement = value_stack.array[value_stack.top-1].CreateTriggerStatement; SQLiteDdlMain.CreateTrigger = value_stack.array[value_stack.top-1].CreateTriggerStatement; }
        break;
      case 4: // main -> create_index
{ yyval.DdlStatement = value_stack.array[value_stack.top-1].CreateIndexStatement; SQLiteDdlMain.CreateIndex = value_stack.array[value_stack.top-1].CreateIndexStatement; }
        break;
      case 5: // main -> create_view
{ yyval.DdlStatement = value_stack.array[value_stack.top-1].CreateViewStatement; SQLiteDdlMain.CreateView = value_stack.array[value_stack.top-1].CreateViewStatement; }
        break;
      case 6: // create_table -> CREATE, TABLE, ifnotexists, nm, dbnm, create_table_args
{ 
	yyval.CreateTableStatement = value_stack.array[value_stack.top-1].CreateTableStatement;
	yyval.CreateTableStatement.IfNotExists = value_stack.array[value_stack.top-4].Bool;
	yyval.CreateTableStatement.ObjectName = new SQLiteObjectName(value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-2].Text);
}
        break;
      case 7: // create_index -> CREATE, uniqueflag, INDEX, ifnotexists, nm, dbnm, ON, nm, LP, 
              //                 idxlist, RP
{ 
	SQLiteObjectName idxName = new SQLiteObjectName(value_stack.array[value_stack.top-7].Text, value_stack.array[value_stack.top-6].Text);
	yyval.CreateIndexStatement = new SQLiteCreateIndexStatement(value_stack.array[value_stack.top-10].Bool, idxName, value_stack.array[value_stack.top-8].Bool, value_stack.array[value_stack.top-4].Text, value_stack.array[value_stack.top-2].IndexedColumnsList); 
}
        break;
      case 8: // create_trigger -> CREATE, trigger_decl, BEGIN, trigger_cmd_list, END
{ yyval.CreateTriggerStatement = value_stack.array[value_stack.top-4].CreateTriggerStatement; yyval.CreateTriggerStatement.StatementsList = value_stack.array[value_stack.top-2].StatementsList;}
        break;
      case 9: // create_view -> CREATE, temp, VIEW, ifnotexists, nm, dbnm, AS, select
{ 
	SQLiteObjectName viewName = new SQLiteObjectName(value_stack.array[value_stack.top-4].Text, value_stack.array[value_stack.top-3].Text);
	yyval.CreateViewStatement = new SQLiteCreateViewStatement(value_stack.array[value_stack.top-7].Bool, value_stack.array[value_stack.top-5].Bool, viewName, value_stack.array[value_stack.top-1].SelectStatement);
}
        break;
      case 10: // create_table_args -> LP, columnlist, conslist_opt, RP
{ yyval.CreateTableStatement = new SQLiteCreateTableStatement(value_stack.array[value_stack.top-3].ColumnsList, value_stack.array[value_stack.top-2].TableConstraintsList); }
        break;
      case 11: // columnlist -> columnlist, COMMA, column
{ value_stack.array[value_stack.top-3].ColumnsList.Add(value_stack.array[value_stack.top-1].ColumnStatement); yyval.ColumnsList = value_stack.array[value_stack.top-3].ColumnsList; }
        break;
      case 12: // columnlist -> column
{ yyval.ColumnsList = new List<SQLiteColumnStatement>(); yyval.ColumnsList.Add(value_stack.array[value_stack.top-1].ColumnStatement); }
        break;
      case 13: // column -> columnid, type, carglist
{ yyval.ColumnStatement = new SQLiteColumnStatement(value_stack.array[value_stack.top-3].ObjectName, value_stack.array[value_stack.top-2].ColumnType, value_stack.array[value_stack.top-1].ColumnConstraintsList); }
        break;
      case 14: // columnid -> nm
{ yyval.ObjectName = new SQLiteObjectName(value_stack.array[value_stack.top-1].Text); }
        break;
      case 16: // ifnotexists -> /* empty */
{ yyval.Bool = false; }
        break;
      case 17: // ifnotexists -> IF, NOT, EXISTS
{ yyval.Bool = true; }
        break;
      case 98: // nm -> JOIN_KW
{ yyval.Text = Enum.GetName(typeof(SQLiteJoinOperator), value_stack.array[value_stack.top-1].JoinOperator); }
        break;
      case 135: // type -> /* empty */
{ yyval.ColumnType = new SQLiteColumnType(string.Empty, -1, -1); }
        break;
      case 137: // typetoken -> typename
{ yyval.ColumnType = new SQLiteColumnType(value_stack.array[value_stack.top-1].Text, -1, -1); }
        break;
      case 138: // typetoken -> typename, LP, signed, RP
{ yyval.ColumnType = new SQLiteColumnType(value_stack.array[value_stack.top-4].Text, (int)value_stack.array[value_stack.top-2].Number, -1); }
        break;
      case 139: // typetoken -> typename, LP, signed, COMMA, signed, RP
{ yyval.ColumnType = new SQLiteColumnType(value_stack.array[value_stack.top-6].Text, (int)value_stack.array[value_stack.top-4].Number, (int)value_stack.array[value_stack.top-2].Number); }
        break;
      case 141: // typename -> typename, ids
{ yyval.Text = value_stack.array[value_stack.top-2].Text +" "+ value_stack.array[value_stack.top-1].Text; }
        break;
      case 144: // plus_num -> plus_opt, number
{ yyval.Number = value_stack.array[value_stack.top-1].Number; }
        break;
      case 147: // minus_num -> MINUS, number
{ yyval.Number = -value_stack.array[value_stack.top-1].Number; }
        break;
      case 150: // carglist -> carglist, carg
{ 
	if (value_stack.array[value_stack.top-2].ColumnConstraintsList == null)
		yyval.ColumnConstraintsList = new List<SQLiteColumnConstraint>();
	else
		yyval.ColumnConstraintsList = value_stack.array[value_stack.top-2].ColumnConstraintsList;		
	yyval.ColumnConstraintsList.Add(value_stack.array[value_stack.top-1].ColumnConstraint);
}
        break;
      case 151: // carg -> CONSTRAINT, nm, ccons
{ value_stack.array[value_stack.top-1].ColumnConstraint.ConstraintName = value_stack.array[value_stack.top-2].Text; yyval.ColumnConstraint = value_stack.array[value_stack.top-1].ColumnConstraint; }
        break;
      case 153: // ccons -> DEFAULT, term
{ yyval.ColumnConstraint = new SQLiteDefaultColumnConstraint(null, false, value_stack.array[value_stack.top-1].Term); }
        break;
      case 154: // ccons -> DEFAULT, NULL
{ yyval.ColumnConstraint = new SQLiteDefaultColumnConstraint(null, new SQLiteNullExpression(), false); }
        break;
      case 155: // ccons -> DEFAULT, LP, expr, RP
{ yyval.ColumnConstraint = new SQLiteDefaultColumnConstraint(null, value_stack.array[value_stack.top-2].Expression); }
        break;
      case 156: // ccons -> DEFAULT, PLUS, term
{ yyval.ColumnConstraint = new SQLiteDefaultColumnConstraint(null, false, value_stack.array[value_stack.top-1].Term); }
        break;
      case 157: // ccons -> DEFAULT, MINUS, term
{ yyval.ColumnConstraint = new SQLiteDefaultColumnConstraint(null, true, value_stack.array[value_stack.top-1].Term); }
        break;
      case 158: // ccons -> DEFAULT, id
{ yyval.ColumnConstraint = new SQLiteDefaultColumnConstraint(null, value_stack.array[value_stack.top-1].Text); }
        break;
      case 159: // ccons -> NULL, onconf
{ yyval.ColumnConstraint = new SQLiteNullColumnConstraint(null, true, value_stack.array[value_stack.top-1].ResolveAction); }
        break;
      case 160: // ccons -> NOT, NULL, onconf
{ yyval.ColumnConstraint = new SQLiteNullColumnConstraint(null, false, value_stack.array[value_stack.top-1].ResolveAction); }
        break;
      case 161: // ccons -> PRIMARY, KEY, sortorder, onconf, autoinc
{ yyval.ColumnConstraint = new SQLitePrimaryKeyColumnConstraint(null, value_stack.array[value_stack.top-3].SortOrder, value_stack.array[value_stack.top-2].ResolveAction, value_stack.array[value_stack.top-1].Bool); }
        break;
      case 162: // ccons -> UNIQUE, onconf
{ yyval.ColumnConstraint = new SQLiteUniqueColumnConstraint(null, value_stack.array[value_stack.top-1].ResolveAction); }
        break;
      case 163: // ccons -> CHECK, LP, expr, RP
{ yyval.ColumnConstraint = new SQLiteCheckColumnConstraint(null, value_stack.array[value_stack.top-2].Expression); }
        break;
      case 164: // ccons -> REFERENCES, nm, idxlist_opt, refargs
{ yyval.ColumnConstraint = new SQLiteReferencesColumnConstraint(null, value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-2].IndexedColumnsList, value_stack.array[value_stack.top-1].ReferenceHandlersList); }
        break;
      case 165: // ccons -> defer_subclause
{ yyval.ColumnConstraint = value_stack.array[value_stack.top-1].DeferColumnConstraint; }
        break;
      case 166: // ccons -> COLLATE, ids
{ yyval.ColumnConstraint = new SQLiteCollateColumnConstraint(null, value_stack.array[value_stack.top-1].Text); }
        break;
      case 167: // autoinc -> /* empty */
{ yyval.Bool = false; }
        break;
      case 168: // autoinc -> AUTOINCR
{ yyval.Bool = true; }
        break;
      case 170: // refargs -> refargs, refarg
{
	if (value_stack.array[value_stack.top-2].ReferenceHandlersList == null)
		yyval.ReferenceHandlersList = new List<SQLiteReferenceHandler>();
	else
		yyval.ReferenceHandlersList = value_stack.array[value_stack.top-2].ReferenceHandlersList;
	yyval.ReferenceHandlersList.Add(value_stack.array[value_stack.top-1].ReferenceHandler);
}
        break;
      case 171: // refarg -> MATCH, nm
{ yyval.ReferenceHandler = new SQLiteReferenceHandler(value_stack.array[value_stack.top-1].Text); }
        break;
      case 172: // refarg -> ON, DELETE, refact
{ yyval.ReferenceHandler = new SQLiteReferenceHandler(SQLiteReferenceTrigger.OnDelete, value_stack.array[value_stack.top-1].ReferenceAction); }
        break;
      case 173: // refarg -> ON, UPDATE, refact
{ yyval.ReferenceHandler = new SQLiteReferenceHandler(SQLiteReferenceTrigger.OnUpdate, value_stack.array[value_stack.top-1].ReferenceAction); }
        break;
      case 174: // refarg -> ON, INSERT, refact
{ yyval.ReferenceHandler = new SQLiteReferenceHandler(SQLiteReferenceTrigger.OnInsert, value_stack.array[value_stack.top-1].ReferenceAction); }
        break;
      case 175: // refact -> SET, NULL
{ yyval.ReferenceAction = SQLiteReferenceAction.SetNull; }
        break;
      case 176: // refact -> SET, DEFAULT
{ yyval.ReferenceAction = SQLiteReferenceAction.SetDefault; }
        break;
      case 177: // refact -> CASCADE
{ yyval.ReferenceAction = SQLiteReferenceAction.Cascade; }
        break;
      case 178: // refact -> RESTRICT
{ yyval.ReferenceAction = SQLiteReferenceAction.Restrict; }
        break;
      case 179: // defer_subclause -> NOT, DEFERRABLE, init_deferred_pred_opt
{
	yyval.DeferColumnConstraint = new SQLiteDeferColumnConstraint(null, false, value_stack.array[value_stack.top-1].DeferType);
}
        break;
      case 180: // defer_subclause -> DEFERRABLE, init_deferred_pred_opt
{
	yyval.DeferColumnConstraint = new SQLiteDeferColumnConstraint(null, true, value_stack.array[value_stack.top-1].DeferType);
}
        break;
      case 181: // init_deferred_pred_opt -> /* empty */
{ yyval.DeferType = SQLiteDeferType.None; }
        break;
      case 182: // init_deferred_pred_opt -> INITIALLY, DEFERRED
{ yyval.DeferType = SQLiteDeferType.InitiallyDeferred; }
        break;
      case 183: // init_deferred_pred_opt -> INITIALLY, IMMEDIATE
{ yyval.DeferType = SQLiteDeferType.InitiallyImmediate; }
        break;
      case 185: // conslist_opt -> COMMA, conslist
{ yyval.TableConstraintsList = value_stack.array[value_stack.top-1].TableConstraintsList; }
        break;
      case 186: // conslist -> conslist, COMMA, tcons
{
	if (value_stack.array[value_stack.top-3].TableConstraintsList == null)
		yyval.TableConstraintsList = new List<SQLiteTableConstraint>();
	else
		yyval.TableConstraintsList = value_stack.array[value_stack.top-3].TableConstraintsList;
	yyval.TableConstraintsList.Add(value_stack.array[value_stack.top-1].TableConstraint);
}
        break;
      case 187: // conslist -> conslist, tcons
{
	if (value_stack.array[value_stack.top-2].TableConstraintsList == null)
		yyval.TableConstraintsList = new List<SQLiteTableConstraint>();
	else
		yyval.TableConstraintsList = value_stack.array[value_stack.top-2].TableConstraintsList;
	yyval.TableConstraintsList.Add(value_stack.array[value_stack.top-1].TableConstraint);	
}
        break;
      case 188: // conslist -> tcons
{
	yyval.TableConstraintsList = new List<SQLiteTableConstraint>();
	yyval.TableConstraintsList.Add(value_stack.array[value_stack.top-1].TableConstraint);	
}
        break;
      case 189: // tcons -> CONSTRAINT, nm
{ yyval.TableConstraint = new SQLiteTableConstraint(value_stack.array[value_stack.top-1].Text); }
        break;
      case 190: // tcons -> PRIMARY, KEY, LP, idxlist, autoinc, RP, onconf
{ yyval.TableConstraint = new SQLitePrimaryKeyTableConstraint(null, value_stack.array[value_stack.top-4].IndexedColumnsList, value_stack.array[value_stack.top-3].Bool, value_stack.array[value_stack.top-1].ResolveAction); }
        break;
      case 191: // tcons -> UNIQUE, LP, idxlist, RP, onconf
{ yyval.TableConstraint = new SQLiteUniqueTableConstraint(null, value_stack.array[value_stack.top-3].IndexedColumnsList, value_stack.array[value_stack.top-1].ResolveAction); }
        break;
      case 192: // tcons -> CHECK, LP, expr, RP, onconf
{ yyval.TableConstraint = new SQLiteCheckTableConstraint(null, value_stack.array[value_stack.top-3].Expression, value_stack.array[value_stack.top-1].ResolveAction); }
        break;
      case 193: // tcons -> FOREIGN, KEY, LP, idxlist, RP, REFERENCES, nm, idxlist_opt, refargs, 
                //          defer_subclause_opt
{
	yyval.TableConstraint = new SQLiteForeignKeyTableConstraint(null, value_stack.array[value_stack.top-7].IndexedColumnsList, value_stack.array[value_stack.top-4].Text, value_stack.array[value_stack.top-3].IndexedColumnsList, value_stack.array[value_stack.top-2].ReferenceHandlersList, value_stack.array[value_stack.top-1].DeferColumnConstraint);
}
        break;
      case 196: // onconf -> /* empty */
{ yyval.ResolveAction = SQLiteResolveAction.None; }
        break;
      case 197: // onconf -> ON, CONFLICT, resolvetype
{ yyval.ResolveAction = value_stack.array[value_stack.top-1].ResolveAction; }
        break;
      case 201: // resolvetype -> IGNORE
{ yyval.ResolveAction = SQLiteResolveAction.Ignore; }
        break;
      case 202: // resolvetype -> REPLACE
{ yyval.ResolveAction = SQLiteResolveAction.Replace; }
        break;
      case 203: // raisetype -> ROLLBACK
{ yyval.ResolveAction = SQLiteResolveAction.Rollback; }
        break;
      case 204: // raisetype -> ABORT
{ yyval.ResolveAction = SQLiteResolveAction.Abort; }
        break;
      case 205: // raisetype -> FAIL
{ yyval.ResolveAction = SQLiteResolveAction.Fail; }
        break;
      case 207: // dbnm -> DOT, nm
{ yyval.Text = value_stack.array[value_stack.top-1].Text; }
        break;
      case 208: // expr -> term
{ yyval.Expression = new SQLiteTermExpression(value_stack.array[value_stack.top-1].Term); }
        break;
      case 209: // expr -> LP, expr, RP
{ yyval.Expression = value_stack.array[value_stack.top-2].Expression; }
        break;
      case 210: // expr -> NULL
{ yyval.Expression = new SQLiteNullExpression(); }
        break;
      case 211: // expr -> exid
{ yyval.Expression = new SQLiteIdExpression(value_stack.array[value_stack.top-1].Text); }
        break;
      case 212: // expr -> JOIN_KW
{ yyval.Expression = new SQLiteIdExpression(Enum.GetName(typeof(SQLiteJoinOperator), value_stack.array[value_stack.top-1].JoinOperator).ToUpper()); }
        break;
      case 213: // expr -> nm, DOT, nm
{ yyval.Expression = new SQLiteNameExpression(new SQLiteObjectName(value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-1].Text)); }
        break;
      case 214: // expr -> nm, DOT, nm, DOT, nm
{ yyval.Expression = new SQLiteNameExpression(new SQLiteObjectName(value_stack.array[value_stack.top-5].Text, value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-1].Text)); }
        break;
      case 215: // expr -> VARIABLE
{ yyval.Expression = new SQLiteVariableExpression(value_stack.array[value_stack.top-1].Text); }
        break;
      case 216: // expr -> expr, likeop, expr, escape
{ yyval.Expression = new SQLiteLikeExpression(value_stack.array[value_stack.top-4].Expression, value_stack.array[value_stack.top-3].LikeOperator, value_stack.array[value_stack.top-2].Expression, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 217: // expr -> expr, COLLATE, ids
{ yyval.Expression = new SQLiteCollateExpression(value_stack.array[value_stack.top-3].Expression, value_stack.array[value_stack.top-1].Text); }
        break;
      case 218: // expr -> CAST, LP, expr, AS, typetoken, RP
{ yyval.Expression = new SQLiteCastExpression(value_stack.array[value_stack.top-4].Expression, value_stack.array[value_stack.top-2].ColumnType); }
        break;
      case 219: // expr -> ID, LP, distinct, exprlist, RP
{ yyval.Expression = new SQLiteFunctionExpression(value_stack.array[value_stack.top-5].Text, value_stack.array[value_stack.top-3].Distinct, value_stack.array[value_stack.top-2].ExpressionsList); }
        break;
      case 220: // expr -> ID, LP, STAR, RP
{ yyval.Expression = new SQLiteFunctionExpression(value_stack.array[value_stack.top-4].Text); }
        break;
      case 221: // expr -> expr, between_op, expr, AND, expr
{ yyval.Expression = new SQLiteBetweenExpression(value_stack.array[value_stack.top-5].Expression, value_stack.array[value_stack.top-4].Bool, value_stack.array[value_stack.top-3].Expression, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 222: // expr -> expr, AND, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.And, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 223: // expr -> expr, OR, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Or, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 224: // expr -> expr, LT, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Lt, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 225: // expr -> expr, GT, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Gt, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 226: // expr -> expr, GE, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Ge, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 227: // expr -> expr, LE, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Le, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 228: // expr -> expr, EQ, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Eq, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 229: // expr -> expr, NE, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Ne, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 230: // expr -> expr, BITAND, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.BitAnd, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 231: // expr -> expr, BITOR, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.BitOr, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 232: // expr -> expr, LSHIFT, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Lshift, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 233: // expr -> expr, RSHIFT, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Rshift, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 234: // expr -> expr, PLUS, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Plus, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 235: // expr -> expr, MINUS, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Minus, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 236: // expr -> expr, STAR, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Star, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 237: // expr -> expr, SLASH, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Slash, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 238: // expr -> expr, REM, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Rem, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 239: // expr -> expr, CONCAT, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Concat, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 240: // expr -> expr, ISNULL
{ yyval.Expression = new SQLiteUnaryExpression(SQLiteOperator.IsNull, value_stack.array[value_stack.top-2].Expression); }
        break;
      case 241: // expr -> expr, NOTNULL
{ yyval.Expression = new SQLiteUnaryExpression(SQLiteOperator.NotNull, value_stack.array[value_stack.top-2].Expression); }
        break;
      case 242: // expr -> expr, IS, NULL
{ yyval.Expression = new SQLiteUnaryExpression(SQLiteOperator.Is_Null, value_stack.array[value_stack.top-3].Expression); }
        break;
      case 243: // expr -> expr, NOT, NULL
{ yyval.Expression = new SQLiteUnaryExpression(SQLiteOperator.Not_Null, value_stack.array[value_stack.top-3].Expression); }
        break;
      case 244: // expr -> expr, IS, NOT, NULL
{ yyval.Expression = new SQLiteUnaryExpression(SQLiteOperator.Is_Not_Null, value_stack.array[value_stack.top-4].Expression); }
        break;
      case 245: // expr -> NOT, expr
{ yyval.Expression = new SQLiteUnaryExpression(SQLiteOperator.Not, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 246: // expr -> BITNOT, expr
{ yyval.Expression = new SQLiteUnaryExpression(SQLiteOperator.BitNot, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 247: // expr -> MINUS, expr
{ yyval.Expression = new SQLiteUnaryExpression(SQLiteOperator.Minus, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 248: // expr -> PLUS, expr
{ yyval.Expression = new SQLiteUnaryExpression(SQLiteOperator.Plus, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 249: // expr -> expr, in_op, LP, exprlist, RP
{ yyval.Expression = new SQLiteInExpression(value_stack.array[value_stack.top-5].Expression, value_stack.array[value_stack.top-4].Bool, value_stack.array[value_stack.top-2].ExpressionsList); }
        break;
      case 250: // expr -> LP, select, RP
{ yyval.Expression = new SQLiteSelectExpression(value_stack.array[value_stack.top-2].SelectStatement); }
        break;
      case 251: // expr -> expr, in_op, LP, select, RP
{ yyval.Expression = new SQLiteInExpression(value_stack.array[value_stack.top-5].Expression, value_stack.array[value_stack.top-4].Bool, value_stack.array[value_stack.top-2].SelectStatement); }
        break;
      case 252: // expr -> expr, in_op, nm, dbnm
{ yyval.Expression = new SQLiteInExpression(value_stack.array[value_stack.top-4].Expression, value_stack.array[value_stack.top-3].Bool, new SQLiteObjectName(value_stack.array[value_stack.top-2].Text, value_stack.array[value_stack.top-1].Text)); }
        break;
      case 253: // expr -> EXISTS, LP, select, RP
{ yyval.Expression = new SQLiteExistsExpression(value_stack.array[value_stack.top-2].SelectStatement); }
        break;
      case 254: // expr -> CASE, case_operand, case_exprlist, case_else, END
{ yyval.Expression = new SQLiteCaseExpression(value_stack.array[value_stack.top-4].Expression, value_stack.array[value_stack.top-3].CaseItemsList, value_stack.array[value_stack.top-2].Expression); }
        break;
      case 255: // expr -> RAISE, LP, IGNORE, RP
{ yyval.Expression = new SQLiteRaiseExpression(); }
        break;
      case 256: // expr -> RAISE, LP, raisetype, COMMA, nm, RP
{ yyval.Expression = new SQLiteRaiseExpression(value_stack.array[value_stack.top-4].ResolveAction, value_stack.array[value_stack.top-2].Text); }
        break;
      case 257: // case_exprlist -> case_exprlist, WHEN, expr, THEN, expr
{ yyval.CaseItemsList = value_stack.array[value_stack.top-5].CaseItemsList; yyval.CaseItemsList.Add(new SQLiteCaseItem(value_stack.array[value_stack.top-3].Expression, value_stack.array[value_stack.top-1].Expression)); }
        break;
      case 258: // case_exprlist -> WHEN, expr, THEN, expr
{ yyval.CaseItemsList = new List<SQLiteCaseItem>(); yyval.CaseItemsList.Add(new SQLiteCaseItem(value_stack.array[value_stack.top-3].Expression, value_stack.array[value_stack.top-1].Expression)); }
        break;
      case 261: // nexprlist -> nexprlist, COMMA, expr
{
	if (value_stack.array[value_stack.top-3].ExpressionsList == null)
		yyval.ExpressionsList = new List<SQLiteExpression>();
	else
		yyval.ExpressionsList = value_stack.array[value_stack.top-3].ExpressionsList;
	yyval.ExpressionsList.Add(value_stack.array[value_stack.top-1].Expression);
}
        break;
      case 262: // nexprlist -> expr
{
	yyval.ExpressionsList = new List<SQLiteExpression>();
	yyval.ExpressionsList.Add(value_stack.array[value_stack.top-1].Expression);
}
        break;
      case 263: // case_else -> /* empty */
{ yyval.Expression = null; }
        break;
      case 264: // case_else -> ELSE, expr
{ yyval.Expression = value_stack.array[value_stack.top-1].Expression; }
        break;
      case 265: // case_operand -> /* empty */
{ yyval.Expression = null; }
        break;
      case 266: // case_operand -> expr
{ yyval.Expression = value_stack.array[value_stack.top-1].Expression; }
        break;
      case 267: // in_op -> IN
{ yyval.Bool = true; }
        break;
      case 268: // in_op -> NOT, IN
{ yyval.Bool = false; }
        break;
      case 269: // term -> NUMBER
{ yyval.Term = new SQLiteTerm(value_stack.array[value_stack.top-1].Number); }
        break;
      case 270: // term -> BLOB
{ yyval.Term = new SQLiteTerm(value_stack.array[value_stack.top-1].Blob); }
        break;
      case 271: // term -> DQUOTED
{ yyval.Term = new SQLiteTerm(value_stack.array[value_stack.top-1].Text); }
        break;
      case 272: // term -> SQUOTED
{ yyval.Term = new SQLiteTerm(value_stack.array[value_stack.top-1].Text); }
        break;
      case 273: // term -> BQUOTED
{ yyval.Term = new SQLiteTerm(value_stack.array[value_stack.top-1].Text); }
        break;
      case 274: // term -> TQUOTED
{ yyval.Term = new SQLiteTerm(value_stack.array[value_stack.top-1].Text); }
        break;
      case 275: // term -> CTIME_KW
{ yyval.Term = new SQLiteTerm(value_stack.array[value_stack.top-1].TimeFunction); }
        break;
      case 276: // likeop -> LIKE_KW
{ yyval.LikeOperator = new SQLiteLikeOperator(value_stack.array[value_stack.top-1].Like, false); }
        break;
      case 277: // likeop -> NOT, LIKE_KW
{ yyval.LikeOperator = new SQLiteLikeOperator(value_stack.array[value_stack.top-1].Like, true); }
        break;
      case 278: // likeop -> MATCH
{ yyval.LikeOperator = new SQLiteLikeOperator(SQLiteLike.Match, false); }
        break;
      case 279: // likeop -> NOT, MATCH
{ yyval.LikeOperator = new SQLiteLikeOperator(SQLiteLike.Match, true); }
        break;
      case 282: // between_op -> BETWEEN
{ yyval.Bool = true; }
        break;
      case 283: // between_op -> NOT, BETWEEN
{ yyval.Bool = false; }
        break;
      case 284: // uniqueflag -> /* empty */
{ yyval.Bool = false; }
        break;
      case 285: // uniqueflag -> UNIQUE
{ yyval.Bool = true; }
        break;
      case 287: // idxlist_opt -> LP, idxlist, RP
{ yyval.IndexedColumnsList = value_stack.array[value_stack.top-2].IndexedColumnsList; }
        break;
      case 288: // idxlist -> idxlist, COMMA, nm, collate, sortorder
{
	if (value_stack.array[value_stack.top-5].IndexedColumnsList == null)
		yyval.IndexedColumnsList = new List<SQLiteIndexedColumn>();
	else
		yyval.IndexedColumnsList = value_stack.array[value_stack.top-5].IndexedColumnsList;
	yyval.IndexedColumnsList.Add(new SQLiteIndexedColumn(value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-2].Text, value_stack.array[value_stack.top-1].SortOrder));
}
        break;
      case 289: // idxlist -> nm, collate, sortorder
{ yyval.IndexedColumnsList = new List<SQLiteIndexedColumn>(); yyval.IndexedColumnsList.Add(new SQLiteIndexedColumn(value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-2].Text, value_stack.array[value_stack.top-1].SortOrder)); }
        break;
      case 291: // collate -> COLLATE, ids
{ yyval.Text = value_stack.array[value_stack.top-1].Text; }
        break;
      case 292: // trigger_decl -> temp, TRIGGER, ifnotexists, nm, dbnm, trigger_time, 
                //                 trigger_event, ON, fullname, foreach_clause, when_clause
{
	yyval.CreateTriggerStatement = new SQLiteCreateTriggerStatement(value_stack.array[value_stack.top-11].Bool, value_stack.array[value_stack.top-9].Bool, new SQLiteObjectName(value_stack.array[value_stack.top-8].Text, value_stack.array[value_stack.top-7].Text), value_stack.array[value_stack.top-6].TriggerTime, value_stack.array[value_stack.top-5].TriggerEventClause, value_stack.array[value_stack.top-3].ObjectName, value_stack.array[value_stack.top-2].Bool, value_stack.array[value_stack.top-1].Expression);
}
        break;
      case 293: // temp -> /* empty */
{ yyval.Bool = false; }
        break;
      case 294: // temp -> TEMP
{ yyval.Bool = true; }
        break;
      case 295: // temp -> TEMPORARY
{ yyval.Bool = true; }
        break;
      case 296: // trigger_time -> /* empty */
{ yyval.TriggerTime = SQLiteTriggerTime.None; }
        break;
      case 297: // trigger_time -> BEFORE
{ yyval.TriggerTime = SQLiteTriggerTime.Before; }
        break;
      case 298: // trigger_time -> AFTER
{ yyval.TriggerTime = SQLiteTriggerTime.After; }
        break;
      case 299: // trigger_time -> INSTEAD, OF
{ yyval.TriggerTime = SQLiteTriggerTime.InsteadOf; }
        break;
      case 300: // trigger_event -> DELETE
{ yyval.TriggerEventClause = new SQLiteTriggerEventClause(SQLiteTriggerEvent.Delete); }
        break;
      case 301: // trigger_event -> INSERT
{ yyval.TriggerEventClause = new SQLiteTriggerEventClause(SQLiteTriggerEvent.Insert); }
        break;
      case 302: // trigger_event -> UPDATE
{ yyval.TriggerEventClause = new SQLiteTriggerEventClause(SQLiteTriggerEvent.Update); }
        break;
      case 303: // trigger_event -> UPDATE, OF, inscollist
{ yyval.TriggerEventClause = new SQLiteTriggerEventClause(value_stack.array[value_stack.top-1].TextList); }
        break;
      case 304: // inscollist_opt -> /* empty */
{ yyval.TextList = null; }
        break;
      case 305: // inscollist_opt -> LP, inscollist, RP
{ yyval.TextList = value_stack.array[value_stack.top-2].TextList; }
        break;
      case 306: // inscollist -> inscollist, COMMA, nm
{ yyval.TextList = value_stack.array[value_stack.top-3].TextList; yyval.TextList.Add(value_stack.array[value_stack.top-1].Text); }
        break;
      case 307: // inscollist -> nm
{ yyval.TextList = new List<string>(); yyval.TextList.Add(value_stack.array[value_stack.top-1].Text); }
        break;
      case 308: // foreach_clause -> /* empty */
{ yyval.Bool = false; }
        break;
      case 309: // foreach_clause -> FOR, EACH, ROW
{ yyval.Bool = true; }
        break;
      case 312: // trigger_cmd_list -> trigger_cmd_list, trigger_cmd, SEMI
{yyval.StatementsList = value_stack.array[value_stack.top-3].StatementsList; yyval.StatementsList.Add(value_stack.array[value_stack.top-2].Statement); }
        break;
      case 313: // trigger_cmd_list -> trigger_cmd, SEMI
{ yyval.StatementsList = new List<SQLiteStatement>(); yyval.StatementsList.Add(value_stack.array[value_stack.top-2].Statement); }
        break;
      case 314: // trigger_cmd -> UPDATE, orconf, nm, SET, setlist, where_opt
{ yyval.Statement = new SQLiteUpdateStatement(value_stack.array[value_stack.top-5].ResolveAction, value_stack.array[value_stack.top-4].Text, value_stack.array[value_stack.top-2].UpdateItemsList, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 315: // trigger_cmd -> insert_cmd, INTO, nm, inscollist_opt, VALUES, LP, itemlist, RP
{ yyval.Statement = new SQLiteInsertStatement(value_stack.array[value_stack.top-8].InsertPrefix, value_stack.array[value_stack.top-6].Text, value_stack.array[value_stack.top-5].TextList, value_stack.array[value_stack.top-2].ExpressionsList); }
        break;
      case 316: // trigger_cmd -> insert_cmd, INTO, nm, inscollist_opt, select
{ yyval.Statement = new SQLiteInsertStatement(value_stack.array[value_stack.top-5].InsertPrefix, value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-2].TextList, value_stack.array[value_stack.top-1].SelectStatement); }
        break;
      case 317: // trigger_cmd -> DELETE, FROM, nm, where_opt
{ yyval.Statement = new SQLiteDeleteStatement(value_stack.array[value_stack.top-2].Text, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 318: // trigger_cmd -> select
{ yyval.Statement = value_stack.array[value_stack.top-1].SelectStatement; }
        break;
      case 319: // itemlist -> itemlist, COMMA, expr
{ yyval.ExpressionsList = value_stack.array[value_stack.top-3].ExpressionsList; yyval.ExpressionsList.Add(value_stack.array[value_stack.top-1].Expression); }
        break;
      case 320: // itemlist -> expr
{ yyval.ExpressionsList = new List<SQLiteExpression>(); yyval.ExpressionsList.Add(value_stack.array[value_stack.top-1].Expression); }
        break;
      case 321: // insert_cmd -> INSERT, orconf
{ yyval.InsertPrefix = new SQLiteInsertPrefix(value_stack.array[value_stack.top-1].ResolveAction); }
        break;
      case 322: // insert_cmd -> REPLACE
{ yyval.InsertPrefix = new SQLiteInsertPrefix(); }
        break;
      case 323: // where_opt -> /* empty */
{ yyval.Expression = null; }
        break;
      case 324: // where_opt -> WHERE, expr
{ yyval.Expression = value_stack.array[value_stack.top-1].Expression; }
        break;
      case 325: // setlist -> setlist, COMMA, nm, EQ, expr
{ yyval.UpdateItemsList = value_stack.array[value_stack.top-5].UpdateItemsList; yyval.UpdateItemsList.Add(new SQLiteUpdateItem(value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-1].Expression)); }
        break;
      case 326: // setlist -> nm, EQ, expr
{ yyval.UpdateItemsList = new List<SQLiteUpdateItem>(); yyval.UpdateItemsList.Add(new SQLiteUpdateItem(value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-1].Expression)); }
        break;
      case 327: // select -> oneselect
{ yyval.SelectStatement = value_stack.array[value_stack.top-1].SingleSelectStatement; }
        break;
      case 328: // select -> select, multiselect_op, oneselect
{ yyval.SelectStatement = new SQLiteMultiSelectStatement(value_stack.array[value_stack.top-3].SelectStatement, value_stack.array[value_stack.top-2].SelectOperator, value_stack.array[value_stack.top-1].SingleSelectStatement); }
        break;
      case 329: // multiselect_op -> UNION
{ yyval.SelectOperator = SQLiteSelectOperator.Union; }
        break;
      case 330: // multiselect_op -> UNION, ALL
{ yyval.SelectOperator = SQLiteSelectOperator.UnionAll; }
        break;
      case 331: // multiselect_op -> EXCEPT
{ yyval.SelectOperator = SQLiteSelectOperator.Except; }
        break;
      case 332: // multiselect_op -> INTERSECT
{ yyval.SelectOperator = SQLiteSelectOperator.Intersect; }
        break;
      case 333: // oneselect -> SELECT, distinct, selcollist, from, where_opt, groupby_opt, 
                //              having_opt, orderby_opt, limit_opt
{
	yyval.SingleSelectStatement = new SQLiteSingleSelectStatement(value_stack.array[value_stack.top-8].Distinct, value_stack.array[value_stack.top-7].SelectColumnsList, value_stack.array[value_stack.top-6].FromClause, value_stack.array[value_stack.top-5].Expression, value_stack.array[value_stack.top-4].ExpressionsList, value_stack.array[value_stack.top-3].Expression, value_stack.array[value_stack.top-2].SortItemsList, value_stack.array[value_stack.top-1].LimitClause);
}
        break;
      case 334: // distinct -> /* empty */
{ yyval.Distinct = SQLiteDistinct.None; }
        break;
      case 335: // distinct -> DISTINCT
{ yyval.Distinct = SQLiteDistinct.Distinct; }
        break;
      case 336: // distinct -> ALL
{ yyval.Distinct = SQLiteDistinct.All; }
        break;
      case 338: // sclp -> selcollist, COMMA
{ yyval.SelectColumnsList = value_stack.array[value_stack.top-2].SelectColumnsList; }
        break;
      case 339: // selcollist -> sclp, expr, as
{
	if (value_stack.array[value_stack.top-3].SelectColumnsList != null)
		yyval.SelectColumnsList = value_stack.array[value_stack.top-3].SelectColumnsList;
	else
		yyval.SelectColumnsList = new List<SQLiteSelectColumn>();
	yyval.SelectColumnsList.Add(new SQLiteSelectColumn(value_stack.array[value_stack.top-2].Expression, value_stack.array[value_stack.top-1].Text));		
}
        break;
      case 340: // selcollist -> sclp, STAR
{
	if (value_stack.array[value_stack.top-2].SelectColumnsList != null)
		yyval.SelectColumnsList = value_stack.array[value_stack.top-2].SelectColumnsList;
	else
		yyval.SelectColumnsList = new List<SQLiteSelectColumn>();
	yyval.SelectColumnsList.Add(new SQLiteSelectColumn());	
}
        break;
      case 341: // selcollist -> sclp, nm, DOT, STAR
{
	if (value_stack.array[value_stack.top-4].SelectColumnsList != null)
		yyval.SelectColumnsList = value_stack.array[value_stack.top-4].SelectColumnsList;
	else
		yyval.SelectColumnsList = new List<SQLiteSelectColumn>();
	yyval.SelectColumnsList.Add(new SQLiteSelectColumn(new SQLiteObjectName(value_stack.array[value_stack.top-3].Text)));	
}
        break;
      case 343: // as -> AS, nm
{ yyval.Text = value_stack.array[value_stack.top-1].Text; }
        break;
      case 344: // as -> ids
{ yyval.Text = value_stack.array[value_stack.top-1].Text; }
        break;
      case 346: // from -> FROM, seltablist
{ yyval.FromClause = value_stack.array[value_stack.top-1].FromClause; }
        break;
      case 348: // stl_prefix -> seltablist, joinop
{ yyval.FromClause = value_stack.array[value_stack.top-2].FromClause.AddJoin(value_stack.array[value_stack.top-1].JoinOperator); }
        break;
      case 349: // seltablist -> stl_prefix, nm, dbnm, as, indexed_opt, on_opt, using_opt
{
	if (value_stack.array[value_stack.top-7].FromClause == null)
		yyval.FromClause = new SQLiteFromClause();
	else
		yyval.FromClause = value_stack.array[value_stack.top-7].FromClause;
	yyval.FromClause.AddTable(new SQLiteObjectName(value_stack.array[value_stack.top-6].Text, value_stack.array[value_stack.top-5].Text), value_stack.array[value_stack.top-4].Text, value_stack.array[value_stack.top-3].FromIndexed, value_stack.array[value_stack.top-2].Expression, value_stack.array[value_stack.top-1].TextList);
}
        break;
      case 350: // seltablist -> stl_prefix, LP, seltablist_paren, RP, as, on_opt, using_opt
{
	if (value_stack.array[value_stack.top-7].FromClause == null)
		yyval.FromClause = new SQLiteFromClause();
	else
		yyval.FromClause = value_stack.array[value_stack.top-7].FromClause;
	yyval.FromClause.AddInternalTable(value_stack.array[value_stack.top-5].FromInternalTable, value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-2].Expression, value_stack.array[value_stack.top-1].TextList);
}
        break;
      case 351: // seltablist_paren -> select
{ yyval.FromInternalTable = new SQLiteFromInternalTable(value_stack.array[value_stack.top-1].SelectStatement); }
        break;
      case 352: // seltablist_paren -> seltablist
{ yyval.FromInternalTable = new SQLiteFromInternalTable(value_stack.array[value_stack.top-1].FromClause); }
        break;
      case 353: // fullname -> nm, dbnm
{ yyval.ObjectName = new SQLiteObjectName(value_stack.array[value_stack.top-2].Text, value_stack.array[value_stack.top-1].Text); }
        break;
      case 354: // joinop -> COMMA
{ yyval.JoinOperator = SQLiteJoinOperator.Comma; }
        break;
      case 355: // joinop -> JOIN
{ yyval.JoinOperator = SQLiteJoinOperator.Join; }
        break;
      case 356: // joinop -> JOIN_KW, JOIN
{ yyval.JoinOperator = value_stack.array[value_stack.top-2].JoinOperator | SQLiteJoinOperator.Join; }
        break;
      case 357: // joinop -> JOIN_KW, JOIN_KW, JOIN
{ yyval.JoinOperator = value_stack.array[value_stack.top-3].JoinOperator | value_stack.array[value_stack.top-2].JoinOperator | SQLiteJoinOperator.Join; }
        break;
      case 358: // joinop -> JOIN_KW, JOIN_KW, JOIN_KW, JOIN
{ yyval.JoinOperator = value_stack.array[value_stack.top-4].JoinOperator | value_stack.array[value_stack.top-3].JoinOperator | value_stack.array[value_stack.top-2].JoinOperator | SQLiteJoinOperator.Join; }
        break;
      case 359: // on_opt -> /* empty */
{ yyval.Expression = null; }
        break;
      case 360: // on_opt -> ON, expr
{ yyval.Expression = value_stack.array[value_stack.top-1].Expression; }
        break;
      case 361: // indexed_opt -> /* empty */
{ yyval.FromIndexed = null; }
        break;
      case 362: // indexed_opt -> INDEXED, BY, nm
{ yyval.FromIndexed = new SQLiteFromIndexed(value_stack.array[value_stack.top-1].Text); }
        break;
      case 363: // indexed_opt -> NOT, INDEXED
{ yyval.FromIndexed = new SQLiteFromIndexed(); }
        break;
      case 364: // using_opt -> /* empty */
{ yyval.TextList = null; }
        break;
      case 365: // using_opt -> USING, LP, inscollist, RP
{ yyval.TextList = value_stack.array[value_stack.top-2].TextList; }
        break;
      case 366: // orderby_opt -> /* empty */
{ yyval.SortItemsList = null; }
        break;
      case 367: // orderby_opt -> ORDER, BY, sortlist
{ yyval.SortItemsList = value_stack.array[value_stack.top-1].SortItemsList; }
        break;
      case 368: // sortlist -> sortlist, COMMA, sortitem, sortorder
{ yyval.SortItemsList = value_stack.array[value_stack.top-4].SortItemsList; yyval.SortItemsList.Add(new SQLiteSortItem(value_stack.array[value_stack.top-2].Expression, value_stack.array[value_stack.top-1].SortOrder)); }
        break;
      case 369: // sortlist -> sortitem, sortorder
{ yyval.SortItemsList = new List<SQLiteSortItem>(); yyval.SortItemsList.Add(new SQLiteSortItem(value_stack.array[value_stack.top-2].Expression, value_stack.array[value_stack.top-1].SortOrder)); }
        break;
      case 370: // sortitem -> expr
{ yyval.Expression = value_stack.array[value_stack.top-1].Expression; }
        break;
      case 371: // sortorder -> /* empty */
{ yyval.SortOrder = SQLiteSortOrder.None; }
        break;
      case 372: // sortorder -> ASC
{ yyval.SortOrder = SQLiteSortOrder.Ascending; }
        break;
      case 373: // sortorder -> DESC
{ yyval.SortOrder = SQLiteSortOrder.Descending; }
        break;
      case 374: // groupby_opt -> /* empty */
{ yyval.ExpressionsList = null; }
        break;
      case 375: // groupby_opt -> GROUP, BY, nexprlist
{ yyval.ExpressionsList = value_stack.array[value_stack.top-1].ExpressionsList; }
        break;
      case 376: // having_opt -> /* empty */
{ yyval.Expression = null; }
        break;
      case 377: // having_opt -> HAVING, expr
{ yyval.Expression = value_stack.array[value_stack.top-1].Expression; }
        break;
      case 378: // limit_opt -> /* empty */
{ yyval.LimitClause = null; }
        break;
      case 379: // limit_opt -> LIMIT, expr
{ yyval.LimitClause = new SQLiteLimitClause(value_stack.array[value_stack.top-1].Expression); }
        break;
      case 380: // limit_opt -> LIMIT, expr, OFFSET, expr
{ yyval.LimitClause = new SQLiteLimitClause(value_stack.array[value_stack.top-3].Expression, value_stack.array[value_stack.top-1].Expression); }
        break;
      case 381: // limit_opt -> LIMIT, expr, COMMA, expr
{ yyval.LimitClause = new SQLiteLimitClause(value_stack.array[value_stack.top-1].Expression, value_stack.array[value_stack.top-3].Expression); }
        break;
    }
  }

  protected override string TerminalToString(int terminal)
  {
    if (aliasses != null && aliasses.ContainsKey(terminal))
        return aliasses[terminal];
    else if (((Tokens)terminal).ToString() != terminal.ToString())
        return ((Tokens)terminal).ToString();
    else
        return CharToString((char)terminal);
  }

}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The GNU Lesser General Public License (LGPLv3)


Written By
Software Developer
Israel Israel
My name is Liron Levi and I'm developing software for fun & profit for 15 years already.

Comments and Discussions