From c258b062f2316c5f1276ad9e7f170d7aa7783eac Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 20 Sep 2015 12:50:43 +0200 Subject: [PATCH 1/9] Part 1: Syntactical support --- src/main/jay/grammars/php.jay | 7 +- src/main/jay/grammars/xp.jay | 7 +- .../xp/compiler/ast/YieldFromNode.class.php | 21 + .../xp/compiler/syntax/php/Lexer.class.php | 38 +- .../xp/compiler/syntax/php/Parser.class.php | 2217 ++++++------ .../php/xp/compiler/syntax/xp/Lexer.class.php | 45 +- .../xp/compiler/syntax/xp/Parser.class.php | 3224 +++++++++-------- .../tests/syntax/php/GeneratorTest.class.php | 11 + .../tests/syntax/xp/GeneratorTest.class.php | 11 + 9 files changed, 2831 insertions(+), 2750 deletions(-) create mode 100755 src/main/php/xp/compiler/ast/YieldFromNode.class.php diff --git a/src/main/jay/grammars/php.jay b/src/main/jay/grammars/php.jay index a2dc19950..5d27963f8 100644 --- a/src/main/jay/grammars/php.jay +++ b/src/main/jay/grammars/php.jay @@ -76,11 +76,12 @@ use xp\compiler\ast\DynamicInstanceOfNode; use xp\compiler\ast\DynamicVariableReferenceNode; use xp\compiler\ast\NoopNode; use xp\compiler\ast\YieldNode; +use xp\compiler\ast\YieldFromNode; %} %left ',' %left '(' ')' -%right T_YIELD +%right T_YIELD T_YIELD_FROM %left T_BOOLEAN_OR %left T_BOOLEAN_AND %right '=' T_ADD_EQUAL T_SUB_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_SHR T_SHL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL @@ -147,6 +148,7 @@ use xp\compiler\ast\YieldNode; %token T_BREAK 365 %token T_CONTINUE 366 %token T_YIELD 367 +%token T_YIELD_FROM 368 %token T_IF 370 %token T_ELSE 371 @@ -604,6 +606,9 @@ expression: | T_YIELD expression T_DOUBLE_ARROW expression { $$= $yyLex->create(new YieldNode($4, $2)); } + | T_YIELD_FROM expression { + $$= $yyLex->create(new YieldFromNode($2)); + } | assignment { $$= $yyLex->create(new AssignmentNode($1)); } diff --git a/src/main/jay/grammars/xp.jay b/src/main/jay/grammars/xp.jay index 57fd658d7..df8c4fb2a 100644 --- a/src/main/jay/grammars/xp.jay +++ b/src/main/jay/grammars/xp.jay @@ -71,11 +71,12 @@ use xp\compiler\ast\WithNode; use xp\compiler\ast\ArmNode; use xp\compiler\ast\BracedExpressionNode; use xp\compiler\ast\YieldNode; +use xp\compiler\ast\YieldFromNode; %} %left ',' %nonassoc T_ARROW -%right T_YIELD +%right T_YIELD T_YIELD_FROM %left T_BOOLEAN_OR %left T_BOOLEAN_AND %right '=' T_ADD_EQUAL T_SUB_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL @@ -147,6 +148,7 @@ use xp\compiler\ast\YieldNode; %token T_BREAK 365 %token T_CONTINUE 366 %token T_YIELD 367 +%token T_YIELD_FROM 368 %token T_IF 370 %token T_ELSE 371 @@ -838,6 +840,9 @@ expression: | T_YIELD expression ':' expression { $$= $yyLex->create(new YieldNode($4, $2)); } + | T_YIELD_FROM expression { + $$= $yyLex->create(new YieldFromNode($2)); + } | expression T_AS paramtyperef { $$= $yyLex->create(new CastNode(array_merge($3, array('expression' => $1)))); } diff --git a/src/main/php/xp/compiler/ast/YieldFromNode.class.php b/src/main/php/xp/compiler/ast/YieldFromNode.class.php new file mode 100755 index 000000000..ccb919b60 --- /dev/null +++ b/src/main/php/xp/compiler/ast/YieldFromNode.class.php @@ -0,0 +1,21 @@ +expr= $expr; + } + + /** + * Returns a hashcode + * + * @return string + */ + public function hashCode() { + return 'yield from '.$this->expr->hashCode(); + } +} \ No newline at end of file diff --git a/src/main/php/xp/compiler/syntax/php/Lexer.class.php b/src/main/php/xp/compiler/syntax/php/Lexer.class.php index 9cb7d02a1..6ebb3c766 100644 --- a/src/main/php/xp/compiler/syntax/php/Lexer.class.php +++ b/src/main/php/xp/compiler/syntax/php/Lexer.class.php @@ -49,7 +49,6 @@ class Lexer extends \text\parser\generic\AbstractLexer { 'while' => Parser::T_WHILE, 'break' => Parser::T_BREAK, 'continue' => Parser::T_CONTINUE, - 'yield' => Parser::T_YIELD, 'if' => Parser::T_IF, 'else' => Parser::T_ELSE, @@ -66,7 +65,6 @@ class Lexer extends \text\parser\generic\AbstractLexer { '.' => array('.=' => Parser::T_CONCAT_EQUAL), '+' => array('+=' => Parser::T_ADD_EQUAL, '++' => Parser::T_INC), '*' => array('*=' => Parser::T_MUL_EQUAL), - '/' => array('/=' => Parser::T_DIV_EQUAL), '%' => array('%=' => Parser::T_MOD_EQUAL), '=' => array('==' => Parser::T_EQUALS, '=>' => Parser::T_DOUBLE_ARROW), '!' => array('!=' => Parser::T_NOT_EQUALS), @@ -74,7 +72,8 @@ class Lexer extends \text\parser\generic\AbstractLexer { '|' => array('||' => Parser::T_BOOLEAN_OR, '|=' => Parser::T_OR_EQUAL), '&' => array('&&' => Parser::T_BOOLEAN_AND, '&=' => Parser::T_AND_EQUAL), '^' => array('^=' => Parser::T_XOR_EQUAL), - '?' => array('?>' => -1) + '?' => array('?>' => -1), + 'yield' => array('yield from' => Parser::T_YIELD_FROM, 'yield' => Parser::T_YIELD) ); const @@ -212,6 +211,28 @@ public function advance() { } else if ('$' === $token{0}) { $this->token= Parser::T_VARIABLE; $this->value= substr($token, 1); + } else if (isset(self::$lookahead[$token])) { + $ahead= $token; + $p= true; + foreach (self::$lookahead[$token] as $candidate => $id) { + $l= strlen($candidate); + while (strlen($ahead) < $l && $this->tokenizer->hasMoreTokens()) { + $ahead.= $this->nextToken(); + } + if (0 === strncmp($candidate, $ahead, $l)) { + if (0 === $id) break; + $this->token= $id; + $this->value= $candidate; + $this->pushBack(substr($ahead, $l)); + $p= false; + break; + } + } + if ($p) { + $this->pushBack(substr($ahead, 1)); + $this->token= ord($token); + $this->value= $token; + } } else if (isset(self::$keywords[$token])) { $this->token= self::$keywords[$token]; $this->value= $token; @@ -241,17 +262,6 @@ public function advance() { $this->value= $token; $this->pushBack($ahead); } - } else if (isset(self::$lookahead[$token])) { - $ahead= $this->nextToken(); - $combined= $token.$ahead; - if (isset(self::$lookahead[$token][$combined])) { - $this->token= self::$lookahead[$token][$combined]; - $this->value= $combined; - } else { - $this->token= ord($token); - $this->value= $token; - $this->pushBack($ahead); - } } else if (false !== strpos(self::DELIMITERS, $token) && 1 == strlen($token)) { $this->token= ord($token); $this->value= $token; diff --git a/src/main/php/xp/compiler/syntax/php/Parser.class.php b/src/main/php/xp/compiler/syntax/php/Parser.class.php index c789e6be4..e175bca9e 100644 --- a/src/main/php/xp/compiler/syntax/php/Parser.class.php +++ b/src/main/php/xp/compiler/syntax/php/Parser.class.php @@ -77,13 +77,15 @@ use xp\compiler\ast\DynamicVariableReferenceNode; use xp\compiler\ast\NoopNode; use xp\compiler\ast\YieldNode; -#line 81 "-" +use xp\compiler\ast\YieldFromNode; +#line 82 "-" /** * Generated parser class */ class Parser extends \text\parser\generic\AbstractParser { const T_YIELD= 367; + const T_YIELD_FROM= 368; const T_BOOLEAN_OR= 414; const T_BOOLEAN_AND= 415; const T_ADD_EQUAL= 404; @@ -166,16 +168,16 @@ class Parser extends \text\parser\generic\AbstractParser { 72, 72, 26, 74, 26, 75, 26, 76, 26, 77, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 83, 83, 84, 84, 85, 38, 87, 38, 25, 25, - 25, 25, 25, 25, 86, 86, 86, 86, 88, 88, - 90, 90, 89, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 79, 79, 79, 79, 79, - 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, - 82, 82, 73, 73, 91, 91, 93, 92, 94, 92, - 92, 92, 92, 95, 92, 31, 31, 10, 96, 17, - 17, 33, 33, 97, 97, 98, 98, 98, 98, 98, - 98, + 26, 83, 83, 84, 84, 85, 38, 87, 38, 25, + 25, 25, 25, 25, 25, 86, 86, 86, 86, 88, + 88, 90, 90, 89, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 79, 79, 79, 79, + 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, + 81, 82, 82, 73, 73, 91, 91, 93, 92, 94, + 92, 92, 92, 92, 95, 92, 31, 31, 10, 96, + 17, 17, 33, 33, 97, 97, 98, 98, 98, 98, + 98, 98, ); protected static $yyLen= array(2, 3, 0, 0, 4, 0, 1, 1, 2, 3, 1, @@ -191,768 +193,766 @@ class Parser extends \text\parser\generic\AbstractParser { 4, 1, 3, 0, 0, 3, 1, 1, 2, 0, 9, 0, 1, 1, 3, 0, 1, 4, 4, 1, 4, 1, 1, 0, 3, 0, 3, 0, 5, 0, - 6, 2, 1, 2, 4, 1, 1, 1, 1, 1, - 5, 3, 3, 3, 3, 4, 4, 2, 7, 4, - 0, 1, 1, 3, 1, 1, 0, 5, 1, 1, - 1, 1, 1, 1, 0, 1, 1, 1, 1, 3, - 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, - 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, - 2, 2, 0, 1, 1, 2, 0, 4, 0, 4, - 2, 2, 4, 0, 6, 1, 1, 1, 1, 1, - 3, 0, 1, 1, 2, 1, 1, 1, 1, 1, - 1, + 6, 2, 1, 2, 4, 2, 1, 1, 1, 1, + 1, 5, 3, 3, 3, 3, 4, 4, 2, 7, + 4, 0, 1, 1, 3, 1, 1, 0, 5, 1, + 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, + 3, 0, 1, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, + 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 0, 1, 1, 2, 0, 4, 0, + 4, 2, 2, 4, 0, 6, 1, 1, 1, 1, + 1, 3, 0, 1, 1, 2, 1, 1, 1, 1, + 1, 1, ); protected static $yyDefRed= array(0, 3, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 236, 238, 237, 239, 241, 240, 0, 1, 0, - 42, 233, 0, 8, 0, 4, 9, 0, 14, 16, - 235, 11, 0, 0, 0, 0, 0, 12, 0, 0, - 0, 0, 228, 0, 0, 13, 0, 41, 44, 0, - 0, 0, 0, 0, 0, 164, 160, 163, 161, 162, - 0, 0, 0, 156, 0, 0, 0, 52, 19, 0, - 0, 0, 23, 25, 0, 0, 0, 157, 0, 46, + 0, 237, 239, 238, 240, 242, 241, 0, 1, 0, + 42, 234, 0, 8, 0, 4, 9, 0, 14, 16, + 236, 11, 0, 0, 0, 0, 0, 12, 0, 0, + 0, 0, 229, 0, 0, 13, 0, 41, 44, 0, + 0, 0, 0, 0, 0, 165, 161, 164, 162, 163, + 0, 0, 0, 157, 0, 0, 0, 52, 19, 0, + 0, 0, 23, 25, 0, 0, 0, 158, 0, 46, 47, 0, 21, 25, 0, 0, 0, 0, 50, 51, - 0, 54, 55, 0, 49, 0, 231, 0, 17, 0, + 0, 54, 55, 0, 49, 0, 232, 0, 17, 0, 24, 26, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 126, 0, 0, 0, 0, 124, 0, 0, - 123, 0, 0, 136, 137, 138, 139, 140, 166, 0, - 0, 0, 0, 169, 15, 0, 27, 0, 0, 0, - 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 132, 148, 130, 0, 0, 128, 0, + 0, 0, 0, 126, 0, 0, 0, 0, 124, 0, + 0, 123, 0, 0, 137, 138, 139, 140, 141, 167, + 0, 0, 0, 0, 170, 15, 0, 27, 0, 0, + 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 149, 130, 0, 0, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 212, 213, 53, 0, 0, 159, 0, 0, + 0, 31, 0, 0, 33, 0, 30, 0, 0, 0, + 0, 230, 0, 227, 0, 127, 228, 0, 156, 0, + 0, 154, 218, 0, 220, 125, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 211, 212, 53, 0, 0, 158, 0, 0, 0, 31, - 0, 0, 33, 0, 30, 0, 0, 0, 0, 229, - 0, 226, 0, 127, 227, 0, 155, 0, 0, 153, - 217, 0, 219, 125, 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 146, 145, 115, 0, 0, 173, + 171, 160, 34, 32, 37, 0, 0, 0, 151, 0, + 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, + 217, 0, 120, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 155, 0, 225, 0, 0, 0, + 129, 0, 0, 0, 0, 59, 0, 119, 118, 131, + 68, 0, 88, 72, 76, 78, 74, 84, 86, 70, + 80, 91, 0, 0, 0, 65, 0, 102, 219, 0, + 224, 221, 0, 63, 0, 0, 0, 0, 82, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, + 150, 67, 0, 121, 0, 0, 62, 61, 0, 0, + 0, 0, 0, 0, 0, 85, 87, 0, 0, 103, + 226, 40, 56, 0, 38, 69, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 145, 144, 115, 0, 0, 172, 170, 159, - 34, 32, 37, 0, 0, 0, 150, 0, 0, 0, - 0, 0, 0, 0, 0, 222, 0, 0, 216, 0, - 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 154, 0, 224, 0, 0, 0, 129, 0, - 0, 0, 0, 59, 0, 119, 118, 131, 68, 0, - 88, 72, 76, 78, 74, 84, 86, 70, 80, 91, - 0, 0, 0, 65, 0, 102, 218, 0, 223, 220, - 0, 63, 0, 0, 0, 0, 82, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 149, 67, - 0, 121, 0, 0, 62, 61, 0, 0, 0, 0, - 0, 0, 0, 85, 87, 0, 0, 103, 225, 40, - 56, 0, 38, 69, 0, 89, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 57, 110, 83, 107, 0, 0, 77, 0, 0, 0, - 0, 0, 0, 109, 0, 0, 0, 0, 105, 71, - 98, 100, 0, 95, 0, 0, 0, 79, 93, 75, - 0, 0, 0, 81, 97, 0, 0, 106, 0, 0, - 0, 73, 0, 101, 0, 99, 0, 0, 111, + 0, 0, 57, 110, 83, 107, 0, 0, 77, 0, + 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, + 105, 71, 98, 100, 0, 95, 0, 0, 0, 79, + 93, 75, 0, 0, 0, 81, 97, 0, 0, 106, + 0, 0, 0, 73, 0, 101, 0, 99, 0, 0, + 111, ); protected static $yyDgoto= array(2, - 3, 6, 19, 10, 4, 7, 8, 119, 100, 212, - 36, 51, 71, 86, 37, 53, 73, 101, 102, 137, - 103, 104, 138, 203, 64, 332, 312, 298, 364, 383, - 313, 34, 21, 35, 65, 66, 67, 121, 122, 333, - 314, 315, 334, 335, 336, 245, 346, 355, 420, 349, - 352, 410, 350, 351, 356, 423, 368, 403, 353, 354, - 348, 424, 425, 432, 433, 431, 404, 405, 413, 123, - 214, 292, 224, 158, 153, 227, 216, 124, 125, 126, - 127, 128, 218, 219, 220, 132, 91, 133, 134, 269, - 225, 226, 284, 288, 338, 215, 22, 23, + 3, 6, 19, 10, 4, 7, 8, 120, 100, 214, + 36, 51, 71, 86, 37, 53, 73, 101, 102, 138, + 103, 104, 139, 205, 64, 334, 314, 300, 366, 385, + 315, 34, 21, 35, 65, 66, 67, 122, 123, 335, + 316, 317, 336, 337, 338, 247, 348, 357, 422, 351, + 354, 412, 352, 353, 358, 425, 370, 405, 355, 356, + 350, 426, 427, 434, 435, 433, 406, 407, 415, 124, + 216, 294, 226, 160, 155, 229, 218, 125, 126, 127, + 128, 129, 220, 221, 222, 133, 91, 134, 135, 271, + 227, 228, 286, 290, 340, 217, 22, 23, ); - protected static $yySindex = array( -273, - 0, 0, -253, -135, -135, 127, -253, 0, 58, 89, - 100, 0, 0, 0, 0, 0, 0, 95, 0, -228, - 0, 0, 219, 0, -135, 0, 0, 125, 0, 0, - 0, 0, -79, 103, 173, -79, -79, 0, -135, 180, - 219, 125, 0, -87, -68, 0, 1207, 0, 0, -79, - -77, -79, 148, -79, 213, 0, 0, 0, 0, 0, - 217, 258, -111, 0, 262, 264, 265, 0, 0, -79, - 187, 271, 0, 0, 276, -63, -63, 0, -222, 0, - 0, -233, 0, 0, -79, 57, 4092, 0, 0, 0, - 3325, 0, 0, 213, 0, 342, 0, 60, 0, -191, - 0, 0, 0, 231, 4109, 4092, 4092, 4092, 4092, 4092, - 4092, 4092, 0, 4092, 4092, 281, 284, 0, -85, 2411, - 0, 294, 299, 0, 0, 0, 0, 0, 0, 1269, - 299, 303, 301, 0, 0, 287, 0, 235, 92, 297, - 127, 0, 82, 166, 1296, 1339, -187, -187, -276, -187, - -187, -187, -27, 0, 0, 0, 13, -59, 0, 4092, - 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 3762, 3849, - 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4054, 4083, 4092, - 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, -76, - 0, 0, 0, 4092, 4092, 0, 4092, 255, 60, 0, - 320, 4092, 0, 21, 0, 4092, 4092, -59, 4092, 0, - 325, 0, 327, 0, 0, 4092, 0, 332, 336, 0, - 0, -118, 0, 0, 0, -59, -221, 2438, 2465, 2465, - 2465, 2465, 2465, 2465, 2465, 2465, 4092, 2465, 4092, 2465, - 2465, 2465, 2465, 2411, 318, -12, 3215, 3239, 4092, 128, - 4092, 128, 239, 239, 239, 239, 239, -19, -19, -276, - -276, -276, 0, 0, 0, 2411, 1269, 0, 0, 0, - 0, 0, 0, 2411, 2411, 2411, 0, 3194, 4092, 4092, - 345, 272, 13, 4092, 354, 0, 4092, 4092, 0, 364, - 0, -59, 2465, 2465, 4092, 2465, 2465, 29, 372, 373, - -59, 3719, 0, 312, 0, 1366, 1393, 4092, 0, 3194, - 297, 374, 99, 0, 397, 0, 0, 0, 0, 319, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3719, 1778, 328, 0, 3719, 0, 0, 4092, 0, 0, - 411, 0, 407, 297, 29, 4092, 0, 4092, 426, 428, - 3719, 429, 421, 434, 454, 456, 380, 0, 0, 0, - 470, 0, -84, 24, 0, 0, 438, 3719, 1805, 4092, - 4092, 152, 4092, 0, 0, 4092, 4092, 0, 0, 0, - 0, 3719, 0, 0, 396, 0, 463, 1832, 483, 1929, - 1875, 1902, 399, 182, 4092, 3719, 4092, 196, 3719, 404, - 0, 0, 0, 0, 182, 473, 0, 1972, 132, 505, - 176, -127, 508, 0, 4092, 490, 210, 3719, 0, 0, - 0, 0, 427, 0, -127, -79, 512, 0, 0, 0, - 3719, 4092, 502, 0, 0, 221, 3719, 0, 1999, 3719, - 521, 0, 3719, 0, 440, 0, 3719, 439, 0, + protected static $yySindex = array( -294, + 0, 0, -279, -189, -189, -10, -279, 0, -19, 41, + 61, 0, 0, 0, 0, 0, 0, 65, 0, -121, + 0, 0, 78, 0, -189, 0, 0, 105, 0, 0, + 0, 0, -83, 88, 141, -83, -83, 0, -189, 184, + 78, 105, 0, -76, -68, 0, 630, 0, 0, -83, + -61, -83, 157, -83, 229, 0, 0, 0, 0, 0, + 234, 269, -104, 0, 270, 272, 273, 0, 0, -83, + 201, 291, 0, 0, 297, -64, -64, 0, -221, 0, + 0, -118, 0, 0, -83, 59, 4050, 0, 0, 0, + 3392, 0, 0, 229, 0, 594, 0, 85, 0, -216, + 0, 0, 0, 147, 4091, 4050, 4050, 4050, 4050, 4050, + 4050, 4050, 4050, 0, 4050, 4050, 306, 311, 0, -58, + 2411, 0, 312, 310, 0, 0, 0, 0, 0, 0, + 1269, 310, 340, 352, 0, 0, 336, 0, 148, 139, + 339, -10, 0, 182, 253, 1296, 1339, 2411, -101, -101, + -248, -101, -101, -101, -74, 0, 0, 0, 63, -53, + 0, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, + 3553, 3741, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 3858, + 4033, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, + 4050, -9, 0, 0, 0, 4050, 4050, 0, 4050, 104, + 85, 0, 364, 4050, 0, 69, 0, 4050, 4050, -53, + 4050, 0, 365, 0, 370, 0, 0, 4050, 0, 371, + 369, 0, 0, -2, 0, 0, 0, -53, -215, 2438, + 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 4050, 2465, + 4050, 2465, 2465, 2465, 2465, 2411, 356, 2700, 3204, 2956, + 4050, 128, 4050, 128, 4, 4, 4, 4, 4, 239, + 239, -248, -248, -248, 0, 0, 0, 2411, 1269, 0, + 0, 0, 0, 0, 0, 2411, 2411, 2411, 0, 3167, + 4050, 4050, 397, 316, 63, 4050, 401, 0, 4050, 4050, + 0, 402, 0, -53, 2465, 2465, 4050, 2465, 2465, -44, + 411, 412, -53, 3697, 0, 372, 0, 1366, 1393, 4050, + 0, 3167, 339, 425, 127, 0, 424, 0, 0, 0, + 0, 346, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3697, 1778, 355, 0, 3697, 0, 0, 4050, + 0, 0, 452, 0, 436, 339, -44, 4050, 0, 4050, + 456, 457, 3697, 459, 441, 442, 462, 463, 379, 0, + 0, 0, 464, 0, -84, -32, 0, 0, 454, 3697, + 1805, 4050, 4050, 150, 4050, 0, 0, 4050, 4050, 0, + 0, 0, 0, 3697, 0, 0, 391, 0, 458, 1832, + 475, 1929, 1875, 1902, 393, 175, 4050, 3697, 4050, 180, + 3697, 398, 0, 0, 0, 0, 175, 465, 0, 1972, + 109, 482, 155, -25, 487, 0, 4050, 473, 196, 3697, + 0, 0, 0, 0, 427, 0, -25, -83, 512, 0, + 0, 0, 3697, 4050, 502, 0, 0, 221, 3697, 0, + 1999, 3697, 521, 0, 3697, 0, 440, 0, 3697, 439, + 0, ); protected static $yyRindex= array( 660, - 0, 0, 594, 0, 0, -34, 638, 0, 16, 0, + 0, 0, 265, 0, 0, 20, 638, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -155, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 472, 0, 0, 0, 0, 1, - 63, 0, 0, -108, 443, 0, 0, 0, 0, 0, - 468, 0, 0, 0, -40, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 551, 0, 0, 0, - 0, 480, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -162, 552, -32, 0, 0, - 575, 0, 0, 0, 0, -162, 0, 0, 0, 0, + 0, 0, -151, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 498, 0, 0, 0, 0, -21, + -36, 0, 0, -108, 469, 0, 0, 0, 0, 0, + 470, 0, 0, 0, -40, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 562, 0, 0, 0, + 0, 481, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -162, 575, -39, 0, 0, + 581, 0, 0, 0, 0, -162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1242, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 167, 0, 0, 0, 110, - 0, 0, 10, 0, 0, 0, 0, 0, 0, 5, - 587, 0, 591, 0, 0, 0, 0, 0, 0, 252, - 293, 0, 2026, 0, 0, 273, 593, 620, 759, 647, - 691, 718, 0, 0, 0, 0, 602, 194, 0, 0, + 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, + 174, 0, 0, 86, 0, 0, 0, 0, 0, 0, + 51, 582, 0, 583, 0, 0, 0, 0, 0, 0, + 158, 285, 0, 2026, 0, 0, 890, 1406, 593, 620, + 759, 647, 691, 718, 0, 0, 0, 0, 585, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 588, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 236, 0, 0, 52, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 194, 0, 0, - 0, 0, 0, 0, 0, 552, 0, 0, 604, 0, - 0, 0, 0, 0, 0, 496, 0, 94, 204, 1321, - 1348, 1418, 1445, 1475, 1981, 2050, 0, 2077, 0, 3061, - 3105, 3253, 3261, 292, 0, 3141, 3118, 2710, 0, 3050, - 0, 3094, 2588, 2615, 2639, 2666, 2547, 2493, 2520, 1144, - 1171, 1198, 0, 0, 0, 54, 0, 0, 0, 0, - 0, 0, 0, 263, 313, 1406, 0, 451, 552, 552, - 0, 0, 0, 554, 43, 0, 0, 0, 0, 70, - 0, 194, 3269, 3273, 0, 3280, 3289, 607, 0, 0, - 194, 524, 0, 0, 0, 0, 0, 552, 0, 3162, - 56, 0, 0, 0, 609, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 266, 0, 0, 103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 194, + 0, 0, 0, 0, 0, 0, 0, 575, 0, 0, + 587, 0, 0, 0, 0, 0, 0, 496, 0, 94, + 204, 1321, 1348, 1418, 1445, 1475, 1981, 2050, 0, 2077, + 0, 2592, 3159, 3216, 3229, 264, 0, 3115, 3091, 2663, + 0, 2710, 0, 3047, 2547, 2571, 2615, 2639, -28, 2493, + 2520, 1144, 1171, 1198, 0, 0, 0, 202, 0, 0, + 0, 0, 0, 0, 0, 271, 2039, 2066, 0, 451, + 575, 575, 0, 0, 0, 539, 43, 0, 0, 0, + 0, 70, 0, 194, 3235, 3245, 0, 3254, 3258, 592, + 0, 0, 194, 518, 0, 0, 0, 0, 0, 575, + 0, 3138, 203, 0, 0, 0, 603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 524, 0, 0, 0, -123, 0, 0, 552, 0, 0, - 0, 0, 32, 56, 0, 600, 0, 0, 0, 0, + 0, 0, 518, 0, 0, 0, -96, 0, 0, 575, + 0, 0, 0, 0, 23, 203, 0, 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 524, 0, 601, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 518, + 0, 588, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 518, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 588, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3348, 0, 0, 0, + 605, 0, 3653, 523, 0, 0, 575, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 524, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 601, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3588, 0, 0, 0, 627, 0, - 3675, 544, 0, 0, 552, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 545, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, - 0, 0, -115, 0, 0, 0, 524, 0, 0, + 0, -89, 0, 0, -89, 0, 0, 0, 518, 0, + 0, ); protected static $yyGindex= array(0, - 0, 0, 0, 119, 0, 0, 664, -33, 36, -30, - 0, 0, 0, 592, 0, 0, 238, 0, 531, 476, - 0, 0, 0, -120, 498, 4357, 0, 0, 0, 0, - -142, 655, 657, 0, 192, 617, 0, -6, -36, 343, - 355, 0, 366, -50, 0, -128, 0, 0, 0, 0, + 0, 0, 0, 118, 0, 0, 643, -33, 6, -30, + 0, 0, 0, 576, 0, 0, 198, 0, 517, 467, + 0, 0, 0, -220, 471, 4300, 0, 0, 0, 0, + -144, 627, 629, 0, 257, 590, 0, 22, 2205, -34, + 327, 0, 338, 390, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 277, 0, 0, 0, 0, 298, 0, 0, 613, - 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 432, 0, 0, 0, 515, 0, - 493, 0, 0, 0, 0, 0, 693, 0, + 0, 249, 0, 0, 0, 0, 289, 0, 0, 606, + 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 392, 0, 0, 0, 499, 0, + 472, 0, 0, 0, 0, 0, 676, 0, ); protected static $yyTable = array(40, - 159, 66, 43, 43, 287, 44, 45, 39, 159, 64, - 213, 159, 39, 63, 18, 39, 43, 189, 43, 69, - 43, 72, 187, 75, 189, 177, 94, 188, 39, 187, - 185, 221, 186, 184, 188, 190, 43, 92, 290, 72, - 68, 20, 63, 63, 45, 114, 1, 180, 114, 182, - 113, 43, 10, 10, 72, 10, 10, 10, 10, 10, - 10, 10, 10, 223, 39, 265, 61, 5, 113, 68, - 68, 29, 30, 10, 10, 10, 10, 10, 10, 221, - 221, 176, 381, 221, 221, 221, 221, 221, 221, 221, - 39, 18, 171, 45, 173, 171, 35, 173, 277, 35, - 221, 221, 221, 221, 221, 221, 122, 122, 10, 10, - 122, 122, 122, 122, 122, 122, 122, 93, 291, 43, - 39, 156, 206, 11, 9, 191, 192, 122, 122, 122, - 122, 122, 122, 221, 142, 221, 221, 142, 10, 10, - 10, 285, 139, 32, 234, 234, 382, 26, 140, 25, - 114, 142, 142, 114, 39, 304, 43, 46, 27, 264, - 122, 18, 122, 122, 189, 221, 221, 221, 114, 187, - 185, 232, 186, 184, 188, 38, 204, 232, 234, 281, - 38, 99, 309, 38, 234, 28, 142, 180, 33, 182, - 342, 318, 122, 122, 122, 41, 88, 56, 57, 58, - 59, 60, 18, 159, 159, 78, 207, 159, 159, 159, - 159, 159, 159, 159, 191, 192, 42, 367, 142, 47, - 380, 286, 50, 365, 159, 159, 159, 159, 159, 159, - 213, 213, 38, 70, 213, 213, 213, 213, 213, 213, - 213, 52, 299, 300, 143, 421, 422, 143, 210, 66, - 66, 213, 213, 213, 213, 213, 213, 64, 64, 159, - 159, 143, 143, 263, 43, 232, 232, 89, 90, 62, - 74, 341, 222, 76, 141, 189, 116, 77, 199, 116, - 187, 185, 54, 186, 184, 188, 213, 213, 38, 142, - 159, 159, 190, 200, 116, 35, 143, 78, 79, 190, - 372, 361, 80, 36, 81, 210, 36, 83, 82, 84, - 35, 43, 211, 134, 85, 87, 134, 213, 213, 136, - 156, 36, 97, 157, 159, 10, 10, 10, 143, 43, - 134, 134, 117, 387, 193, 117, 12, 13, 14, 15, - 16, 17, 194, 196, 197, 407, 10, 198, 411, 117, - 117, 201, 217, 146, 221, 10, 146, 202, 406, 273, - 140, 210, 232, 232, 279, 134, 280, 430, 311, 12, - 146, 146, 282, 221, 221, 295, 18, 12, 427, 283, - 438, 122, 191, 192, 117, 301, 442, 183, 181, 191, - 192, 98, 43, 305, 302, 436, 232, 134, 178, 179, - 122, 122, 232, 308, 337, 146, 12, 13, 14, 15, - 16, 17, 316, 317, 343, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 142, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 146, 344, 190, - 345, 347, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 362, 359, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 363, 370, 135, 371, 373, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 159, 374, + 160, 160, 43, 43, 160, 44, 45, 39, 39, 200, + 215, 20, 200, 63, 18, 200, 43, 39, 43, 69, + 43, 72, 45, 75, 18, 1, 383, 39, 66, 200, + 200, 200, 200, 200, 200, 64, 43, 223, 92, 72, + 191, 5, 63, 63, 292, 189, 187, 39, 188, 186, + 190, 43, 10, 10, 72, 10, 10, 10, 10, 10, + 10, 10, 10, 192, 200, 200, 279, 267, 68, 225, + 9, 45, 25, 10, 10, 10, 10, 10, 10, 222, + 222, 39, 39, 222, 222, 222, 222, 222, 222, 222, + 384, 114, 344, 18, 114, 200, 200, 68, 68, 26, + 222, 222, 222, 222, 222, 222, 122, 122, 10, 10, + 122, 122, 122, 122, 122, 122, 122, 140, 93, 27, + 289, 43, 11, 141, 293, 367, 113, 122, 122, 122, + 122, 122, 122, 222, 143, 222, 222, 143, 10, 10, + 10, 94, 32, 172, 113, 39, 172, 206, 235, 235, + 311, 143, 143, 193, 194, 28, 46, 306, 43, 320, + 122, 266, 122, 122, 191, 222, 222, 222, 33, 189, + 187, 233, 188, 186, 190, 38, 38, 233, 29, 30, + 41, 61, 235, 99, 42, 38, 143, 182, 235, 184, + 142, 201, 122, 122, 122, 88, 56, 57, 58, 59, + 60, 35, 18, 160, 160, 143, 202, 160, 160, 160, + 160, 160, 160, 160, 114, 38, 35, 114, 143, 369, + 382, 158, 208, 47, 160, 160, 160, 160, 160, 160, + 214, 214, 114, 50, 214, 214, 214, 214, 214, 214, + 214, 52, 174, 35, 144, 174, 35, 144, 212, 70, + 38, 214, 214, 214, 214, 214, 214, 287, 212, 160, + 160, 144, 144, 233, 233, 213, 43, 83, 62, 12, + 13, 14, 15, 16, 17, 191, 66, 66, 224, 74, + 189, 54, 97, 64, 64, 190, 214, 214, 212, 76, + 160, 160, 78, 209, 77, 313, 144, 233, 359, 5, + 193, 194, 200, 233, 117, 79, 116, 117, 78, 116, + 80, 36, 81, 43, 36, 192, 82, 214, 214, 233, + 233, 117, 117, 84, 116, 10, 10, 10, 144, 36, + 265, 43, 89, 90, 85, 387, 87, 288, 12, 13, + 14, 15, 16, 17, 137, 158, 10, 423, 424, 395, + 159, 161, 195, 196, 222, 10, 117, 12, 13, 14, + 15, 16, 17, 272, 56, 57, 58, 59, 60, 12, + 12, 200, 200, 222, 222, 200, 200, 200, 200, 200, + 198, 122, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 98, 43, 199, 200, 438, 203, 204, + 122, 122, 219, 275, 281, 193, 194, 446, 141, 282, + 448, 284, 285, 297, 450, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 143, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 303, 304, 192, + 307, 310, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 318, 319, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 339, 345, 346, 347, 349, 122, + 122, 122, 122, 122, 122, 122, 122, 122, 160, 361, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 135, 375, 376, 135, 377, 384, 159, 12, 13, - 14, 15, 16, 17, 378, 213, 142, 142, 135, 135, - 379, 135, 389, 135, 270, 56, 57, 58, 59, 60, - 394, 395, 397, 401, 213, 402, 412, 183, 181, 191, - 192, 415, 215, 215, 143, 409, 215, 215, 215, 215, - 215, 215, 215, 135, 417, 418, 419, 426, 428, 429, - 190, 434, 437, 215, 215, 215, 215, 215, 215, 440, - 441, 445, 447, 449, 43, 22, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 135, 12, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 215, 215, - 20, 48, 112, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 230, 134, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 165, 143, 143, 143, 215, - 215, 12, 13, 14, 15, 16, 17, 167, 5, 207, - 207, 168, 232, 207, 207, 207, 207, 207, 207, 207, - 191, 192, 151, 146, 152, 116, 116, 58, 64, 60, - 207, 207, 207, 207, 207, 207, 208, 208, 116, 112, - 208, 208, 208, 208, 208, 208, 208, 92, 94, 96, - 24, 205, 6, 357, 272, 96, 98, 208, 208, 208, - 208, 208, 208, 206, 206, 207, 207, 206, 206, 206, - 206, 206, 206, 206, 2, 271, 49, 48, 95, 366, - 360, 435, 414, 131, 206, 206, 206, 206, 206, 206, - 385, 268, 208, 208, 303, 31, 207, 207, 289, 0, - 0, 0, 0, 0, 393, 146, 0, 209, 209, 0, - 0, 209, 209, 209, 209, 209, 209, 209, 0, 206, - 206, 0, 0, 208, 208, 0, 0, 0, 209, 209, - 209, 209, 209, 209, 210, 210, 0, 0, 210, 210, - 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, - 206, 206, 0, 0, 0, 210, 210, 210, 210, 210, - 210, 135, 444, 209, 209, 446, 0, 0, 0, 448, - 0, 0, 0, 0, 0, 205, 205, 0, 0, 205, - 205, 205, 205, 205, 205, 205, 0, 215, 0, 0, - 210, 210, 0, 0, 209, 209, 205, 205, 205, 205, - 205, 205, 0, 0, 0, 0, 215, 0, 0, 0, + 122, 135, 364, 365, 135, 372, 373, 160, 375, 376, + 377, 378, 379, 380, 381, 214, 143, 143, 135, 135, + 391, 135, 386, 135, 399, 396, 397, 403, 404, 411, + 414, 419, 420, 417, 214, 421, 428, 185, 183, 193, + 194, 430, 216, 216, 144, 431, 216, 216, 216, 216, + 216, 216, 216, 135, 5, 5, 5, 5, 5, 5, + 192, 436, 439, 216, 216, 216, 216, 216, 216, 442, + 443, 447, 449, 451, 5, 5, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 135, 12, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 216, 216, + 43, 22, 20, 214, 214, 214, 214, 214, 214, 214, + 214, 214, 48, 231, 214, 214, 214, 214, 214, 214, + 214, 214, 214, 214, 214, 112, 144, 144, 144, 216, + 216, 166, 168, 169, 233, 152, 116, 153, 18, 208, + 208, 116, 58, 208, 208, 208, 208, 208, 208, 208, + 193, 194, 64, 60, 116, 92, 112, 94, 96, 24, + 208, 208, 208, 208, 208, 208, 209, 209, 207, 96, + 209, 209, 209, 209, 209, 209, 209, 274, 49, 48, + 273, 95, 6, 368, 362, 437, 305, 209, 209, 209, + 209, 209, 209, 207, 207, 208, 208, 207, 207, 207, + 207, 207, 207, 207, 2, 416, 132, 270, 31, 291, + 0, 0, 0, 0, 207, 207, 207, 207, 207, 207, + 0, 0, 209, 209, 0, 0, 208, 208, 136, 0, + 0, 39, 0, 0, 0, 0, 0, 210, 210, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 0, 207, + 207, 0, 374, 209, 209, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 211, 211, 0, 0, 211, 211, + 211, 211, 211, 211, 211, 0, 0, 0, 0, 0, + 207, 207, 0, 0, 0, 211, 211, 211, 211, 211, + 211, 135, 0, 210, 210, 0, 0, 409, 0, 0, + 413, 0, 0, 0, 0, 206, 206, 0, 0, 206, + 206, 206, 206, 206, 206, 206, 0, 216, 0, 432, + 211, 211, 0, 0, 210, 210, 206, 206, 206, 206, + 206, 206, 440, 0, 0, 0, 216, 0, 444, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 210, 210, 0, 0, 0, 0, 0, 0, 0, - 0, 205, 205, 0, 135, 135, 135, 135, 135, 0, + 0, 211, 211, 0, 0, 0, 0, 0, 0, 0, + 0, 206, 206, 0, 135, 135, 135, 135, 135, 0, 0, 0, 0, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 0, 5, 5, 5, 5, 5, 5, 0, - 0, 0, 205, 205, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 5, 215, 215, 215, 215, 215, - 215, 215, 215, 215, 207, 0, 215, 215, 215, 215, - 215, 215, 215, 215, 215, 215, 215, 6, 6, 6, - 6, 6, 6, 207, 0, 0, 0, 0, 0, 0, - 0, 208, 0, 0, 0, 0, 0, 6, 6, 2, - 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, - 208, 0, 0, 0, 0, 0, 0, 0, 206, 2, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 206, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 207, 207, 0, 0, 207, 207, 207, 207, - 207, 0, 209, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 0, 0, 0, 0, 0, 208, - 208, 209, 0, 208, 208, 208, 208, 208, 0, 210, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 0, 0, 0, 0, 0, 206, 206, 210, 0, - 206, 206, 206, 206, 206, 0, 0, 206, 206, 206, - 206, 206, 206, 206, 206, 206, 206, 206, 0, 0, + 135, 135, 0, 12, 13, 14, 15, 16, 17, 0, + 0, 0, 206, 206, 0, 0, 0, 0, 0, 55, + 56, 57, 58, 59, 60, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 208, 0, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 6, 6, 6, + 6, 6, 6, 208, 0, 0, 0, 0, 98, 61, + 134, 209, 0, 134, 0, 0, 0, 6, 6, 2, + 2, 2, 2, 2, 2, 0, 0, 134, 134, 0, + 209, 0, 0, 0, 0, 0, 0, 0, 207, 2, + 2, 0, 62, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 54, 0, 207, 0, 0, + 2, 0, 134, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 208, 208, 0, 0, 208, 208, 208, 208, + 208, 0, 210, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 134, 0, 0, 0, 0, 209, + 209, 210, 0, 209, 209, 209, 209, 209, 0, 211, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, + 209, 0, 0, 0, 0, 0, 207, 207, 211, 0, + 207, 207, 207, 207, 207, 0, 0, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 205, - 209, 209, 0, 0, 209, 209, 209, 209, 209, 0, - 0, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 0, 0, 0, 0, 0, 210, 210, 0, - 0, 210, 210, 210, 210, 210, 0, 0, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, + 210, 210, 0, 0, 210, 210, 210, 210, 210, 0, + 0, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 0, 0, 0, 0, 0, 211, 211, 0, + 0, 211, 211, 211, 211, 211, 0, 0, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 205, 205, - 0, 0, 205, 205, 205, 205, 205, 0, 0, 205, - 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, - 196, 196, 0, 0, 196, 196, 196, 196, 196, 196, - 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 196, 196, 196, 196, 196, 196, 197, 197, 0, - 0, 197, 197, 197, 197, 197, 197, 197, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 197, 197, - 197, 197, 197, 197, 198, 198, 196, 196, 198, 198, - 198, 198, 198, 198, 198, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 198, 198, 198, 198, 198, - 198, 0, 0, 197, 197, 0, 0, 196, 196, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 206, 206, + 0, 0, 206, 206, 206, 206, 206, 0, 0, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 197, 197, 0, 0, 197, 197, 197, 197, 197, 197, + 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 197, 197, 197, 197, 197, 197, 198, 198, 0, + 0, 198, 198, 198, 198, 198, 198, 198, 0, 0, + 134, 0, 0, 0, 0, 0, 0, 0, 198, 198, + 198, 198, 198, 198, 199, 199, 197, 197, 199, 199, + 199, 199, 199, 199, 199, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 199, 199, 199, 199, 199, + 199, 0, 0, 198, 198, 0, 0, 197, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 133, 0, 0, 133, 133, 0, 133, 0, 133, 133, 0, - 198, 198, 0, 0, 197, 197, 0, 0, 39, 133, - 133, 133, 133, 133, 133, 189, 177, 0, 0, 0, - 187, 185, 0, 186, 184, 188, 0, 0, 0, 0, - 0, 198, 198, 0, 0, 0, 0, 0, 180, 162, - 182, 174, 189, 177, 133, 133, 208, 187, 185, 0, - 186, 184, 188, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 180, 162, 182, 174, 0, - 0, 174, 176, 0, 174, 133, 133, 0, 0, 0, - 0, 0, 0, 0, 0, 189, 177, 0, 174, 174, - 187, 185, 0, 186, 184, 188, 0, 0, 175, 176, - 0, 175, 175, 0, 0, 0, 0, 0, 180, 162, - 182, 174, 189, 177, 0, 175, 175, 187, 185, 0, - 186, 184, 188, 174, 0, 0, 0, 0, 0, 175, - 0, 0, 0, 0, 0, 180, 162, 182, 174, 189, - 177, 0, 176, 0, 187, 185, 0, 186, 184, 188, - 175, 0, 0, 0, 0, 174, 147, 0, 0, 147, - 0, 0, 180, 162, 182, 174, 0, 0, 176, 176, - 0, 176, 175, 147, 147, 0, 55, 56, 57, 58, - 59, 60, 175, 0, 196, 176, 176, 0, 0, 0, - 0, 0, 0, 0, 0, 177, 176, 0, 177, 175, - 339, 0, 0, 0, 0, 0, 0, 0, 147, 0, - 0, 197, 177, 177, 0, 0, 61, 0, 0, 0, - 176, 0, 0, 0, 0, 178, 175, 340, 178, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, - 147, 0, 178, 178, 0, 0, 0, 177, 0, 62, - 0, 0, 176, 196, 196, 0, 0, 196, 196, 196, - 196, 196, 54, 133, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 196, 196, 0, 0, 178, 0, 177, - 197, 197, 133, 0, 197, 197, 197, 197, 197, 0, - 190, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 0, 0, 0, 0, 0, 198, 198, 178, - 0, 198, 198, 198, 198, 198, 0, 190, 198, 198, - 198, 198, 198, 198, 198, 198, 198, 198, 198, 0, + 199, 199, 0, 0, 198, 198, 0, 0, 0, 133, + 133, 133, 133, 133, 133, 191, 179, 0, 0, 0, + 189, 187, 0, 188, 186, 190, 0, 0, 0, 0, + 0, 199, 199, 0, 0, 0, 0, 0, 182, 164, + 184, 176, 191, 179, 133, 133, 210, 189, 187, 0, + 188, 186, 190, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 182, 164, 184, 176, 0, + 0, 175, 178, 0, 175, 133, 133, 0, 0, 0, + 0, 0, 0, 0, 0, 191, 179, 0, 175, 175, + 189, 187, 0, 188, 186, 190, 0, 0, 176, 178, + 0, 176, 177, 0, 0, 0, 0, 0, 182, 164, + 184, 176, 191, 179, 0, 176, 176, 189, 187, 0, + 188, 186, 190, 175, 0, 0, 0, 0, 0, 177, + 0, 0, 0, 0, 0, 182, 164, 184, 176, 191, + 179, 0, 178, 0, 189, 187, 0, 188, 186, 190, + 176, 0, 0, 0, 0, 175, 136, 0, 0, 136, + 0, 0, 182, 164, 184, 176, 0, 0, 177, 178, + 0, 177, 177, 136, 136, 0, 0, 0, 0, 0, + 0, 0, 176, 0, 197, 177, 177, 0, 0, 0, + 0, 0, 0, 0, 0, 178, 178, 0, 178, 177, + 341, 0, 0, 0, 0, 0, 0, 0, 136, 0, + 0, 198, 178, 178, 0, 0, 0, 0, 0, 0, + 177, 0, 0, 0, 0, 179, 177, 342, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 199, 0, + 136, 0, 179, 179, 0, 0, 0, 178, 0, 0, + 0, 0, 177, 197, 197, 0, 0, 197, 197, 197, + 197, 197, 0, 133, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 0, 0, 179, 0, 178, + 198, 198, 133, 0, 198, 198, 198, 198, 198, 0, + 192, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 0, 0, 0, 0, 0, 199, 199, 179, + 0, 199, 199, 199, 199, 199, 0, 192, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 133, 0, 0, 133, 133, 133, 133, 133, - 190, 174, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 0, 0, 0, 0, 0, 183, 181, - 191, 192, 163, 164, 165, 166, 168, 190, 175, 178, - 179, 195, 160, 161, 167, 172, 171, 173, 169, 170, - 0, 0, 0, 0, 0, 183, 181, 191, 192, 163, - 164, 165, 166, 168, 190, 0, 178, 179, 0, 160, - 161, 167, 172, 171, 173, 169, 170, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 174, 174, 174, 147, 0, 183, 181, - 191, 192, 163, 164, 165, 166, 168, 0, 176, 178, - 179, 209, 160, 161, 167, 172, 171, 173, 169, 170, - 175, 175, 175, 0, 0, 183, 181, 191, 192, 163, - 164, 165, 166, 168, 0, 177, 178, 179, 0, 160, - 161, 167, 172, 171, 173, 169, 170, 0, 0, 0, - 0, 0, 183, 181, 191, 192, 163, 164, 165, 166, - 168, 0, 0, 178, 179, 178, 160, 161, 167, 172, - 171, 173, 169, 170, 189, 177, 0, 0, 147, 187, - 185, 0, 186, 184, 188, 0, 0, 0, 0, 0, - 176, 176, 176, 0, 0, 0, 358, 180, 162, 182, - 174, 189, 177, 0, 0, 0, 187, 185, 0, 186, - 184, 188, 0, 0, 0, 0, 0, 177, 177, 177, - 0, 0, 0, 386, 180, 162, 182, 174, 189, 177, - 0, 176, 396, 187, 185, 0, 186, 184, 188, 0, - 0, 0, 0, 0, 0, 0, 0, 178, 178, 178, - 0, 180, 162, 182, 174, 0, 0, 0, 176, 0, - 0, 175, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 189, 177, 0, 0, 399, 187, 185, 0, 186, - 184, 188, 0, 0, 0, 176, 0, 0, 175, 0, - 0, 0, 0, 0, 180, 162, 182, 174, 189, 177, - 0, 0, 400, 187, 185, 0, 186, 184, 188, 0, - 0, 0, 0, 0, 0, 175, 0, 0, 0, 0, - 0, 180, 162, 182, 174, 189, 177, 0, 176, 0, - 187, 185, 0, 186, 184, 188, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 180, 162, - 182, 174, 0, 0, 0, 176, 0, 0, 175, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 189, 177, - 0, 0, 416, 187, 185, 0, 186, 184, 188, 0, - 0, 180, 176, 0, 180, 175, 0, 0, 0, 0, - 0, 180, 162, 182, 174, 189, 177, 0, 180, 180, - 187, 185, 0, 186, 184, 188, 0, 0, 0, 0, - 0, 0, 175, 0, 0, 0, 443, 0, 180, 162, - 182, 174, 159, 159, 0, 176, 0, 159, 159, 0, - 159, 159, 159, 180, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 159, 159, 159, 159, 190, - 179, 0, 176, 179, 0, 175, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 180, 0, 179, 179, 0, - 0, 0, 0, 0, 0, 0, 190, 203, 0, 159, - 203, 0, 175, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 203, 203, 0, 0, 0, 0, - 0, 0, 179, 190, 0, 0, 0, 0, 0, 159, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, - 0, 0, 0, 0, 179, 0, 0, 183, 181, 191, - 192, 163, 164, 165, 166, 168, 190, 0, 178, 179, - 0, 160, 161, 167, 172, 171, 173, 169, 170, 0, - 0, 203, 0, 0, 183, 181, 191, 192, 163, 164, - 165, 166, 168, 190, 0, 178, 179, 0, 160, 161, - 167, 172, 171, 173, 169, 170, 0, 0, 0, 0, - 0, 183, 181, 191, 192, 163, 164, 165, 166, 168, - 190, 0, 178, 179, 0, 160, 161, 167, 172, 171, - 173, 169, 170, 0, 0, 0, 0, 0, 0, 398, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 183, 181, 191, 192, 163, 164, - 165, 166, 168, 190, 0, 178, 179, 0, 160, 161, - 167, 172, 171, 173, 169, 170, 0, 0, 0, 0, - 0, 183, 181, 191, 192, 163, 164, 165, 166, 168, - 190, 180, 178, 179, 0, 160, 161, 167, 172, 171, - 173, 169, 170, 0, 0, 0, 0, 0, 183, 181, - 191, 192, 163, 164, 165, 166, 168, 159, 0, 178, - 179, 0, 160, 161, 167, 172, 171, 173, 169, 170, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 175, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 0, 0, 0, 0, 0, 185, 183, + 193, 194, 165, 166, 167, 168, 170, 192, 176, 180, + 181, 197, 162, 163, 169, 174, 173, 175, 171, 172, + 0, 0, 0, 0, 0, 185, 183, 193, 194, 165, + 166, 167, 168, 170, 192, 0, 180, 181, 0, 162, + 163, 169, 174, 173, 175, 171, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 183, 181, 191, 192, 163, 164, 165, 166, 168, - 179, 0, 178, 179, 0, 160, 161, 167, 172, 171, - 173, 169, 170, 180, 180, 180, 0, 0, 183, 181, - 191, 192, 163, 164, 165, 166, 168, 203, 0, 178, - 179, 0, 160, 161, 167, 172, 171, 173, 169, 170, - 0, 0, 0, 0, 0, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 0, 12, 159, 159, 0, 159, - 159, 159, 159, 159, 159, 159, 159, 189, 177, 0, - 0, 0, 187, 185, 0, 186, 184, 188, 0, 0, - 0, 0, 179, 179, 179, 0, 0, 0, 0, 0, - 180, 162, 182, 174, 189, 177, 0, 0, 0, 187, - 185, 0, 186, 184, 188, 0, 0, 0, 0, 203, - 203, 203, 0, 0, 0, 0, 0, 180, 162, 182, - 174, 189, 177, 0, 176, 0, 187, 185, 0, 186, - 184, 188, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 180, 162, 182, 174, 0, 0, - 194, 176, 0, 194, 175, 194, 194, 194, 194, 0, + 0, 0, 0, 175, 175, 175, 136, 0, 185, 183, + 193, 194, 165, 166, 167, 168, 170, 0, 177, 180, + 181, 211, 162, 163, 169, 174, 173, 175, 171, 172, + 176, 176, 176, 0, 0, 185, 183, 193, 194, 165, + 166, 167, 168, 170, 0, 178, 180, 181, 0, 162, + 163, 169, 174, 173, 175, 171, 172, 0, 0, 0, + 0, 0, 185, 183, 193, 194, 165, 166, 167, 168, + 170, 0, 0, 180, 181, 179, 162, 163, 169, 174, + 173, 175, 171, 172, 191, 179, 0, 0, 136, 189, + 187, 0, 188, 186, 190, 0, 0, 0, 0, 0, + 177, 177, 177, 0, 0, 0, 360, 182, 164, 184, + 176, 191, 179, 0, 0, 0, 189, 187, 0, 188, + 186, 190, 0, 0, 0, 0, 0, 178, 178, 178, + 0, 0, 0, 388, 182, 164, 184, 176, 191, 179, + 0, 178, 398, 189, 187, 0, 188, 186, 190, 0, + 0, 0, 0, 0, 0, 0, 0, 179, 179, 179, + 0, 182, 164, 184, 176, 0, 0, 0, 178, 0, + 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 191, 179, 0, 0, 401, 189, 187, 0, 188, + 186, 190, 0, 0, 0, 178, 0, 0, 177, 0, + 0, 0, 0, 0, 182, 164, 184, 176, 191, 179, + 0, 0, 402, 189, 187, 0, 188, 186, 190, 0, + 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, + 0, 182, 164, 184, 176, 191, 179, 0, 178, 0, + 189, 187, 0, 188, 186, 190, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 182, 164, + 184, 176, 0, 0, 0, 178, 0, 0, 177, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 191, 179, + 0, 0, 418, 189, 187, 0, 188, 186, 190, 0, + 0, 181, 178, 0, 181, 177, 0, 0, 0, 0, + 0, 182, 164, 184, 176, 191, 179, 0, 181, 181, + 189, 187, 0, 188, 186, 190, 0, 0, 0, 0, + 0, 0, 177, 0, 0, 0, 445, 0, 182, 164, + 184, 176, 160, 160, 0, 178, 0, 160, 160, 0, + 160, 160, 160, 181, 0, 0, 0, 0, 0, 147, + 0, 0, 147, 0, 0, 160, 160, 160, 160, 192, + 180, 0, 178, 180, 0, 177, 147, 147, 0, 0, + 0, 0, 0, 0, 0, 181, 148, 180, 180, 148, + 0, 0, 0, 0, 0, 0, 192, 204, 0, 160, + 204, 0, 177, 148, 148, 0, 0, 0, 0, 0, + 0, 147, 0, 0, 204, 204, 0, 0, 0, 0, + 0, 0, 180, 192, 0, 0, 0, 0, 0, 160, + 0, 0, 0, 0, 0, 0, 0, 0, 148, 0, + 0, 0, 0, 147, 0, 0, 0, 0, 0, 204, + 0, 0, 0, 0, 180, 0, 0, 185, 183, 193, + 194, 165, 166, 167, 168, 170, 192, 0, 180, 181, + 148, 162, 163, 169, 174, 173, 175, 171, 172, 0, + 0, 204, 0, 0, 185, 183, 193, 194, 165, 166, + 167, 168, 170, 192, 0, 180, 181, 0, 162, 163, + 169, 174, 173, 175, 171, 172, 0, 0, 0, 0, + 0, 185, 183, 193, 194, 165, 166, 167, 168, 170, + 192, 0, 180, 181, 0, 162, 163, 169, 174, 173, + 175, 171, 172, 0, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 194, 194, 194, 194, 194, 194, 0, 195, 176, 0, - 195, 175, 195, 195, 195, 195, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 195, 195, 195, - 195, 195, 195, 0, 199, 194, 194, 199, 175, 0, - 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 199, 199, 199, 199, 199, 199, - 0, 0, 195, 195, 0, 0, 194, 194, 0, 0, - 0, 0, 0, 0, 0, 186, 0, 0, 186, 0, - 0, 186, 0, 0, 0, 0, 0, 0, 0, 199, - 199, 0, 0, 195, 195, 186, 186, 0, 186, 0, - 186, 0, 188, 0, 0, 188, 0, 0, 188, 0, + 0, 0, 0, 0, 185, 183, 193, 194, 165, 166, + 167, 168, 170, 192, 0, 180, 181, 0, 162, 163, + 169, 174, 173, 175, 171, 172, 0, 0, 0, 0, + 0, 185, 183, 193, 194, 165, 166, 167, 168, 170, + 192, 181, 180, 181, 0, 162, 163, 169, 174, 173, + 175, 171, 172, 0, 0, 0, 0, 0, 185, 183, + 193, 194, 165, 166, 167, 168, 170, 160, 0, 180, + 181, 0, 162, 163, 169, 174, 173, 175, 171, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 199, 199, 188, 188, 0, 188, 187, 188, 0, 187, - 186, 186, 187, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 187, 187, 0, 187, - 0, 187, 0, 189, 0, 0, 189, 188, 188, 189, - 0, 186, 186, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 190, 189, 189, 0, 189, 0, 189, 0, - 0, 187, 187, 0, 0, 0, 0, 0, 188, 188, - 0, 0, 0, 0, 0, 0, 0, 201, 0, 190, - 201, 0, 0, 201, 0, 0, 0, 0, 189, 189, - 0, 0, 187, 187, 0, 0, 0, 201, 201, 0, - 201, 0, 201, 0, 0, 0, 190, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, - 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 201, 201, 0, 0, 0, 0, 0, 0, - 183, 181, 191, 192, 163, 164, 165, 166, 168, 0, - 0, 178, 179, 194, 160, 161, 167, 172, 171, 173, - 169, 170, 0, 201, 201, 0, 0, 183, 181, 191, - 192, 163, 164, 165, 166, 168, 0, 0, 178, 179, - 195, 0, 161, 167, 172, 171, 173, 169, 170, 0, - 0, 0, 0, 0, 183, 181, 191, 192, 163, 164, - 165, 166, 168, 0, 0, 178, 179, 199, 0, 0, - 167, 172, 171, 173, 169, 170, 0, 0, 0, 0, - 0, 0, 194, 194, 0, 0, 194, 194, 194, 194, - 194, 0, 0, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 0, 0, 0, 0, 186, 195, - 195, 0, 0, 195, 195, 195, 195, 195, 0, 0, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 0, 0, 0, 0, 188, 199, 199, 0, 0, - 199, 199, 199, 199, 199, 0, 0, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 0, 187, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 186, 186, 186, 186, 186, 189, 0, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 188, 188, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, + 0, 185, 183, 193, 194, 165, 166, 167, 168, 170, + 180, 0, 180, 181, 0, 162, 163, 169, 174, 173, + 175, 171, 172, 181, 181, 181, 148, 0, 185, 183, + 193, 194, 165, 166, 167, 168, 170, 204, 0, 180, + 181, 0, 162, 163, 169, 174, 173, 175, 171, 172, + 0, 0, 283, 0, 0, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 0, 12, 160, 160, 0, 160, + 160, 160, 160, 160, 160, 160, 160, 191, 179, 0, + 0, 147, 189, 187, 0, 188, 186, 190, 0, 0, + 0, 0, 180, 180, 180, 0, 0, 0, 0, 0, + 182, 164, 184, 176, 191, 179, 0, 0, 148, 189, + 187, 0, 188, 186, 190, 301, 302, 0, 0, 204, + 204, 204, 0, 0, 0, 0, 0, 182, 164, 184, + 176, 191, 179, 0, 178, 0, 189, 187, 0, 188, + 186, 190, 0, 0, 343, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 182, 164, 184, 176, 0, 0, + 195, 178, 0, 195, 177, 195, 195, 195, 195, 0, + 0, 0, 0, 0, 363, 0, 0, 0, 0, 0, + 195, 195, 195, 195, 195, 195, 0, 196, 178, 0, + 196, 177, 196, 196, 196, 196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 389, 196, 196, 196, + 196, 196, 196, 0, 187, 195, 195, 187, 177, 0, + 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 408, 0, 0, 187, 187, 0, 187, 189, 187, + 0, 189, 196, 196, 189, 0, 195, 195, 0, 0, + 0, 429, 0, 0, 0, 0, 0, 0, 189, 189, + 0, 189, 205, 189, 0, 205, 0, 0, 0, 187, + 187, 0, 0, 196, 196, 0, 0, 0, 0, 205, + 205, 0, 188, 0, 0, 188, 0, 0, 188, 0, + 0, 0, 0, 189, 189, 0, 0, 0, 0, 0, + 187, 187, 188, 188, 0, 188, 190, 188, 0, 190, + 0, 0, 190, 0, 205, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 189, 189, 190, 190, 0, 190, + 202, 190, 0, 202, 0, 0, 202, 188, 188, 0, + 0, 0, 0, 0, 0, 0, 205, 0, 0, 0, + 202, 202, 192, 202, 0, 202, 0, 0, 0, 0, + 0, 190, 190, 0, 0, 0, 191, 179, 188, 188, + 0, 189, 187, 0, 188, 186, 190, 191, 0, 192, + 191, 0, 0, 191, 0, 202, 202, 0, 0, 182, + 0, 184, 190, 190, 0, 0, 0, 191, 191, 0, + 191, 0, 191, 0, 0, 0, 192, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 202, 202, 0, 0, + 0, 0, 0, 178, 0, 0, 0, 0, 0, 0, + 0, 0, 191, 191, 0, 0, 0, 0, 0, 0, + 185, 183, 193, 194, 165, 166, 167, 168, 170, 0, + 0, 180, 181, 195, 162, 163, 169, 174, 173, 175, + 171, 172, 0, 191, 191, 0, 0, 185, 183, 193, + 194, 165, 166, 167, 168, 170, 0, 0, 180, 181, + 196, 0, 163, 169, 174, 173, 175, 171, 172, 0, + 0, 0, 0, 0, 185, 183, 193, 194, 165, 166, + 167, 168, 170, 0, 0, 180, 181, 187, 0, 0, + 169, 174, 173, 175, 171, 172, 0, 0, 0, 0, + 0, 0, 195, 195, 0, 0, 195, 195, 195, 195, + 195, 189, 0, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 0, 0, 0, 0, 0, 196, + 196, 0, 205, 196, 196, 196, 196, 196, 0, 0, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 0, 0, 0, 0, 188, 0, 0, 0, 0, + 187, 187, 187, 187, 187, 0, 0, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 0, 190, + 0, 0, 0, 0, 189, 189, 189, 189, 189, 0, + 0, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 191, 202, 0, 0, 0, 189, 187, 0, + 188, 186, 190, 0, 205, 205, 205, 0, 0, 0, + 0, 192, 0, 0, 0, 182, 0, 184, 188, 188, 188, 188, 188, 0, 0, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 0, 0, 0, 0, - 201, 0, 187, 187, 187, 187, 187, 0, 0, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, - 189, 189, 189, 189, 0, 0, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 190, 0, 0, - 190, 0, 0, 190, 0, 0, 0, 0, 0, 0, - 0, 204, 0, 0, 204, 0, 0, 190, 190, 0, - 190, 0, 190, 201, 201, 201, 201, 201, 204, 204, - 0, 0, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 191, 0, 0, 191, 0, 0, 191, 0, 0, - 0, 0, 190, 190, 0, 181, 0, 0, 181, 0, - 0, 191, 191, 204, 191, 0, 191, 0, 202, 0, - 0, 202, 181, 181, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 190, 202, 202, 0, 202, 0, - 202, 200, 0, 0, 200, 204, 191, 191, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 181, 200, 200, - 0, 200, 141, 200, 0, 141, 0, 0, 0, 0, - 202, 202, 0, 0, 0, 0, 0, 191, 191, 141, - 141, 0, 141, 0, 141, 0, 0, 0, 0, 181, - 189, 177, 0, 200, 0, 187, 185, 0, 186, 184, - 188, 202, 202, 0, 0, 0, 0, 0, 0, 0, - 0, 189, 177, 180, 141, 182, 187, 185, 0, 186, - 184, 188, 0, 0, 200, 200, 0, 0, 0, 0, - 0, 0, 0, 0, 180, 189, 182, 0, 0, 0, - 187, 185, 0, 186, 184, 188, 141, 176, 0, 0, - 0, 0, 0, 182, 0, 0, 182, 0, 180, 0, - 182, 183, 0, 0, 183, 0, 0, 0, 0, 184, - 182, 182, 184, 185, 0, 0, 185, 175, 183, 183, - 192, 0, 0, 192, 0, 0, 184, 184, 0, 193, - 185, 185, 193, 0, 0, 0, 0, 192, 192, 0, - 0, 0, 0, 0, 0, 182, 193, 193, 0, 0, - 0, 0, 0, 183, 0, 0, 0, 109, 0, 0, - 0, 184, 0, 0, 105, 185, 0, 107, 0, 108, - 0, 0, 192, 0, 0, 0, 0, 182, 0, 0, - 190, 193, 129, 0, 0, 183, 0, 0, 115, 0, - 0, 204, 0, 184, 0, 0, 0, 185, 0, 0, - 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, - 0, 0, 0, 193, 0, 0, 39, 0, 0, 0, - 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 181, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 202, 0, - 110, 0, 0, 190, 190, 190, 190, 190, 0, 0, - 0, 0, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 200, 0, 204, 204, 204, 0, 0, 0, 0, + 191, 0, 190, 190, 190, 190, 190, 0, 0, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 0, 0, 0, 0, 0, 0, 202, 202, 202, 202, + 202, 0, 0, 0, 0, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 192, 0, 0, 192, 0, 0, + 192, 0, 0, 0, 0, 0, 0, 0, 0, 185, + 183, 193, 194, 0, 192, 192, 0, 192, 0, 192, + 180, 181, 0, 191, 191, 191, 191, 191, 0, 0, + 0, 0, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 203, 0, 0, 203, 0, 0, 0, 0, 192, + 192, 0, 0, 0, 0, 0, 0, 0, 203, 203, + 0, 203, 0, 203, 0, 201, 0, 0, 201, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 192, 192, 201, 201, 0, 201, 0, 201, 142, 0, + 0, 142, 0, 203, 203, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 142, 142, 0, 142, 182, + 142, 0, 182, 191, 179, 0, 0, 201, 189, 187, + 0, 188, 186, 190, 203, 203, 182, 182, 0, 0, + 0, 0, 0, 0, 0, 0, 182, 0, 184, 0, + 142, 0, 0, 0, 0, 0, 0, 0, 201, 201, + 191, 179, 0, 0, 0, 189, 187, 0, 188, 186, + 190, 182, 0, 0, 0, 0, 183, 0, 0, 183, + 178, 0, 142, 182, 0, 184, 0, 192, 0, 184, + 0, 0, 184, 183, 183, 185, 0, 0, 185, 0, + 0, 0, 0, 182, 0, 186, 184, 184, 186, 0, + 177, 0, 185, 185, 193, 0, 0, 193, 194, 0, + 0, 194, 186, 186, 0, 0, 0, 0, 183, 0, + 0, 193, 193, 0, 0, 194, 194, 0, 0, 0, + 0, 184, 0, 0, 0, 0, 0, 185, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, + 183, 0, 0, 0, 0, 0, 193, 0, 0, 0, + 194, 0, 0, 184, 0, 185, 183, 193, 194, 185, + 0, 0, 0, 0, 0, 0, 180, 181, 0, 186, + 0, 0, 0, 0, 0, 0, 0, 192, 193, 0, + 108, 0, 194, 0, 0, 0, 0, 108, 0, 0, + 108, 0, 108, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, + 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 203, 0, 0, 110, 0, 0, 0, 0, 0, + 0, 105, 0, 0, 108, 0, 109, 0, 0, 108, + 0, 0, 0, 0, 0, 201, 0, 0, 0, 130, + 192, 192, 192, 192, 192, 116, 0, 0, 0, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 142, 0, + 108, 0, 108, 108, 0, 0, 0, 0, 192, 0, + 0, 0, 0, 39, 0, 0, 0, 0, 0, 182, + 0, 0, 0, 0, 203, 203, 203, 203, 203, 0, + 0, 0, 0, 203, 203, 203, 203, 203, 203, 203, + 203, 203, 0, 0, 0, 192, 0, 111, 201, 201, + 201, 201, 201, 0, 0, 0, 0, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 0, 0, 0, 0, + 0, 142, 142, 142, 142, 142, 183, 0, 0, 0, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 184, + 0, 0, 0, 0, 0, 185, 185, 183, 193, 194, + 0, 182, 182, 182, 0, 186, 0, 180, 181, 0, + 0, 0, 0, 0, 193, 110, 0, 0, 194, 0, + 0, 0, 105, 0, 0, 108, 0, 109, 0, 0, + 0, 0, 0, 185, 183, 193, 194, 108, 108, 108, + 108, 108, 108, 239, 180, 181, 116, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 183, 183, + 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 184, 184, 184, 39, 0, 0, 185, 185, 185, + 0, 117, 56, 57, 58, 59, 60, 186, 186, 186, + 108, 0, 0, 0, 0, 0, 193, 193, 193, 0, + 194, 194, 194, 0, 0, 0, 0, 0, 111, 0, + 108, 108, 0, 0, 0, 104, 0, 108, 108, 108, + 108, 0, 104, 108, 0, 104, 0, 104, 0, 0, + 0, 0, 0, 0, 115, 0, 0, 108, 108, 108, + 108, 104, 108, 108, 108, 108, 104, 108, 108, 108, + 108, 108, 0, 0, 62, 118, 0, 0, 0, 110, + 0, 119, 0, 0, 0, 0, 105, 114, 0, 108, + 0, 109, 0, 0, 104, 0, 0, 0, 0, 108, + 108, 0, 0, 0, 0, 332, 0, 0, 106, 107, + 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 110, 0, 104, 0, 104, 104, 0, + 105, 0, 0, 108, 0, 109, 0, 0, 39, 0, + 0, 0, 0, 112, 113, 0, 0, 0, 0, 0, + 0, 241, 0, 0, 116, 0, 0, 0, 0, 0, + 0, 0, 117, 56, 57, 58, 59, 60, 0, 333, + 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 141, 0, 0, 0, 0, 191, 191, 191, - 191, 191, 0, 0, 0, 190, 191, 191, 191, 191, - 191, 191, 191, 191, 191, 0, 0, 181, 181, 181, - 0, 202, 202, 202, 202, 202, 190, 0, 0, 0, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 0, - 0, 0, 0, 0, 200, 200, 200, 200, 200, 0, - 190, 0, 0, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 0, 0, 0, 141, 141, 141, 141, 141, - 0, 0, 0, 0, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 182, 116, 56, 57, 58, 59, 60, - 0, 183, 0, 183, 181, 191, 192, 0, 0, 184, - 0, 0, 0, 185, 178, 179, 0, 0, 0, 0, - 192, 0, 0, 0, 183, 181, 191, 192, 0, 193, - 108, 0, 0, 0, 0, 178, 179, 108, 0, 0, - 108, 0, 108, 0, 0, 0, 0, 114, 183, 181, - 191, 192, 0, 0, 0, 0, 108, 0, 0, 178, - 179, 108, 0, 0, 0, 0, 0, 62, 117, 0, - 0, 0, 0, 0, 118, 182, 182, 182, 0, 0, - 113, 0, 0, 183, 183, 183, 0, 0, 0, 108, - 0, 184, 184, 184, 0, 185, 185, 185, 0, 0, - 0, 106, 192, 192, 192, 0, 0, 0, 0, 0, - 0, 193, 193, 193, 0, 0, 0, 104, 0, 0, - 108, 0, 108, 108, 104, 0, 0, 104, 0, 104, - 0, 0, 0, 0, 0, 0, 111, 112, 0, 0, - 0, 0, 0, 104, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 109, 0, 0, 0, 0, 0, 0, 105, 0, - 0, 107, 0, 108, 0, 0, 104, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, - 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 109, 0, 0, 104, 0, 104, - 104, 105, 0, 0, 107, 0, 108, 0, 0, 0, - 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 237, 0, 0, 115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 115, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 331, 0, 0, 110, 0, 0, 108, 108, 108, - 108, 108, 108, 39, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 62, 118, 0, 0, 0, + 110, 0, 119, 0, 0, 0, 0, 105, 114, 0, + 108, 0, 109, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 104, 104, 104, 104, 104, 104, 251, 106, + 107, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, + 0, 0, 0, 0, 112, 113, 117, 56, 57, 58, + 59, 60, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 109, 0, 0, 0, 0, 0, 110, 105, 0, - 0, 107, 0, 108, 0, 0, 0, 0, 0, 0, - 108, 0, 0, 0, 0, 0, 0, 0, 0, 239, - 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, - 108, 108, 0, 0, 0, 0, 0, 108, 108, 108, - 108, 0, 0, 108, 104, 104, 104, 104, 104, 104, - 39, 0, 0, 0, 0, 0, 0, 108, 108, 108, - 108, 0, 108, 108, 108, 0, 0, 108, 108, 108, - 108, 108, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 110, 0, 0, 0, 116, 56, - 57, 58, 59, 60, 0, 0, 0, 104, 0, 108, - 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 104, 104, 0, - 0, 0, 0, 0, 104, 104, 104, 104, 0, 0, - 104, 116, 56, 57, 58, 59, 60, 0, 0, 0, - 0, 114, 0, 0, 104, 104, 104, 104, 0, 104, - 104, 104, 0, 0, 104, 0, 104, 104, 104, 0, - 0, 62, 117, 0, 0, 0, 0, 0, 118, 319, - 320, 321, 0, 0, 113, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 114, 0, 104, 104, 322, 323, - 324, 325, 0, 326, 327, 106, 109, 0, 328, 0, - 329, 0, 0, 105, 62, 117, 107, 0, 108, 0, - 0, 118, 0, 0, 0, 0, 0, 113, 116, 56, - 57, 58, 59, 60, 249, 109, 0, 115, 0, 0, - 111, 112, 105, 0, 109, 107, 0, 108, 106, 0, - 0, 105, 0, 0, 107, 0, 108, 0, 0, 0, - 0, 109, 0, 251, 0, 39, 115, 0, 105, 0, - 0, 107, 0, 108, 0, 115, 0, 0, 0, 0, - 0, 114, 0, 111, 112, 0, 0, 0, 0, 0, - 0, 0, 115, 0, 39, 0, 0, 0, 0, 110, - 0, 62, 117, 39, 0, 0, 0, 0, 118, 0, - 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, - 39, 0, 0, 0, 0, 0, 0, 0, 110, 0, - 0, 0, 0, 0, 0, 106, 0, 110, 0, 0, + 0, 0, 0, 111, 0, 104, 104, 0, 0, 0, + 0, 0, 104, 104, 104, 104, 0, 0, 104, 0, + 117, 56, 57, 58, 59, 60, 0, 0, 0, 115, + 0, 0, 104, 104, 104, 104, 0, 104, 104, 104, + 104, 0, 104, 0, 104, 104, 104, 0, 0, 62, + 118, 0, 0, 0, 0, 0, 119, 321, 322, 323, + 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 115, 104, 104, 324, 325, 326, 327, + 0, 328, 329, 106, 107, 110, 330, 0, 331, 0, + 0, 0, 105, 62, 118, 108, 0, 109, 0, 0, + 119, 0, 110, 0, 0, 0, 114, 0, 0, 105, + 0, 0, 108, 253, 109, 0, 116, 0, 112, 113, + 0, 0, 0, 0, 0, 0, 0, 106, 107, 0, + 0, 0, 0, 116, 0, 0, 0, 117, 56, 57, + 58, 59, 60, 110, 39, 0, 0, 0, 0, 0, + 105, 0, 0, 108, 0, 109, 0, 0, 0, 0, + 0, 39, 112, 113, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 116, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, + 115, 0, 0, 0, 0, 111, 0, 0, 0, 0, + 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, + 62, 118, 0, 0, 0, 0, 0, 119, 0, 0, + 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, + 0, 0, 0, 0, 106, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 111, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, + 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 117, 56, 57, 58, 59, 60, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, + 56, 57, 58, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 116, 56, 57, 58, 59, 60, 0, + 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, + 144, 56, 57, 58, 59, 60, 0, 0, 0, 0, + 0, 0, 115, 0, 0, 62, 118, 0, 0, 0, + 0, 0, 119, 0, 0, 0, 0, 0, 114, 0, + 0, 0, 62, 118, 0, 0, 121, 0, 0, 119, + 131, 0, 0, 0, 0, 114, 0, 0, 0, 106, + 107, 0, 0, 115, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 0, 156, 157, 106, 107, 0, 0, + 0, 0, 0, 145, 118, 0, 0, 0, 0, 0, + 119, 0, 0, 0, 112, 113, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 112, 113, 0, 0, 0, 0, 106, 107, 0, + 0, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 240, 242, 243, 244, 245, 246, 248, 249, 250, 252, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 0, 112, 113, 0, 246, 268, 0, 269, 0, + 0, 0, 0, 276, 0, 0, 0, 277, 278, 0, + 280, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 116, 56, 57, 58, 59, 60, 0, 0, - 0, 116, 56, 57, 58, 59, 60, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 114, 0, 143, 56, - 57, 58, 59, 60, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 62, 117, 0, 0, - 0, 0, 0, 118, 0, 114, 0, 0, 0, 113, - 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 62, 117, 0, 0, 0, - 106, 114, 118, 0, 62, 117, 0, 0, 113, 0, - 0, 118, 0, 0, 0, 0, 0, 113, 0, 0, - 0, 144, 117, 120, 0, 0, 0, 130, 118, 106, - 0, 0, 0, 0, 113, 111, 112, 0, 106, 0, - 0, 145, 146, 147, 148, 149, 150, 151, 152, 0, - 154, 155, 0, 0, 0, 106, 0, 0, 0, 0, - 0, 0, 0, 0, 111, 112, 0, 0, 0, 0, - 0, 0, 0, 111, 112, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 295, 0, + 296, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 298, 0, 299, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 111, 112, 0, 0, 0, 0, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 238, 240, 241, 242, 243, - 244, 246, 247, 248, 250, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 0, 0, 0, 0, - 244, 266, 0, 267, 0, 0, 0, 0, 274, 0, - 0, 0, 275, 276, 0, 278, 0, 0, 0, 0, - 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 293, 0, 294, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 296, 0, 297, 0, 0, + 121, 121, 0, 0, 0, 246, 0, 0, 308, 309, + 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 120, 120, 0, 0, 0, - 244, 0, 0, 306, 307, 0, 0, 0, 0, 0, - 0, 310, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, + 0, 0, 0, 0, 0, 0, 0, 246, 0, 371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, - 0, 0, 244, 0, 369, 0, 0, 0, 0, 0, + 0, 121, 390, 0, 392, 0, 0, 393, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 120, 388, 0, 390, - 0, 0, 391, 392, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 121, 0, 410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 120, 0, 408, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 439, + 0, 0, 0, 441, ); protected static $yyCheck = array(33, - 41, 125, 36, 37, 123, 36, 37, 92, 41, 125, - 153, 44, 92, 47, 123, 92, 50, 37, 52, 50, - 54, 52, 42, 54, 37, 38, 260, 47, 92, 42, - 43, 91, 45, 46, 47, 312, 70, 260, 260, 70, - 47, 6, 76, 77, 44, 41, 320, 60, 44, 62, - 41, 85, 37, 38, 85, 40, 41, 42, 43, 44, - 45, 46, 47, 123, 92, 194, 300, 321, 59, 76, - 77, 300, 301, 58, 59, 60, 61, 62, 63, 37, - 38, 94, 59, 41, 42, 43, 44, 45, 46, 47, - 59, 35, 41, 93, 41, 44, 41, 44, 208, 44, + 41, 41, 36, 37, 44, 36, 37, 92, 92, 38, + 155, 6, 41, 47, 123, 44, 50, 92, 52, 50, + 54, 52, 44, 54, 35, 320, 59, 92, 125, 58, + 59, 60, 61, 62, 63, 125, 70, 91, 260, 70, + 37, 321, 76, 77, 260, 42, 43, 92, 45, 46, + 47, 85, 37, 38, 85, 40, 41, 42, 43, 44, + 45, 46, 47, 312, 93, 94, 210, 196, 47, 123, + 260, 93, 92, 58, 59, 60, 61, 62, 63, 37, + 38, 59, 92, 41, 42, 43, 44, 45, 46, 47, + 123, 41, 313, 35, 44, 124, 125, 76, 77, 59, 58, 59, 60, 61, 62, 63, 37, 38, 93, 94, - 41, 42, 43, 44, 45, 46, 47, 340, 340, 153, - 92, 40, 41, 5, 260, 402, 403, 58, 59, 60, + 41, 42, 43, 44, 45, 46, 47, 334, 340, 59, + 123, 155, 5, 340, 340, 346, 41, 58, 59, 60, 61, 62, 63, 91, 41, 93, 94, 44, 123, 124, - 125, 260, 334, 25, 300, 301, 123, 59, 340, 92, - 41, 58, 59, 44, 123, 284, 190, 39, 59, 190, - 91, 35, 93, 94, 37, 123, 124, 125, 59, 42, - 43, 334, 45, 46, 47, 260, 141, 340, 334, 216, - 260, 125, 292, 260, 340, 91, 93, 60, 64, 62, - 311, 301, 123, 124, 125, 93, 260, 261, 262, 263, - 264, 265, 311, 37, 38, 40, 41, 41, 42, 43, - 44, 45, 46, 47, 402, 403, 44, 346, 125, 40, - 363, 340, 310, 344, 58, 59, 60, 61, 62, 63, - 37, 38, 260, 311, 41, 42, 43, 44, 45, 46, - 47, 310, 279, 280, 41, 373, 374, 44, 333, 373, - 374, 58, 59, 60, 61, 62, 63, 373, 374, 93, - 94, 58, 59, 340, 298, 300, 301, 76, 77, 333, - 123, 308, 332, 61, 44, 37, 41, 61, 44, 44, - 42, 43, 346, 45, 46, 47, 93, 94, 260, 59, - 124, 125, 312, 59, 59, 44, 93, 40, 410, 312, - 351, 338, 41, 41, 41, 333, 44, 70, 44, 123, - 59, 345, 340, 41, 44, 40, 44, 124, 125, 260, - 40, 59, 85, 40, 410, 310, 311, 312, 125, 363, - 58, 59, 41, 370, 41, 44, 280, 281, 282, 283, - 284, 285, 44, 41, 44, 396, 331, 61, 399, 58, - 59, 260, 340, 41, 312, 340, 44, 61, 395, 40, - 340, 333, 300, 301, 40, 93, 40, 418, 340, 410, - 58, 59, 41, 331, 332, 58, 35, 410, 415, 44, - 431, 312, 402, 403, 93, 41, 437, 400, 401, 402, - 403, 335, 426, 40, 123, 426, 334, 125, 411, 412, - 331, 332, 340, 40, 93, 93, 280, 281, 282, 283, - 284, 285, 41, 41, 41, 400, 401, 402, 403, 404, + 125, 260, 25, 41, 59, 123, 44, 142, 300, 301, + 294, 58, 59, 402, 403, 91, 39, 286, 192, 303, + 91, 192, 93, 94, 37, 123, 124, 125, 64, 42, + 43, 334, 45, 46, 47, 260, 260, 340, 300, 301, + 93, 300, 334, 125, 44, 260, 93, 60, 340, 62, + 44, 44, 123, 124, 125, 260, 261, 262, 263, 264, + 265, 44, 311, 37, 38, 59, 59, 41, 42, 43, + 44, 45, 46, 47, 41, 260, 59, 44, 125, 348, + 365, 40, 41, 40, 58, 59, 60, 61, 62, 63, + 37, 38, 59, 310, 41, 42, 43, 44, 45, 46, + 47, 310, 41, 41, 41, 44, 44, 44, 333, 311, + 260, 58, 59, 60, 61, 62, 63, 260, 333, 93, + 94, 58, 59, 300, 301, 340, 300, 70, 333, 280, + 281, 282, 283, 284, 285, 37, 373, 374, 332, 123, + 42, 346, 85, 373, 374, 47, 93, 94, 333, 61, + 124, 125, 40, 41, 61, 340, 93, 334, 333, 35, + 402, 403, 331, 340, 41, 410, 41, 44, 40, 44, + 41, 41, 41, 347, 44, 312, 44, 124, 125, 300, + 301, 58, 59, 123, 59, 310, 311, 312, 125, 59, + 340, 365, 76, 77, 44, 370, 40, 340, 280, 281, + 282, 283, 284, 285, 260, 40, 331, 373, 374, 384, + 40, 410, 41, 44, 312, 340, 93, 280, 281, 282, + 283, 284, 285, 260, 261, 262, 263, 264, 265, 410, + 410, 400, 401, 331, 332, 404, 405, 406, 407, 408, + 41, 312, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 335, 428, 44, 61, 428, 260, 61, + 331, 332, 340, 40, 40, 402, 403, 442, 340, 40, + 445, 41, 44, 58, 449, 400, 401, 402, 403, 404, 405, 406, 407, 408, 331, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 125, 340, 312, - 44, 123, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 41, 125, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 58, 40, 125, 40, 40, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 312, 59, + 415, 416, 417, 418, 419, 420, 421, 41, 123, 312, + 40, 40, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 41, 41, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 93, 41, 340, 44, 123, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 312, 125, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 41, 59, 40, 44, 40, 59, 331, 280, 281, - 282, 283, 284, 285, 125, 312, 413, 414, 58, 59, - 41, 61, 361, 63, 260, 261, 262, 263, 264, 265, - 125, 59, 40, 125, 331, 344, 123, 400, 401, 402, + 421, 41, 41, 58, 44, 40, 40, 331, 40, 59, + 59, 40, 40, 125, 41, 312, 413, 414, 58, 59, + 361, 61, 59, 63, 40, 125, 59, 125, 344, 340, + 123, 413, 41, 59, 331, 371, 40, 400, 401, 402, 403, 59, 37, 38, 331, 340, 41, 42, 43, 44, - 45, 46, 47, 93, 413, 41, 371, 40, 59, 340, + 45, 46, 47, 93, 280, 281, 282, 283, 284, 285, 312, 125, 41, 58, 59, 60, 61, 62, 63, 58, - 340, 41, 123, 125, 93, 123, 400, 401, 402, 403, + 340, 41, 123, 125, 300, 301, 400, 401, 402, 403, 404, 405, 406, 407, 408, 125, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 93, 94, - 123, 41, 41, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 123, 331, 411, 412, 413, 414, 415, 416, + 93, 123, 123, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 41, 123, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 41, 413, 414, 415, 124, - 125, 280, 281, 282, 283, 284, 285, 41, 35, 37, - 38, 41, 340, 41, 42, 43, 44, 45, 46, 47, - 402, 403, 41, 331, 41, 58, 93, 41, 125, 41, - 58, 59, 60, 61, 62, 63, 37, 38, 59, 59, - 41, 42, 43, 44, 45, 46, 47, 41, 125, 125, - 7, 141, 35, 331, 199, 84, 335, 58, 59, 60, + 125, 41, 41, 41, 340, 41, 58, 41, 35, 37, + 38, 93, 41, 41, 42, 43, 44, 45, 46, 47, + 402, 403, 125, 41, 59, 41, 59, 125, 125, 7, + 58, 59, 60, 61, 62, 63, 37, 38, 142, 84, + 41, 42, 43, 44, 45, 46, 47, 201, 42, 41, + 200, 82, 35, 347, 337, 427, 285, 58, 59, 60, 61, 62, 63, 37, 38, 93, 94, 41, 42, 43, - 44, 45, 46, 47, 35, 198, 42, 41, 82, 345, - 335, 425, 405, 91, 58, 59, 60, 61, 62, 63, - 368, 197, 93, 94, 283, 23, 124, 125, 226, -1, - -1, -1, -1, -1, 382, 413, -1, 37, 38, -1, + 44, 45, 46, 47, 35, 407, 91, 199, 23, 228, + -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, + -1, -1, 93, 94, -1, -1, 124, 125, 125, -1, + -1, 92, -1, -1, -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, 46, 47, -1, 93, - 94, -1, -1, 124, 125, -1, -1, -1, 58, 59, + 94, -1, 353, 124, 125, -1, -1, -1, 58, 59, 60, 61, 62, 63, 37, 38, -1, -1, 41, 42, 43, 44, 45, 46, 47, -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, 58, 59, 60, 61, 62, - 63, 331, 440, 93, 94, 443, -1, -1, -1, 447, - -1, -1, -1, -1, -1, 37, 38, -1, -1, 41, - 42, 43, 44, 45, 46, 47, -1, 312, -1, -1, + 63, 331, -1, 93, 94, -1, -1, 398, -1, -1, + 401, -1, -1, -1, -1, 37, 38, -1, -1, 41, + 42, 43, 44, 45, 46, 47, -1, 312, -1, 420, 93, 94, -1, -1, 124, 125, 58, 59, 60, 61, - 62, 63, -1, -1, -1, -1, 331, -1, -1, -1, + 62, 63, 433, -1, -1, -1, 331, -1, 439, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, 404, 405, 406, 407, 408, -1, -1, -1, -1, 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, 280, 281, 282, 283, 284, 285, -1, - -1, -1, 124, 125, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 300, 301, 400, 401, 402, 403, 404, + -1, -1, 124, 125, -1, -1, -1, -1, -1, 260, + 261, 262, 263, 264, 265, 400, 401, 402, 403, 404, 405, 406, 407, 408, 312, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 280, 281, 282, - 283, 284, 285, 331, -1, -1, -1, -1, -1, -1, - -1, 312, -1, -1, -1, -1, -1, 300, 301, 280, - 281, 282, 283, 284, 285, -1, -1, -1, -1, -1, + 283, 284, 285, 331, -1, -1, -1, -1, 335, 300, + 41, 312, -1, 44, -1, -1, -1, 300, 301, 280, + 281, 282, 283, 284, 285, -1, -1, 58, 59, -1, 331, -1, -1, -1, -1, -1, -1, -1, 312, 300, - 301, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 331, -1, -1, - 321, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 301, -1, 333, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 346, -1, 331, -1, -1, + 321, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, 312, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, -1, -1, -1, -1, -1, 400, + 418, 419, 420, 421, 125, -1, -1, -1, -1, 400, 401, 331, -1, 404, 405, 406, 407, 408, -1, 312, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, -1, 400, 401, 331, -1, @@ -973,14 +973,14 @@ class Parser extends \text\parser\generic\AbstractParser { 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, 37, 38, -1, -1, 41, 42, 43, 44, 45, 46, 47, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, + 331, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, 37, 38, 93, 94, 41, 42, 43, 44, 45, 46, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, -1, -1, 93, 94, -1, -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, -1, 41, 42, -1, 44, -1, 46, 47, -1, - 93, 94, -1, -1, 124, 125, -1, -1, 92, 58, + 93, 94, -1, -1, 124, 125, -1, -1, -1, 58, 59, 60, 61, 62, 63, 37, 38, -1, -1, -1, 42, 43, -1, 45, 46, 47, -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, -1, -1, 60, 61, @@ -997,16 +997,16 @@ class Parser extends \text\parser\generic\AbstractParser { 38, -1, 94, -1, 42, 43, -1, 45, 46, 47, 93, -1, -1, -1, -1, 125, 41, -1, -1, 44, -1, -1, 60, 61, 62, 63, -1, -1, 41, 94, - -1, 44, 124, 58, 59, -1, 260, 261, 262, 263, - 264, 265, 125, -1, 331, 58, 59, -1, -1, -1, + -1, 44, 124, 58, 59, -1, -1, -1, -1, -1, + -1, -1, 125, -1, 331, 58, 59, -1, -1, -1, -1, -1, -1, -1, -1, 41, 94, -1, 44, 124, 125, -1, -1, -1, -1, -1, -1, -1, 93, -1, - -1, 331, 58, 59, -1, -1, 300, -1, -1, -1, + -1, 331, 58, 59, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, 41, 124, 125, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, 331, -1, - 125, -1, 58, 59, -1, -1, -1, 93, -1, 333, + 125, -1, 58, 59, -1, -1, -1, 93, -1, -1, -1, -1, 125, 400, 401, -1, -1, 404, 405, 406, - 407, 408, 346, 312, 411, 412, 413, 414, 415, 416, + 407, 408, -1, 312, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, 93, -1, 125, 400, 401, 331, -1, 404, 405, 406, 407, 408, -1, 312, 411, 412, 413, 414, 415, 416, 417, 418, 419, @@ -1058,19 +1058,19 @@ class Parser extends \text\parser\generic\AbstractParser { 42, 43, -1, 45, 46, 47, -1, -1, -1, -1, -1, -1, 124, -1, -1, -1, 58, -1, 60, 61, 62, 63, 37, 38, -1, 94, -1, 42, 43, -1, - 45, 46, 47, 93, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 60, 61, 62, 63, 312, - 41, -1, 94, 44, -1, 124, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 125, -1, 58, 59, -1, + 45, 46, 47, 93, -1, -1, -1, -1, -1, 41, + -1, -1, 44, -1, -1, 60, 61, 62, 63, 312, + 41, -1, 94, 44, -1, 124, 58, 59, -1, -1, + -1, -1, -1, -1, -1, 125, 41, 58, 59, 44, -1, -1, -1, -1, -1, -1, 312, 41, -1, 94, - 44, -1, 124, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 58, 59, -1, -1, -1, -1, + 44, -1, 124, 58, 59, -1, -1, -1, -1, -1, + -1, 93, -1, -1, 58, 59, -1, -1, -1, -1, -1, -1, 93, 312, -1, -1, -1, -1, -1, 124, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, + -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, + -1, -1, -1, 125, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, 125, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, 312, -1, 411, 412, - -1, 414, 415, 416, 417, 418, 419, 420, 421, -1, + 125, 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, 125, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, 312, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, @@ -1087,50 +1087,50 @@ class Parser extends \text\parser\generic\AbstractParser { 402, 403, 404, 405, 406, 407, 408, 312, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 331, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, 331, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 420, 421, 413, 414, 415, -1, -1, 400, 401, + 419, 420, 421, 413, 414, 415, 331, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, 331, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, - -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, + -1, -1, 218, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 37, 38, -1, - -1, -1, 42, 43, -1, 45, 46, 47, -1, -1, + -1, 413, 42, 43, -1, 45, 46, 47, -1, -1, -1, -1, 413, 414, 415, -1, -1, -1, -1, -1, - 60, 61, 62, 63, 37, 38, -1, -1, -1, 42, - 43, -1, 45, 46, 47, -1, -1, -1, -1, 413, + 60, 61, 62, 63, 37, 38, -1, -1, 413, 42, + 43, -1, 45, 46, 47, 281, 282, -1, -1, 413, 414, 415, -1, -1, -1, -1, -1, 60, 61, 62, 63, 37, 38, -1, 94, -1, 42, 43, -1, 45, - 46, 47, -1, -1, -1, -1, -1, -1, -1, -1, + 46, 47, -1, -1, 310, -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, 63, -1, -1, 38, 94, -1, 41, 124, 43, 44, 45, 46, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 340, -1, -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, -1, 38, 94, -1, 41, 124, 43, 44, 45, 46, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, + -1, -1, -1, -1, -1, -1, 372, 58, 59, 60, 61, 62, 63, -1, 38, 93, 94, 41, 124, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, - -1, -1, 93, 94, -1, -1, 124, 125, -1, -1, - -1, -1, -1, -1, -1, 38, -1, -1, 41, -1, - -1, 44, -1, -1, -1, -1, -1, -1, -1, 93, - 94, -1, -1, 124, 125, 58, 59, -1, 61, -1, - 63, -1, 38, -1, -1, 41, -1, -1, 44, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 397, -1, -1, 58, 59, -1, 61, 38, 63, + -1, 41, 93, 94, 44, -1, 124, 125, -1, -1, + -1, 417, -1, -1, -1, -1, -1, -1, 58, 59, + -1, 61, 41, 63, -1, 44, -1, -1, -1, 93, + 94, -1, -1, 124, 125, -1, -1, -1, -1, 58, + 59, -1, 38, -1, -1, 41, -1, -1, 44, -1, + -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, 124, 125, 58, 59, -1, 61, 38, 63, -1, 41, - 93, 94, 44, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 58, 59, -1, 61, - -1, 63, -1, 38, -1, -1, 41, 93, 94, 44, - -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 312, 58, 59, -1, 61, -1, 63, -1, - -1, 93, 94, -1, -1, -1, -1, -1, 124, 125, - -1, -1, -1, -1, -1, -1, -1, 38, -1, 312, - 41, -1, -1, 44, -1, -1, -1, -1, 93, 94, - -1, -1, 124, 125, -1, -1, -1, 58, 59, -1, + -1, -1, 44, -1, 93, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 124, 125, 58, 59, -1, 61, + 38, 63, -1, 41, -1, -1, 44, 93, 94, -1, + -1, -1, -1, -1, -1, -1, 125, -1, -1, -1, + 58, 59, 312, 61, -1, 63, -1, -1, -1, -1, + -1, 93, 94, -1, -1, -1, 37, 38, 124, 125, + -1, 42, 43, -1, 45, 46, 47, 38, -1, 312, + 41, -1, -1, 44, -1, 93, 94, -1, -1, 60, + -1, 62, 124, 125, -1, -1, -1, 58, 59, -1, 61, -1, 63, -1, -1, -1, 312, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, - 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 124, 125, -1, -1, + -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, 331, 414, 415, 416, 417, 418, 419, @@ -1141,195 +1141,190 @@ class Parser extends \text\parser\generic\AbstractParser { 406, 407, 408, -1, -1, 411, 412, 331, -1, -1, 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, -1, -1, -1, -1, 331, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, + 408, 331, -1, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, -1, -1, -1, -1, -1, 400, + 401, -1, 331, 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, -1, -1, -1, -1, 331, 400, 401, -1, -1, + 421, -1, -1, -1, -1, 331, -1, -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, 331, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 404, 405, 406, 407, 408, 331, -1, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 404, 405, + -1, -1, -1, -1, 404, 405, 406, 407, 408, -1, + -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 37, 331, -1, -1, -1, 42, 43, -1, + 45, 46, 47, -1, 413, 414, 415, -1, -1, -1, + -1, 312, -1, -1, -1, 60, -1, 62, 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, 331, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 404, - 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 38, -1, -1, - 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, - -1, 41, -1, -1, 44, -1, -1, 58, 59, -1, - 61, -1, 63, 404, 405, 406, 407, 408, 58, 59, - -1, -1, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 38, -1, -1, 41, -1, -1, 44, -1, -1, - -1, -1, 93, 94, -1, 41, -1, -1, 44, -1, - -1, 58, 59, 93, 61, -1, 63, -1, 41, -1, - -1, 44, 58, 59, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 124, 125, 58, 59, -1, 61, -1, - 63, 41, -1, -1, 44, 125, 93, 94, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 93, 58, 59, - -1, 61, 41, 63, -1, 44, -1, -1, -1, -1, - 93, 94, -1, -1, -1, -1, -1, 124, 125, 58, - 59, -1, 61, -1, 63, -1, -1, -1, -1, 125, - 37, 38, -1, 93, -1, 42, 43, -1, 45, 46, - 47, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, 37, 38, 60, 93, 62, 42, 43, -1, 45, - 46, 47, -1, -1, 124, 125, -1, -1, -1, -1, - -1, -1, -1, -1, 60, 37, 62, -1, -1, -1, - 42, 43, -1, 45, 46, 47, 125, 94, -1, -1, - -1, -1, -1, 41, -1, -1, 44, -1, 60, -1, - 62, 41, -1, -1, 44, -1, -1, -1, -1, 41, - 58, 59, 44, 41, -1, -1, 44, 124, 58, 59, - 41, -1, -1, 44, -1, -1, 58, 59, -1, 41, - 58, 59, 44, -1, -1, -1, -1, 58, 59, -1, - -1, -1, -1, -1, -1, 93, 58, 59, -1, -1, - -1, -1, -1, 93, -1, -1, -1, 33, -1, -1, - -1, 93, -1, -1, 40, 93, -1, 43, -1, 45, - -1, -1, 93, -1, -1, -1, -1, 125, -1, -1, - 331, 93, 58, -1, -1, 125, -1, -1, 64, -1, - -1, 331, -1, 125, -1, -1, -1, 125, -1, -1, - -1, -1, -1, -1, 125, -1, -1, -1, -1, -1, - -1, -1, -1, 125, -1, -1, 92, -1, -1, -1, - -1, -1, -1, -1, 331, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 331, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 331, -1, - 126, -1, -1, 404, 405, 406, 407, 408, -1, -1, + -1, -1, -1, -1, -1, -1, 404, 405, 406, 407, + 408, -1, -1, -1, -1, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 38, -1, -1, 41, -1, -1, + 44, -1, -1, -1, -1, -1, -1, -1, -1, 400, + 401, 402, 403, -1, 58, 59, -1, 61, -1, 63, + 411, 412, -1, 404, 405, 406, 407, 408, -1, -1, -1, -1, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 331, -1, 413, 414, 415, -1, -1, -1, -1, + 421, 41, -1, -1, 44, -1, -1, -1, -1, 93, + 94, -1, -1, -1, -1, -1, -1, -1, 58, 59, + -1, 61, -1, 63, -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 331, -1, -1, -1, -1, 404, 405, 406, - 407, 408, -1, -1, -1, 312, 413, 414, 415, 416, - 417, 418, 419, 420, 421, -1, -1, 413, 414, 415, - -1, 404, 405, 406, 407, 408, 312, -1, -1, -1, - 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, + 124, 125, 58, 59, -1, 61, -1, 63, 41, -1, + -1, 44, -1, 93, 94, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 58, 59, -1, 61, 41, + 63, -1, 44, 37, 38, -1, -1, 93, 42, 43, + -1, 45, 46, 47, 124, 125, 58, 59, -1, -1, + -1, -1, -1, -1, -1, -1, 60, -1, 62, -1, + 93, -1, -1, -1, -1, -1, -1, -1, 124, 125, + 37, 38, -1, -1, -1, 42, 43, -1, 45, 46, + 47, 93, -1, -1, -1, -1, 41, -1, -1, 44, + 94, -1, 125, 60, -1, 62, -1, 312, -1, 41, + -1, -1, 44, 58, 59, 41, -1, -1, 44, -1, + -1, -1, -1, 125, -1, 41, 58, 59, 44, -1, + 124, -1, 58, 59, 41, -1, -1, 44, 41, -1, + -1, 44, 58, 59, -1, -1, -1, -1, 93, -1, + -1, 58, 59, -1, -1, 58, 59, -1, -1, -1, + -1, 93, -1, -1, -1, -1, -1, 93, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, + 125, -1, -1, -1, -1, -1, 93, -1, -1, -1, + 93, -1, -1, 125, -1, 400, 401, 402, 403, 125, + -1, -1, -1, -1, -1, -1, 411, 412, -1, 125, + -1, -1, -1, -1, -1, -1, -1, 331, 125, -1, + 33, -1, 125, -1, -1, -1, -1, 40, -1, -1, + 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, + -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 331, -1, -1, 33, -1, -1, -1, -1, -1, + -1, 40, -1, -1, 43, -1, 45, -1, -1, 92, + -1, -1, -1, -1, -1, 331, -1, -1, -1, 58, + 404, 405, 406, 407, 408, 64, -1, -1, -1, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 331, -1, + 123, -1, 125, 126, -1, -1, -1, -1, 312, -1, + -1, -1, -1, 92, -1, -1, -1, -1, -1, 331, -1, -1, -1, -1, 404, 405, 406, 407, 408, -1, - 312, -1, -1, 413, 414, 415, 416, 417, 418, 419, - 420, 421, -1, -1, -1, 404, 405, 406, 407, 408, - -1, -1, -1, -1, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 331, 260, 261, 262, 263, 264, 265, - -1, 331, -1, 400, 401, 402, 403, -1, -1, 331, - -1, -1, -1, 331, 411, 412, -1, -1, -1, -1, - 331, -1, -1, -1, 400, 401, 402, 403, -1, 331, - 33, -1, -1, -1, -1, 411, 412, 40, -1, -1, - 43, -1, 45, -1, -1, -1, -1, 313, 400, 401, - 402, 403, -1, -1, -1, -1, 59, -1, -1, 411, - 412, 64, -1, -1, -1, -1, -1, 333, 334, -1, - -1, -1, -1, -1, 340, 413, 414, 415, -1, -1, - 346, -1, -1, 413, 414, 415, -1, -1, -1, 92, - -1, 413, 414, 415, -1, 413, 414, 415, -1, -1, - -1, 367, 413, 414, 415, -1, -1, -1, -1, -1, - -1, 413, 414, 415, -1, -1, -1, 33, -1, -1, - 123, -1, 125, 126, 40, -1, -1, 43, -1, 45, - -1, -1, -1, -1, -1, -1, 402, 403, -1, -1, - -1, -1, -1, 59, -1, -1, -1, -1, 64, -1, + -1, -1, -1, 413, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, -1, 312, -1, 126, 404, 405, + 406, 407, 408, -1, -1, -1, -1, 413, 414, 415, + 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, + -1, 404, 405, 406, 407, 408, 331, -1, -1, -1, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 331, + -1, -1, -1, -1, -1, 331, 400, 401, 402, 403, + -1, 413, 414, 415, -1, 331, -1, 411, 412, -1, + -1, -1, -1, -1, 331, 33, -1, -1, 331, -1, + -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, + -1, -1, -1, 400, 401, 402, 403, 260, 261, 262, + 263, 264, 265, 61, 411, 412, 64, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 413, 414, + 415, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 413, 414, 415, 92, -1, -1, 413, 414, 415, + -1, 260, 261, 262, 263, 264, 265, 413, 414, 415, + 313, -1, -1, -1, -1, -1, 413, 414, 415, -1, + 413, 414, 415, -1, -1, -1, -1, -1, 126, -1, + 333, 334, -1, -1, -1, 33, -1, 340, 341, 342, + 343, -1, 40, 346, -1, 43, -1, 45, -1, -1, + -1, -1, -1, -1, 313, -1, -1, 360, 361, 362, + 363, 59, 365, 366, 367, 368, 64, 370, 371, 372, + 373, 374, -1, -1, 333, 334, -1, -1, -1, 33, + -1, 340, -1, -1, -1, -1, 40, 346, -1, 43, + -1, 45, -1, -1, 92, -1, -1, -1, -1, 402, + 403, -1, -1, -1, -1, 59, -1, -1, 367, 368, + 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 33, -1, 123, -1, 125, 126, -1, + 40, -1, -1, 43, -1, 45, -1, -1, 92, -1, + -1, -1, -1, 402, 403, -1, -1, -1, -1, -1, + -1, 61, -1, -1, 64, -1, -1, -1, -1, -1, + -1, -1, 260, 261, 262, 263, 264, 265, -1, 123, + -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 33, -1, -1, -1, -1, -1, -1, 40, -1, - -1, 43, -1, 45, -1, -1, 92, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, - -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 33, -1, -1, 123, -1, 125, - 126, 40, -1, -1, 43, -1, 45, -1, -1, -1, - 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 61, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 123, -1, -1, 126, -1, -1, 260, 261, 262, - 263, 264, 265, 92, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 313, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 333, 334, -1, -1, -1, + 33, -1, 340, -1, -1, -1, -1, 40, 346, -1, + 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 260, 261, 262, 263, 264, 265, 61, 367, + 368, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 33, -1, -1, -1, -1, -1, 126, 40, -1, - -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, - 313, -1, -1, -1, -1, -1, -1, -1, -1, 61, - -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, - 333, 334, -1, -1, -1, -1, -1, 340, 341, 342, - 343, -1, -1, 346, 260, 261, 262, 263, 264, 265, - 92, -1, -1, -1, -1, -1, -1, 360, 361, 362, - 363, -1, 365, 366, 367, -1, -1, 370, 371, 372, - 373, 374, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 126, -1, -1, -1, 260, 261, - 262, 263, 264, 265, -1, -1, -1, 313, -1, 402, - 403, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 333, 334, -1, - -1, -1, -1, -1, 340, 341, 342, 343, -1, -1, - 346, 260, 261, 262, 263, 264, 265, -1, -1, -1, - -1, 313, -1, -1, 360, 361, 362, 363, -1, 365, - 366, 367, -1, -1, 370, -1, 372, 373, 374, -1, - -1, 333, 334, -1, -1, -1, -1, -1, 340, 341, - 342, 343, -1, -1, 346, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 313, -1, 402, 403, 360, 361, - 362, 363, -1, 365, 366, 367, 33, -1, 370, -1, - 372, -1, -1, 40, 333, 334, 43, -1, 45, -1, - -1, 340, -1, -1, -1, -1, -1, 346, 260, 261, - 262, 263, 264, 265, 61, 33, -1, 64, -1, -1, - 402, 403, 40, -1, 33, 43, -1, 45, 367, -1, - -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, - -1, 33, -1, 61, -1, 92, 64, -1, 40, -1, - -1, 43, -1, 45, -1, 64, -1, -1, -1, -1, - -1, 313, -1, 402, 403, -1, -1, -1, -1, -1, - -1, -1, 64, -1, 92, -1, -1, -1, -1, 126, - -1, 333, 334, 92, -1, -1, -1, -1, 340, -1, - -1, -1, -1, -1, 346, -1, -1, -1, -1, -1, - 92, -1, -1, -1, -1, -1, -1, -1, 126, -1, - -1, -1, -1, -1, -1, 367, -1, 126, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, + -1, -1, -1, -1, 402, 403, 260, 261, 262, 263, + 264, 265, -1, -1, -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, + -1, -1, -1, 126, -1, 333, 334, -1, -1, -1, + -1, -1, 340, 341, 342, 343, -1, -1, 346, -1, + 260, 261, 262, 263, 264, 265, -1, -1, -1, 313, + -1, -1, 360, 361, 362, 363, -1, 365, 366, 367, + 368, -1, 370, -1, 372, 373, 374, -1, -1, 333, + 334, -1, -1, -1, -1, -1, 340, 341, 342, 343, + -1, -1, 346, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 313, 402, 403, 360, 361, 362, 363, + -1, 365, 366, 367, 368, 33, 370, -1, 372, -1, + -1, -1, 40, 333, 334, 43, -1, 45, -1, -1, + 340, -1, 33, -1, -1, -1, 346, -1, -1, 40, + -1, -1, 43, 61, 45, -1, 64, -1, 402, 403, + -1, -1, -1, -1, -1, -1, -1, 367, 368, -1, + -1, -1, -1, 64, -1, -1, -1, 260, 261, 262, + 263, 264, 265, 33, 92, -1, -1, -1, -1, -1, + 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, + -1, 92, 402, 403, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 64, -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 402, 403, -1, -1, -1, -1, -1, -1, -1, -1, + 313, -1, -1, -1, -1, 126, -1, -1, -1, -1, + -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, + 333, 334, -1, -1, -1, -1, -1, 340, -1, -1, + -1, -1, -1, 346, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 126, -1, -1, -1, + -1, -1, -1, -1, 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 402, + 403, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 260, 261, 262, 263, 264, 265, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 260, + 261, 262, 263, 264, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 260, 261, 262, 263, 264, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 313, -1, -1, -1, -1, + 260, 261, 262, 263, 264, 265, -1, -1, -1, -1, + -1, -1, 313, -1, -1, 333, 334, -1, -1, -1, + -1, -1, 340, -1, -1, -1, -1, -1, 346, -1, + -1, -1, 333, 334, -1, -1, 87, -1, -1, 340, + 91, -1, -1, -1, -1, 346, -1, -1, -1, 367, + 368, -1, -1, 313, 105, 106, 107, 108, 109, 110, + 111, 112, 113, -1, 115, 116, 367, 368, -1, -1, + -1, -1, -1, 333, 334, -1, -1, -1, -1, -1, + 340, -1, -1, -1, 402, 403, 346, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 260, 261, 262, 263, 264, 265, -1, -1, - -1, 260, 261, 262, 263, 264, 265, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 313, -1, 260, 261, - 262, 263, 264, 265, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 333, 334, -1, -1, - -1, -1, -1, 340, -1, 313, -1, -1, -1, 346, - -1, -1, -1, -1, 313, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 333, 334, -1, -1, -1, - 367, 313, 340, -1, 333, 334, -1, -1, 346, -1, - -1, 340, -1, -1, -1, -1, -1, 346, -1, -1, - -1, 333, 334, 87, -1, -1, -1, 91, 340, 367, - -1, -1, -1, -1, 346, 402, 403, -1, 367, -1, - -1, 105, 106, 107, 108, 109, 110, 111, 112, -1, - 114, 115, -1, -1, -1, 367, -1, -1, -1, -1, - -1, -1, -1, -1, 402, 403, -1, -1, -1, -1, - -1, -1, -1, 402, 403, -1, -1, -1, -1, -1, + -1, 402, 403, -1, -1, -1, -1, 367, 368, -1, + -1, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, -1, 402, 403, -1, 196, 197, -1, 199, -1, + -1, -1, -1, 204, -1, -1, -1, 208, 209, -1, + 211, -1, -1, -1, -1, -1, -1, 218, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 239, -1, + 241, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 251, -1, 253, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 402, 403, -1, -1, -1, -1, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, -1, -1, -1, -1, - 194, 195, -1, 197, -1, -1, -1, -1, 202, -1, - -1, -1, 206, 207, -1, 209, -1, -1, -1, -1, - -1, -1, 216, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 237, -1, 239, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 249, -1, 251, -1, -1, + 281, 282, -1, -1, -1, 286, -1, -1, 289, 290, + -1, -1, -1, -1, -1, -1, 297, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 310, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 279, 280, -1, -1, -1, - 284, -1, -1, 287, 288, -1, -1, -1, -1, -1, - -1, 295, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 308, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 340, + -1, -1, -1, -1, -1, -1, -1, 348, -1, 350, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 338, -1, -1, -1, -1, -1, - -1, -1, 346, -1, 348, -1, -1, -1, -1, -1, + -1, 372, 373, -1, 375, -1, -1, 378, 379, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 370, 371, -1, 373, - -1, -1, 376, 377, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 397, -1, 399, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 395, -1, 397, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 417, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 415, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 432, + -1, -1, -1, 434, ); protected static $yyFinal= 2; protected static $yyName= array( @@ -1363,14 +1358,15 @@ class Parser extends \text\parser\generic\AbstractParser { 'T_ARRAY', 'T_FUNCTION', 'T_CONST', NULL, NULL, NULL, NULL, 'T_VARIABLE', 'T_RETURN', 'T_TRY', 'T_THROW', 'T_CATCH', NULL, 'T_NEW', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'T_FOR', 'T_WHILE', - 'T_DO', 'T_FOREACH', 'T_IN', 'T_BREAK', 'T_CONTINUE', 'T_YIELD', NULL, NULL, - 'T_IF', 'T_ELSE', 'T_SWITCH', 'T_CASE', 'T_DEFAULT', NULL, NULL, NULL, NULL, + 'T_DO', 'T_FOREACH', 'T_IN', 'T_BREAK', 'T_CONTINUE', 'T_YIELD', + 'T_YIELD_FROM', NULL, 'T_IF', 'T_ELSE', 'T_SWITCH', 'T_CASE', 'T_DEFAULT', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'T_GE', 'T_SE', 'T_INC', 'T_DEC', - 'T_ADD_EQUAL', 'T_SUB_EQUAL', 'T_MUL_EQUAL', 'T_DIV_EQUAL', 'T_MOD_EQUAL', - NULL, 'T_DOUBLE_COLON', 'T_EQUALS', 'T_NOT_EQUALS', 'T_DOUBLE_ARROW', - 'T_BOOLEAN_OR', 'T_BOOLEAN_AND', 'T_CONCAT_EQUAL', 'T_OR_EQUAL', - 'T_AND_EQUAL', 'T_XOR_EQUAL', 'T_SHR', 'T_SHL', + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'T_GE', 'T_SE', + 'T_INC', 'T_DEC', 'T_ADD_EQUAL', 'T_SUB_EQUAL', 'T_MUL_EQUAL', + 'T_DIV_EQUAL', 'T_MOD_EQUAL', NULL, 'T_DOUBLE_COLON', 'T_EQUALS', + 'T_NOT_EQUALS', 'T_DOUBLE_ARROW', 'T_BOOLEAN_OR', 'T_BOOLEAN_AND', + 'T_CONCAT_EQUAL', 'T_OR_EQUAL', 'T_AND_EQUAL', 'T_XOR_EQUAL', 'T_SHR', + 'T_SHL', ); protected static $yyTableCount= 0, $yyNameCount= 0; @@ -1525,7 +1521,7 @@ public function yyparse($yyLex) { // Actions switch ($yyN) { - case 1: #line 182 "src/main/jay/grammars/php.jay" + case 1: #line 184 "src/main/jay/grammars/php.jay" { $yyVal= new ParseTree(); $yyVal->origin= $yyLex->fileName; @@ -1537,35 +1533,35 @@ public function yyparse($yyLex) { } } break; - case 3: #line 197 "src/main/jay/grammars/php.jay" + case 3: #line 199 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new PackageNode()); } break; - case 4: #line 197 "src/main/jay/grammars/php.jay" + case 4: #line 199 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->name= $yyVals[-1+$yyTop]; } break; - case 7: #line 208 "src/main/jay/grammars/php.jay" + case 7: #line 210 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 8: #line 209 "src/main/jay/grammars/php.jay" + case 8: #line 211 "src/main/jay/grammars/php.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 9: #line 213 "src/main/jay/grammars/php.jay" + case 9: #line 215 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ImportNode(array('name' => $yyVals[-1+$yyTop]))); } break; - case 11: #line 220 "src/main/jay/grammars/php.jay" + case 11: #line 222 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[-2+$yyTop].'.'.$yyVals[0+$yyTop]; } break; - case 13: #line 225 "src/main/jay/grammars/php.jay" + case 13: #line 227 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 14: #line 231 "src/main/jay/grammars/php.jay" + case 14: #line 233 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ClassNode(), TRUE); } break; - case 15: #line 231 "src/main/jay/grammars/php.jay" + case 15: #line 233 "src/main/jay/grammars/php.jay" { $yyVals[-7+$yyTop]->modifiers= $yyVals[-8+$yyTop][0]; $yyVals[-7+$yyTop]->annotations= $yyVals[-8+$yyTop][1]; @@ -1576,10 +1572,10 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-7+$yyTop]; } break; - case 16: #line 240 "src/main/jay/grammars/php.jay" + case 16: #line 242 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InterfaceNode(), TRUE); } break; - case 17: #line 240 "src/main/jay/grammars/php.jay" + case 17: #line 242 "src/main/jay/grammars/php.jay" { $yyVals[-6+$yyTop]->modifiers= $yyVals[-7+$yyTop][0]; $yyVals[-6+$yyTop]->annotations= $yyVals[-7+$yyTop][1]; @@ -1589,52 +1585,52 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-6+$yyTop]; } break; - case 18: #line 251 "src/main/jay/grammars/php.jay" + case 18: #line 253 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 19: #line 252 "src/main/jay/grammars/php.jay" + case 19: #line 254 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 20: #line 256 "src/main/jay/grammars/php.jay" + case 20: #line 258 "src/main/jay/grammars/php.jay" { $yyVal= array(); } break; - case 21: #line 257 "src/main/jay/grammars/php.jay" + case 21: #line 259 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 22: #line 261 "src/main/jay/grammars/php.jay" + case 22: #line 263 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 23: #line 262 "src/main/jay/grammars/php.jay" + case 23: #line 264 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 24: #line 266 "src/main/jay/grammars/php.jay" + case 24: #line 268 "src/main/jay/grammars/php.jay" { $yyVal= array_merge((array)$yyVals[-1+$yyTop], $yyVals[0+$yyTop]); } break; - case 25: #line 267 "src/main/jay/grammars/php.jay" + case 25: #line 269 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 26: #line 271 "src/main/jay/grammars/php.jay" + case 26: #line 273 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 27: #line 272 "src/main/jay/grammars/php.jay" + case 27: #line 274 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 28: #line 273 "src/main/jay/grammars/php.jay" + case 28: #line 275 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 29: #line 277 "src/main/jay/grammars/php.jay" + case 29: #line 279 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-1+$yyTop]); } break; - case 30: #line 278 "src/main/jay/grammars/php.jay" + case 30: #line 280 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 31: #line 282 "src/main/jay/grammars/php.jay" + case 31: #line 284 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-1+$yyTop]); } break; - case 32: #line 283 "src/main/jay/grammars/php.jay" + case 32: #line 285 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 33: #line 289 "src/main/jay/grammars/php.jay" + case 33: #line 291 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new FieldNode()); $yyVal->modifiers= $yyVals[-2+$yyTop][0]; $yyVal->annotations= $yyVals[-2+$yyTop][1]; @@ -1643,21 +1639,21 @@ public function yyparse($yyLex) { $yyVal->initialization= $yyVals[0+$yyTop]; } break; - case 34: #line 299 "src/main/jay/grammars/php.jay" + case 34: #line 301 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ClassConstantNode($yyVals[-2+$yyTop], TypeName::$VAR, $yyVals[0+$yyTop])); } break; - case 35: #line 305 "src/main/jay/grammars/php.jay" + case 35: #line 307 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 36: #line 306 "src/main/jay/grammars/php.jay" + case 36: #line 308 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 37: #line 312 "src/main/jay/grammars/php.jay" + case 37: #line 314 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create('__construct' == $yyVals[-1+$yyTop] ? new ConstructorNode() : new MethodNode(), TRUE); } break; - case 38: #line 312 "src/main/jay/grammars/php.jay" + case 38: #line 314 "src/main/jay/grammars/php.jay" { $yyVals[-5+$yyTop]->modifiers= $yyVals[-8+$yyTop][0]; $yyVals[-5+$yyTop]->annotations= $yyVals[-8+$yyTop][1]; @@ -1670,57 +1666,57 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-5+$yyTop]; } break; - case 39: #line 326 "src/main/jay/grammars/php.jay" + case 39: #line 328 "src/main/jay/grammars/php.jay" { $yyVal= TypeName::$VAR; } break; - case 40: #line 327 "src/main/jay/grammars/php.jay" + case 40: #line 329 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 41: #line 332 "src/main/jay/grammars/php.jay" + case 41: #line 334 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[-2+$yyTop]); } break; - case 42: #line 333 "src/main/jay/grammars/php.jay" + case 42: #line 335 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop], NULL); } break; - case 43: #line 337 "src/main/jay/grammars/php.jay" + case 43: #line 339 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 44: #line 338 "src/main/jay/grammars/php.jay" + case 44: #line 340 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 45: #line 342 "src/main/jay/grammars/php.jay" + case 45: #line 344 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new AnnotationNode()); $yyVal->type= $yyVals[0+$yyTop]; } break; - case 46: #line 346 "src/main/jay/grammars/php.jay" + case 46: #line 348 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new AnnotationNode()); $yyVal->type= $yyVals[-3+$yyTop]; $yyVals[-1+$yyTop] && $yyVal->parameters= array('default' => $yyVals[-1+$yyTop]); } break; - case 47: #line 351 "src/main/jay/grammars/php.jay" + case 47: #line 353 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new AnnotationNode()); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->parameters= $yyVals[-1+$yyTop]; } break; - case 48: #line 359 "src/main/jay/grammars/php.jay" + case 48: #line 361 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 49: #line 360 "src/main/jay/grammars/php.jay" + case 49: #line 362 "src/main/jay/grammars/php.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 50: #line 364 "src/main/jay/grammars/php.jay" + case 50: #line 366 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-2+$yyTop] => $yyVals[0+$yyTop]); } break; - case 51: #line 365 "src/main/jay/grammars/php.jay" + case 51: #line 367 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-2+$yyTop] => $yyVals[0+$yyTop]); } break; - case 53: #line 370 "src/main/jay/grammars/php.jay" + case 53: #line 372 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new InstanceCreationNode()); $yyVal->type= $yyVals[-3+$yyTop]; @@ -1728,71 +1724,71 @@ public function yyparse($yyLex) { $yyVal->body= NULL; } break; - case 54: #line 376 "src/main/jay/grammars/php.jay" + case 54: #line 378 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ConstantAccessNode(new TypeName($yyVals[-2+$yyTop]), $yyVals[0+$yyTop])); } break; - case 55: #line 379 "src/main/jay/grammars/php.jay" + case 55: #line 381 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new StaticMemberAccessNode(new TypeName($yyVals[-2+$yyTop]), $yyVals[0+$yyTop])); } break; - case 56: #line 386 "src/main/jay/grammars/php.jay" + case 56: #line 388 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 57: #line 387 "src/main/jay/grammars/php.jay" + case 57: #line 389 "src/main/jay/grammars/php.jay" { $yyVal= (array)$yyVals[-1+$yyTop]; } break; - case 58: #line 391 "src/main/jay/grammars/php.jay" + case 58: #line 393 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 59: #line 392 "src/main/jay/grammars/php.jay" + case 59: #line 394 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 60: #line 396 "src/main/jay/grammars/php.jay" + case 60: #line 398 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 61: #line 397 "src/main/jay/grammars/php.jay" + case 61: #line 399 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 62: #line 401 "src/main/jay/grammars/php.jay" + case 62: #line 403 "src/main/jay/grammars/php.jay" { $yyVal= array('name' => $yyVals[-1+$yyTop], 'type' => $yyVals[-2+$yyTop], 'check' => TRUE); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 63: #line 402 "src/main/jay/grammars/php.jay" + case 63: #line 404 "src/main/jay/grammars/php.jay" { $yyVal= array('name' => $yyVals[-1+$yyTop], 'type' => new TypeName('var'), 'check' => FALSE); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 64: #line 410 "src/main/jay/grammars/php.jay" + case 64: #line 412 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 66: #line 415 "src/main/jay/grammars/php.jay" + case 66: #line 417 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 67: #line 416 "src/main/jay/grammars/php.jay" + case 67: #line 418 "src/main/jay/grammars/php.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], $yyVals[0+$yyTop]); } break; - case 68: #line 420 "src/main/jay/grammars/php.jay" + case 68: #line 422 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ReturnNode()); } break; - case 69: #line 420 "src/main/jay/grammars/php.jay" + case 69: #line 422 "src/main/jay/grammars/php.jay" { $yyVal->expression= $yyVals[-1+$yyTop]; } break; - case 70: #line 423 "src/main/jay/grammars/php.jay" + case 70: #line 425 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new IfNode()); } break; - case 71: #line 423 "src/main/jay/grammars/php.jay" + case 71: #line 425 "src/main/jay/grammars/php.jay" { $yyVals[-6+$yyTop]->condition= $yyVals[-3+$yyTop]; $yyVals[-6+$yyTop]->statements= $yyVals[-1+$yyTop]; $yyVals[-6+$yyTop]->otherwise= $yyVals[0+$yyTop]; } break; - case 72: #line 428 "src/main/jay/grammars/php.jay" + case 72: #line 430 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForNode()); } break; - case 73: #line 428 "src/main/jay/grammars/php.jay" + case 73: #line 430 "src/main/jay/grammars/php.jay" { if ($yyVals[-6+$yyTop]) { $yyVals[-9+$yyTop]->initialization= $yyVals[-6+$yyTop]; @@ -1804,178 +1800,178 @@ public function yyparse($yyLex) { $yyVals[-9+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 74: #line 438 "src/main/jay/grammars/php.jay" + case 74: #line 440 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForeachNode()); } break; - case 75: #line 438 "src/main/jay/grammars/php.jay" + case 75: #line 440 "src/main/jay/grammars/php.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-4+$yyTop]; $yyVals[-7+$yyTop]->assignment= $yyVals[-2+$yyTop]; $yyVals[-7+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 76: #line 443 "src/main/jay/grammars/php.jay" + case 76: #line 445 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new WhileNode()); } break; - case 77: #line 443 "src/main/jay/grammars/php.jay" + case 77: #line 445 "src/main/jay/grammars/php.jay" { $yyVals[-5+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-5+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 78: #line 447 "src/main/jay/grammars/php.jay" + case 78: #line 449 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DoNode()); } break; - case 79: #line 447 "src/main/jay/grammars/php.jay" + case 79: #line 449 "src/main/jay/grammars/php.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-7+$yyTop]->statements= $yyVals[-5+$yyTop]; } break; - case 80: #line 451 "src/main/jay/grammars/php.jay" + case 80: #line 453 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new SwitchNode()); } break; - case 81: #line 451 "src/main/jay/grammars/php.jay" + case 81: #line 453 "src/main/jay/grammars/php.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-4+$yyTop]; $yyVals[-7+$yyTop]->cases= $yyVals[-1+$yyTop]; } break; - case 82: #line 455 "src/main/jay/grammars/php.jay" + case 82: #line 457 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new TryNode()); } break; - case 83: #line 455 "src/main/jay/grammars/php.jay" + case 83: #line 457 "src/main/jay/grammars/php.jay" { $yyVals[-4+$yyTop]->statements= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->handling= $yyVals[0+$yyTop]; $yyVal= $yyVals[-4+$yyTop]; } break; - case 84: #line 460 "src/main/jay/grammars/php.jay" + case 84: #line 462 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new BreakNode()); } break; - case 86: #line 461 "src/main/jay/grammars/php.jay" + case 86: #line 463 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ContinueNode()); } break; - case 88: #line 462 "src/main/jay/grammars/php.jay" + case 88: #line 464 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ThrowNode()); } break; - case 89: #line 462 "src/main/jay/grammars/php.jay" + case 89: #line 464 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->expression= $yyVals[-1+$yyTop]; } break; - case 91: #line 466 "src/main/jay/grammars/php.jay" + case 91: #line 468 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new NoopNode()); } break; - case 92: #line 470 "src/main/jay/grammars/php.jay" + case 92: #line 472 "src/main/jay/grammars/php.jay" { $yyVal= array('key' => NULL, 'value' => $yyVals[0+$yyTop]); } break; - case 93: #line 471 "src/main/jay/grammars/php.jay" + case 93: #line 473 "src/main/jay/grammars/php.jay" { $yyVal= array('key' => $yyVals[-2+$yyTop], 'value' => $yyVals[0+$yyTop]); } break; - case 94: #line 475 "src/main/jay/grammars/php.jay" + case 94: #line 477 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 96: #line 480 "src/main/jay/grammars/php.jay" + case 96: #line 482 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 97: #line 481 "src/main/jay/grammars/php.jay" + case 97: #line 483 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-1+$yyTop]), $yyVals[0+$yyTop]); } break; - case 98: #line 485 "src/main/jay/grammars/php.jay" + case 98: #line 487 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new CaseNode()); } break; - case 99: #line 485 "src/main/jay/grammars/php.jay" + case 99: #line 487 "src/main/jay/grammars/php.jay" { $yyVals[-4+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 100: #line 489 "src/main/jay/grammars/php.jay" + case 100: #line 491 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DefaultNode()); } break; - case 101: #line 489 "src/main/jay/grammars/php.jay" + case 101: #line 491 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 102: #line 495 "src/main/jay/grammars/php.jay" + case 102: #line 497 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 103: #line 496 "src/main/jay/grammars/php.jay" + case 103: #line 498 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[-1+$yyTop]; } break; - case 104: #line 500 "src/main/jay/grammars/php.jay" + case 104: #line 502 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 105: #line 501 "src/main/jay/grammars/php.jay" + case 105: #line 503 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ElseNode()); } break; - case 106: #line 501 "src/main/jay/grammars/php.jay" + case 106: #line 503 "src/main/jay/grammars/php.jay" { $yyVals[-2+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 108: #line 510 "src/main/jay/grammars/php.jay" + case 108: #line 512 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 109: #line 511 "src/main/jay/grammars/php.jay" + case 109: #line 513 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-1+$yyTop]), $yyVals[0+$yyTop]); } break; - case 110: #line 515 "src/main/jay/grammars/php.jay" + case 110: #line 517 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new CatchNode()); } break; - case 111: #line 515 "src/main/jay/grammars/php.jay" + case 111: #line 517 "src/main/jay/grammars/php.jay" { $yyVals[-8+$yyTop]->type= $yyVals[-5+$yyTop]; $yyVals[-8+$yyTop]->variable= $yyVals[-4+$yyTop]; $yyVals[-8+$yyTop]->statements= $yyVals[-1+$yyTop]; } break; - case 112: #line 525 "src/main/jay/grammars/php.jay" + case 112: #line 527 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 114: #line 530 "src/main/jay/grammars/php.jay" + case 114: #line 532 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 115: #line 531 "src/main/jay/grammars/php.jay" + case 115: #line 533 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 116: #line 535 "src/main/jay/grammars/php.jay" + case 116: #line 537 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 118: #line 540 "src/main/jay/grammars/php.jay" + case 118: #line 542 "src/main/jay/grammars/php.jay" { $yyVal= new InstanceCreationNode(); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->parameters= $yyVals[-1+$yyTop]; } break; - case 119: #line 545 "src/main/jay/grammars/php.jay" + case 119: #line 547 "src/main/jay/grammars/php.jay" { $yyVal= new DynamicInstanceCreationNode(); $yyVal->variable= $yyVals[-3+$yyTop]; $yyVal->parameters= $yyVals[-1+$yyTop]; } break; - case 120: #line 553 "src/main/jay/grammars/php.jay" + case 120: #line 555 "src/main/jay/grammars/php.jay" { $yyVal= new StaticMemberAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 121: #line 556 "src/main/jay/grammars/php.jay" + case 121: #line 558 "src/main/jay/grammars/php.jay" { $yyVal= new StaticMethodCallNode(NULL, $yyVals[-3+$yyTop], $yyVals[-1+$yyTop]); } break; - case 122: #line 559 "src/main/jay/grammars/php.jay" + case 122: #line 561 "src/main/jay/grammars/php.jay" { $yyVal= new ConstantAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 124: #line 566 "src/main/jay/grammars/php.jay" + case 124: #line 568 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new VariableNode($yyVals[0+$yyTop])); } break; - case 125: #line 566 "src/main/jay/grammars/php.jay" + case 125: #line 568 "src/main/jay/grammars/php.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -1983,19 +1979,19 @@ public function yyparse($yyLex) { } } break; - case 126: #line 572 "src/main/jay/grammars/php.jay" + case 126: #line 574 "src/main/jay/grammars/php.jay" { $p= $yyLex->position; } break; - case 127: #line 572 "src/main/jay/grammars/php.jay" + case 127: #line 574 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]->position= $p; $yyVal= $yyVals[0+$yyTop]; } break; - case 128: #line 576 "src/main/jay/grammars/php.jay" + case 128: #line 578 "src/main/jay/grammars/php.jay" { $p= $yyLex->position; } break; - case 129: #line 576 "src/main/jay/grammars/php.jay" + case 129: #line 578 "src/main/jay/grammars/php.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= new TypeName($yyVals[-4+$yyTop]); @@ -2007,10 +2003,10 @@ public function yyparse($yyLex) { } } break; - case 130: #line 586 "src/main/jay/grammars/php.jay" + case 130: #line 588 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InvocationNode($yyVals[-1+$yyTop])); } break; - case 131: #line 586 "src/main/jay/grammars/php.jay" + case 131: #line 588 "src/main/jay/grammars/php.jay" { $yyVals[-4+$yyTop]->arguments= $yyVals[-2+$yyTop]; if ($yyVals[0+$yyTop]) { @@ -2021,53 +2017,58 @@ public function yyparse($yyLex) { } } break; - case 132: #line 595 "src/main/jay/grammars/php.jay" + case 132: #line 597 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new CloneNode($yyVals[0+$yyTop])); break; } break; - case 133: #line 598 "src/main/jay/grammars/php.jay" + case 133: #line 600 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new YieldNode()); } break; - case 134: #line 601 "src/main/jay/grammars/php.jay" + case 134: #line 603 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new YieldNode($yyVals[0+$yyTop])); } break; - case 135: #line 604 "src/main/jay/grammars/php.jay" + case 135: #line 606 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new YieldNode($yyVals[0+$yyTop], $yyVals[-2+$yyTop])); } break; - case 136: #line 607 "src/main/jay/grammars/php.jay" + case 136: #line 609 "src/main/jay/grammars/php.jay" + { + $yyVal= $yyLex->create(new YieldFromNode($yyVals[0+$yyTop])); + } break; + + case 137: #line 612 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new AssignmentNode($yyVals[0+$yyTop])); } break; - case 137: #line 610 "src/main/jay/grammars/php.jay" + case 138: #line 615 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ComparisonNode($yyVals[0+$yyTop])); } break; - case 138: #line 613 "src/main/jay/grammars/php.jay" + case 139: #line 618 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new BinaryOpNode($yyVals[0+$yyTop])); } break; - case 139: #line 616 "src/main/jay/grammars/php.jay" + case 140: #line 621 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); } break; - case 140: #line 619 "src/main/jay/grammars/php.jay" + case 141: #line 624 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); $yyVal->postfix= TRUE; } break; - case 141: #line 623 "src/main/jay/grammars/php.jay" + case 142: #line 628 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new TernaryNode()); $yyVal->condition= $yyVals[-4+$yyTop]; @@ -2075,7 +2076,7 @@ public function yyparse($yyLex) { $yyVal->conditional= $yyVals[0+$yyTop]; } break; - case 142: #line 629 "src/main/jay/grammars/php.jay" + case 143: #line 634 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2083,7 +2084,7 @@ public function yyparse($yyLex) { $yyVal->op= '||'; } break; - case 143: #line 635 "src/main/jay/grammars/php.jay" + case 144: #line 640 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2091,41 +2092,41 @@ public function yyparse($yyLex) { $yyVal->op= '&&'; } break; - case 144: #line 641 "src/main/jay/grammars/php.jay" + case 145: #line 646 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new InstanceOfNode()); $yyVal->expression= $yyVals[-2+$yyTop]; $yyVal->type= $yyVals[0+$yyTop]; } break; - case 145: #line 646 "src/main/jay/grammars/php.jay" + case 146: #line 651 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DynamicInstanceOfNode()); $yyVal->expression= $yyVals[-2+$yyTop]; $yyVal->variable= $yyVals[0+$yyTop]; } break; - case 146: #line 651 "src/main/jay/grammars/php.jay" + case 147: #line 656 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new CastNode(array('type' => new TypeName($yyVals[-2+$yyTop]), 'expression' => $yyVals[0+$yyTop]))); } break; - case 147: #line 654 "src/main/jay/grammars/php.jay" + case 148: #line 659 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new CastNode(array('type' => new TypeName('var[]'), 'expression' => $yyVals[0+$yyTop]))); } break; - case 148: #line 657 "src/main/jay/grammars/php.jay" + case 149: #line 662 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new SilenceOperatorNode($yyVals[0+$yyTop])); } break; - case 149: #line 660 "src/main/jay/grammars/php.jay" + case 150: #line 665 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new LambdaNode($yyVals[-4+$yyTop], (array)$yyVals[-1+$yyTop])); } break; - case 150: #line 663 "src/main/jay/grammars/php.jay" + case 151: #line 668 "src/main/jay/grammars/php.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2135,25 +2136,25 @@ public function yyparse($yyLex) { } } break; - case 151: #line 674 "src/main/jay/grammars/php.jay" + case 152: #line 679 "src/main/jay/grammars/php.jay" { $yyVal= array(); } break; - case 153: #line 679 "src/main/jay/grammars/php.jay" + case 154: #line 684 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 154: #line 680 "src/main/jay/grammars/php.jay" + case 155: #line 685 "src/main/jay/grammars/php.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 155: #line 684 "src/main/jay/grammars/php.jay" + case 156: #line 689 "src/main/jay/grammars/php.jay" { $yyVal= new VariableNode($yyVals[0+$yyTop]); } break; - case 157: #line 689 "src/main/jay/grammars/php.jay" + case 158: #line 694 "src/main/jay/grammars/php.jay" { $p= $yyLex->position; } break; - case 158: #line 689 "src/main/jay/grammars/php.jay" + case 159: #line 694 "src/main/jay/grammars/php.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= NULL; $yyVal= $yyVals[-1+$yyTop]; } break; - case 159: #line 693 "src/main/jay/grammars/php.jay" + case 160: #line 698 "src/main/jay/grammars/php.jay" { switch (strtolower($yyVals[0+$yyTop])) { case 'true': $yyVal= $yyLex->create(new BooleanNode(TRUE)); break; case 'false': $yyVal= $yyLex->create(new BooleanNode(FALSE)); break; @@ -2161,260 +2162,260 @@ public function yyparse($yyLex) { default: $yyVal= $yyLex->create(new ConstantNode($yyVals[0+$yyTop])); break; }} break; - case 160: #line 699 "src/main/jay/grammars/php.jay" + case 161: #line 704 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new IntegerNode($yyVals[0+$yyTop])); } break; - case 161: #line 700 "src/main/jay/grammars/php.jay" + case 162: #line 705 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new HexNode($yyVals[0+$yyTop])); } break; - case 162: #line 701 "src/main/jay/grammars/php.jay" + case 163: #line 706 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new OctalNode($yyVals[0+$yyTop])); } break; - case 163: #line 702 "src/main/jay/grammars/php.jay" + case 164: #line 707 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DecimalNode($yyVals[0+$yyTop])); } break; - case 164: #line 703 "src/main/jay/grammars/php.jay" + case 165: #line 708 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new StringNode($yyVals[0+$yyTop])); } break; - case 165: #line 707 "src/main/jay/grammars/php.jay" + case 166: #line 712 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => NULL))); } break; - case 166: #line 710 "src/main/jay/grammars/php.jay" + case 167: #line 715 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => NULL))); } break; - case 167: #line 713 "src/main/jay/grammars/php.jay" + case 168: #line 718 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => $yyVals[0+$yyTop]))); } break; - case 168: #line 716 "src/main/jay/grammars/php.jay" + case 169: #line 721 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => $yyVals[0+$yyTop]))); } break; - case 169: #line 722 "src/main/jay/grammars/php.jay" + case 170: #line 727 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 170: #line 723 "src/main/jay/grammars/php.jay" + case 171: #line 728 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 171: #line 727 "src/main/jay/grammars/php.jay" + case 172: #line 732 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 173: #line 732 "src/main/jay/grammars/php.jay" + case 174: #line 737 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 174: #line 736 "src/main/jay/grammars/php.jay" + case 175: #line 741 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 175: #line 737 "src/main/jay/grammars/php.jay" + case 176: #line 742 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 176: #line 738 "src/main/jay/grammars/php.jay" + case 177: #line 743 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 177: #line 739 "src/main/jay/grammars/php.jay" + case 178: #line 744 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 178: #line 740 "src/main/jay/grammars/php.jay" + case 179: #line 745 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 179: #line 741 "src/main/jay/grammars/php.jay" + case 180: #line 746 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 180: #line 742 "src/main/jay/grammars/php.jay" + case 181: #line 747 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => '~='); } break; - case 181: #line 743 "src/main/jay/grammars/php.jay" + case 182: #line 748 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 182: #line 744 "src/main/jay/grammars/php.jay" + case 183: #line 749 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 183: #line 745 "src/main/jay/grammars/php.jay" + case 184: #line 750 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 184: #line 746 "src/main/jay/grammars/php.jay" + case 185: #line 751 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 185: #line 747 "src/main/jay/grammars/php.jay" + case 186: #line 752 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 186: #line 751 "src/main/jay/grammars/php.jay" + case 187: #line 756 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 187: #line 752 "src/main/jay/grammars/php.jay" + case 188: #line 757 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 188: #line 753 "src/main/jay/grammars/php.jay" + case 189: #line 758 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 189: #line 754 "src/main/jay/grammars/php.jay" + case 190: #line 759 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 190: #line 755 "src/main/jay/grammars/php.jay" + case 191: #line 760 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 191: #line 756 "src/main/jay/grammars/php.jay" + case 192: #line 761 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 192: #line 757 "src/main/jay/grammars/php.jay" + case 193: #line 762 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 193: #line 758 "src/main/jay/grammars/php.jay" + case 194: #line 763 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 194: #line 762 "src/main/jay/grammars/php.jay" + case 195: #line 767 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 195: #line 763 "src/main/jay/grammars/php.jay" + case 196: #line 768 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 196: #line 764 "src/main/jay/grammars/php.jay" + case 197: #line 769 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 197: #line 765 "src/main/jay/grammars/php.jay" + case 198: #line 770 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 198: #line 766 "src/main/jay/grammars/php.jay" + case 199: #line 771 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 199: #line 767 "src/main/jay/grammars/php.jay" + case 200: #line 772 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => '~'); } break; - case 200: #line 768 "src/main/jay/grammars/php.jay" + case 201: #line 773 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 201: #line 769 "src/main/jay/grammars/php.jay" + case 202: #line 774 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 202: #line 770 "src/main/jay/grammars/php.jay" + case 203: #line 775 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 203: #line 771 "src/main/jay/grammars/php.jay" + case 204: #line 776 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 204: #line 772 "src/main/jay/grammars/php.jay" + case 205: #line 777 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 205: #line 776 "src/main/jay/grammars/php.jay" + case 206: #line 781 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 206: #line 777 "src/main/jay/grammars/php.jay" + case 207: #line 782 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => '~'); } break; - case 207: #line 778 "src/main/jay/grammars/php.jay" + case 208: #line 783 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 208: #line 779 "src/main/jay/grammars/php.jay" + case 209: #line 784 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 209: #line 780 "src/main/jay/grammars/php.jay" + case 210: #line 785 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 210: #line 781 "src/main/jay/grammars/php.jay" + case 211: #line 786 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 211: #line 785 "src/main/jay/grammars/php.jay" + case 212: #line 790 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 212: #line 786 "src/main/jay/grammars/php.jay" + case 213: #line 791 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 213: #line 791 "src/main/jay/grammars/php.jay" + case 214: #line 796 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 215: #line 796 "src/main/jay/grammars/php.jay" + case 216: #line 801 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[0+$yyTop]); } break; - case 216: #line 797 "src/main/jay/grammars/php.jay" + case 217: #line 802 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop][1]->target= $yyVals[-1+$yyTop]; $yyVal= array($yyVals[0+$yyTop][0], $yyVals[-1+$yyTop]); } break; - case 217: #line 801 "src/main/jay/grammars/php.jay" + case 218: #line 806 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode()); } break; - case 218: #line 801 "src/main/jay/grammars/php.jay" + case 219: #line 806 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 219: #line 804 "src/main/jay/grammars/php.jay" + case 220: #line 809 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode()); } break; - case 220: #line 804 "src/main/jay/grammars/php.jay" + case 221: #line 809 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 221: #line 807 "src/main/jay/grammars/php.jay" + case 222: #line 812 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new MemberAccessNode(NULL, $yyVals[0+$yyTop])); } break; - case 222: #line 810 "src/main/jay/grammars/php.jay" + case 223: #line 815 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DynamicVariableReferenceNode(NULL, new VariableNode($yyVals[0+$yyTop]))); } break; - case 223: #line 813 "src/main/jay/grammars/php.jay" + case 224: #line 818 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DynamicVariableReferenceNode(NULL, $yyVals[-1+$yyTop])); } break; - case 224: #line 816 "src/main/jay/grammars/php.jay" + case 225: #line 821 "src/main/jay/grammars/php.jay" { $yyVals[-2+$yyTop]= $yyLex->create(new MethodCallNode(NULL, $yyVals[-1+$yyTop])); } break; - case 225: #line 816 "src/main/jay/grammars/php.jay" + case 226: #line 821 "src/main/jay/grammars/php.jay" { $yyVals[-5+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 228: #line 829 "src/main/jay/grammars/php.jay" + case 229: #line 834 "src/main/jay/grammars/php.jay" { $yyVal= new TypeName($yyVals[0+$yyTop]); } break; - case 229: #line 833 "src/main/jay/grammars/php.jay" + case 230: #line 838 "src/main/jay/grammars/php.jay" { $yyVal= new TypeName('var[]'); } break; - case 230: #line 837 "src/main/jay/grammars/php.jay" + case 231: #line 842 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 231: #line 838 "src/main/jay/grammars/php.jay" + case 232: #line 843 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 232: #line 844 "src/main/jay/grammars/php.jay" + case 233: #line 849 "src/main/jay/grammars/php.jay" { $yyVal= 0; } break; - case 233: #line 845 "src/main/jay/grammars/php.jay" + case 234: #line 850 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 234: #line 849 "src/main/jay/grammars/php.jay" + case 235: #line 854 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 235: #line 850 "src/main/jay/grammars/php.jay" + case 236: #line 855 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[-1+$yyTop] | $yyVals[0+$yyTop]; } break; - case 236: #line 854 "src/main/jay/grammars/php.jay" + case 237: #line 859 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_PUBLIC; } break; - case 237: #line 855 "src/main/jay/grammars/php.jay" + case 238: #line 860 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_PROTECTED; } break; - case 238: #line 856 "src/main/jay/grammars/php.jay" + case 239: #line 861 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_PRIVATE; } break; - case 239: #line 857 "src/main/jay/grammars/php.jay" + case 240: #line 862 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_STATIC; } break; - case 240: #line 858 "src/main/jay/grammars/php.jay" + case 241: #line 863 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_ABSTRACT; } break; - case 241: #line 859 "src/main/jay/grammars/php.jay" + case 242: #line 864 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_FINAL; } break; -#line 2418 "-" +#line 2419 "-" } $yyTop-= self::$yyLen[$yyN]; diff --git a/src/main/php/xp/compiler/syntax/xp/Lexer.class.php b/src/main/php/xp/compiler/syntax/xp/Lexer.class.php index 95635aaf8..2aadfd7c3 100644 --- a/src/main/php/xp/compiler/syntax/xp/Lexer.class.php +++ b/src/main/php/xp/compiler/syntax/xp/Lexer.class.php @@ -83,6 +83,7 @@ class Lexer extends \text\parser\generic\AbstractLexer { '&' => array('&&' => Parser::T_BOOLEAN_AND, '&=' => Parser::T_AND_EQUAL), '^' => array('^=' => Parser::T_XOR_EQUAL), '?' => array('?..' => 0, '?.' => Parser::T_NAV), // "T?..." = non-checked vararg of T + 'yield' => array('yield from' => Parser::T_YIELD_FROM, 'yield' => Parser::T_YIELD) ); const DELIMITERS = " ^|&?!.:;,@%~=<>(){}[]#+-*/\\\"'\r\n\t\$`"; @@ -213,6 +214,28 @@ public function advance() { } else if ('$' === $token{0}) { $this->token= Parser::T_VARIABLE; $this->value= $this->nextToken(); + } else if (isset(self::$lookahead[$token])) { + $ahead= $token; + $p= true; + foreach (self::$lookahead[$token] as $candidate => $id) { + $l= strlen($candidate); + while (strlen($ahead) < $l && $this->tokenizer->hasMoreTokens()) { + $ahead.= $this->nextToken(); + } + if (0 === strncmp($candidate, $ahead, $l)) { + if (0 === $id) break; + $this->token= $id; + $this->value= $candidate; + $this->pushBack(substr($ahead, $l)); + $p= false; + break; + } + } + if ($p) { + $this->pushBack(substr($ahead, 1)); + $this->token= ord($token); + $this->value= $token; + } } else if (isset(self::$keywords[$token])) { $this->token= self::$keywords[$token]; $this->value= $token; @@ -242,28 +265,6 @@ public function advance() { $this->value= $token; $this->pushBack($ahead); } - } else if (isset(self::$lookahead[$token])) { - $ahead= $token; - $p= true; - foreach (self::$lookahead[$token] as $candidate => $id) { - $l= strlen($candidate); - while (strlen($ahead) < $l) { - $ahead.= $this->nextToken(); - } - if (0 === strncmp($candidate, $ahead, $l)) { - if (0 === $id) break; - $this->token= $id; - $this->value= $candidate; - $this->pushBack(substr($ahead, $l)); - $p= false; - break; - } - } - if ($p) { - $this->pushBack(substr($ahead, 1)); - $this->token= ord($token); - $this->value= $token; - } } else if (false !== strpos(self::DELIMITERS, $token) && 1 === $length) { $this->token= ord($token); $this->value= $token; diff --git a/src/main/php/xp/compiler/syntax/xp/Parser.class.php b/src/main/php/xp/compiler/syntax/xp/Parser.class.php index 6f7ae055e..e989dfc60 100644 --- a/src/main/php/xp/compiler/syntax/xp/Parser.class.php +++ b/src/main/php/xp/compiler/syntax/xp/Parser.class.php @@ -72,7 +72,8 @@ use xp\compiler\ast\ArmNode; use xp\compiler\ast\BracedExpressionNode; use xp\compiler\ast\YieldNode; -#line 76 "-" +use xp\compiler\ast\YieldFromNode; +#line 77 "-" /** * Generated parser class @@ -80,6 +81,7 @@ class Parser extends \text\parser\generic\AbstractParser { const T_ARROW= 257; const T_YIELD= 367; + const T_YIELD_FROM= 368; const T_BOOLEAN_OR= 414; const T_BOOLEAN_AND= 415; const T_ADD_EQUAL= 404; @@ -174,17 +176,18 @@ class Parser extends \text\parser\generic\AbstractParser { 98, 98, 98, 98, 100, 31, 102, 31, 31, 31, 31, 104, 31, 105, 31, 106, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 112, 31, 99, 99, 103, 103, 113, 113, 114, - 114, 36, 116, 36, 36, 36, 36, 36, 36, 115, - 115, 97, 97, 117, 117, 119, 119, 118, 118, 107, + 31, 31, 112, 31, 99, 99, 103, 103, 113, 113, + 114, 114, 36, 116, 36, 36, 36, 36, 36, 36, + 115, 115, 97, 97, 117, 117, 119, 119, 118, 118, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 108, 108, 108, 108, 108, 108, 108, 108, 109, + 107, 107, 108, 108, 108, 108, 108, 108, 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 110, 110, 110, 110, 110, 110, 111, 111, 101, - 101, 120, 120, 122, 121, 121, 124, 121, 125, 121, - 123, 123, 10, 10, 10, 32, 32, 32, 12, 12, - 95, 96, 126, 126, 127, 127, 21, 21, 49, 49, - 128, 128, 129, 129, 129, 129, 129, 129, 129, 129, + 109, 109, 110, 110, 110, 110, 110, 110, 111, 111, + 101, 101, 120, 120, 122, 121, 121, 124, 121, 125, + 121, 123, 123, 10, 10, 10, 32, 32, 32, 12, + 12, 95, 96, 126, 126, 127, 127, 21, 21, 49, + 49, 128, 128, 129, 129, 129, 129, 129, 129, 129, + 129, ); protected static $yyLen= array(2, 3, 0, 0, 4, 0, 1, 1, 2, 5, 6, @@ -207,1437 +210,1445 @@ class Parser extends \text\parser\generic\AbstractParser { 5, 0, 1, 1, 3, 0, 1, 5, 4, 4, 1, 4, 1, 1, 0, 3, 0, 3, 4, 4, 2, 0, 4, 0, 5, 0, 6, 2, 1, 2, - 4, 3, 1, 1, 1, 1, 1, 5, 3, 3, - 3, 0, 7, 2, 4, 0, 1, 1, 3, 1, - 3, 1, 0, 4, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 0, 1, 3, 3, 3, + 4, 2, 3, 1, 1, 1, 1, 1, 5, 3, + 3, 3, 0, 7, 2, 4, 0, 1, 1, 3, + 1, 3, 1, 0, 4, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 0, 1, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, - 4, 3, 3, 3, 3, 3, 3, 4, 4, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, - 3, 2, 2, 2, 2, 2, 2, 2, 2, 0, - 1, 1, 2, 0, 4, 2, 0, 6, 0, 4, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, - 3, 4, 1, 3, 1, 3, 1, 3, 0, 1, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 4, 3, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 1, 1, 2, 0, 4, 2, 0, 6, 0, + 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 4, 3, 4, 1, 3, 1, 3, 1, 3, 0, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 1, ); protected static $yyDefRed= array(0, 3, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 293, 0, 0, 295, 294, 0, 15, 0, 313, - 315, 314, 317, 319, 318, 320, 316, 1, 0, 68, - 0, 311, 8, 0, 0, 4, 0, 0, 0, 0, - 0, 69, 20, 24, 22, 312, 18, 19, 0, 0, + 0, 294, 0, 0, 296, 295, 0, 15, 0, 314, + 316, 315, 318, 320, 319, 321, 317, 1, 0, 68, + 0, 312, 8, 0, 0, 4, 0, 0, 0, 0, + 0, 69, 20, 24, 22, 313, 18, 19, 0, 0, 0, 14, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 9, 0, 0, 0, 70, 67, 0, 0, 0, 0, 11, 12, 10, - 74, 75, 223, 0, 0, 229, 225, 228, 226, 227, + 74, 75, 224, 0, 0, 230, 226, 229, 227, 228, 0, 0, 81, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 73, - 0, 0, 296, 0, 297, 298, 0, 303, 27, 0, - 0, 0, 31, 35, 0, 0, 232, 0, 0, 0, - 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 230, 0, 231, 203, 204, 205, 206, - 207, 0, 0, 234, 0, 0, 79, 80, 83, 84, - 0, 78, 0, 0, 0, 0, 300, 29, 35, 0, + 0, 0, 297, 0, 298, 299, 0, 304, 27, 0, + 0, 0, 31, 35, 0, 0, 0, 233, 0, 0, + 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 231, 0, 232, 204, 205, 206, + 207, 208, 0, 0, 235, 0, 0, 79, 80, 83, + 84, 0, 78, 0, 0, 0, 0, 301, 29, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 198, 0, 196, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 218, 0, 194, 0, 0, + 0, 0, 0, 198, 0, 196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 219, 0, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 278, 279, - 0, 284, 292, 291, 289, 191, 281, 0, 0, 0, - 224, 0, 0, 306, 0, 301, 304, 0, 308, 0, - 0, 25, 0, 34, 36, 37, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 186, 188, 0, 100, 0, 0, 0, 220, 0, 0, + 279, 280, 0, 285, 293, 292, 290, 191, 282, 0, + 0, 0, 225, 0, 0, 307, 0, 302, 305, 0, + 309, 0, 0, 25, 0, 34, 36, 37, 0, 0, + 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 186, 188, 0, 100, 0, 0, 0, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 211, 0, 202, 0, 0, - 283, 0, 175, 0, 0, 237, 235, 82, 302, 21, - 0, 0, 0, 0, 0, 0, 0, 23, 0, 35, - 0, 0, 193, 0, 0, 0, 0, 0, 189, 0, - 221, 190, 219, 0, 0, 184, 181, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 287, 113, 0, - 131, 117, 121, 123, 119, 127, 129, 115, 125, 0, - 0, 0, 0, 111, 0, 63, 0, 0, 0, 0, - 0, 0, 35, 45, 0, 43, 0, 0, 0, 0, - 0, 0, 0, 212, 0, 195, 0, 285, 290, 0, - 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 38, 137, 112, 0, 0, 61, 59, - 103, 104, 105, 106, 107, 108, 0, 0, 0, 0, - 0, 0, 0, 179, 180, 197, 215, 0, 0, 0, - 0, 0, 0, 0, 138, 0, 0, 0, 0, 155, - 0, 0, 128, 130, 0, 0, 0, 0, 142, 222, - 0, 0, 93, 0, 0, 0, 0, 0, 65, 0, - 48, 0, 0, 53, 33, 0, 178, 213, 182, 288, - 114, 0, 0, 0, 0, 132, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 50, 0, 98, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, - 55, 0, 49, 54, 47, 0, 0, 139, 0, 0, - 0, 156, 0, 0, 0, 0, 0, 0, 143, 0, - 0, 0, 0, 94, 96, 95, 0, 0, 0, 0, - 0, 164, 170, 134, 0, 161, 162, 0, 0, 122, - 0, 146, 0, 0, 0, 0, 97, 102, 0, 85, - 0, 64, 0, 0, 0, 56, 0, 0, 160, 169, - 163, 135, 0, 0, 0, 158, 116, 151, 153, 0, - 0, 149, 136, 0, 0, 62, 60, 0, 0, 0, - 0, 124, 120, 0, 0, 0, 126, 150, 87, 86, - 66, 166, 0, 0, 0, 159, 0, 0, 0, 0, - 171, 118, 0, 154, 167, 0, 152, 0, 0, 165, + 0, 0, 0, 0, 0, 0, 0, 212, 0, 203, + 0, 0, 284, 0, 175, 0, 0, 238, 236, 82, + 303, 21, 0, 0, 0, 0, 0, 0, 0, 23, + 0, 35, 0, 0, 193, 0, 0, 0, 0, 0, + 189, 0, 222, 190, 220, 0, 0, 184, 181, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 288, + 113, 0, 131, 117, 121, 123, 119, 127, 129, 115, + 125, 0, 0, 0, 0, 111, 0, 63, 0, 0, + 0, 0, 0, 0, 35, 45, 0, 43, 0, 0, + 0, 0, 0, 0, 0, 213, 0, 195, 0, 286, + 291, 0, 0, 133, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 38, 137, 112, 0, 0, + 61, 59, 103, 104, 105, 106, 107, 108, 0, 0, + 0, 0, 0, 0, 0, 179, 180, 197, 216, 0, + 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, + 0, 155, 0, 0, 128, 130, 0, 0, 0, 0, + 142, 223, 0, 0, 93, 0, 0, 0, 0, 0, + 65, 0, 48, 0, 0, 53, 33, 0, 178, 214, + 182, 289, 114, 0, 0, 0, 0, 132, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, + 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 52, 55, 0, 49, 54, 47, 0, 0, 139, + 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, + 143, 0, 0, 0, 0, 94, 96, 95, 0, 0, + 0, 0, 0, 164, 170, 134, 0, 161, 162, 0, + 0, 122, 0, 146, 0, 0, 0, 0, 97, 102, + 0, 85, 0, 64, 0, 0, 0, 56, 0, 0, + 160, 169, 163, 135, 0, 0, 0, 158, 116, 151, + 153, 0, 0, 149, 136, 0, 0, 62, 60, 0, + 0, 0, 0, 124, 120, 0, 0, 0, 126, 150, + 87, 86, 66, 166, 0, 0, 0, 159, 0, 0, + 0, 0, 171, 118, 0, 154, 167, 0, 152, 0, + 0, 165, ); protected static $yyDgoto= array(2, - 3, 6, 28, 141, 4, 7, 8, 17, 53, 18, - 253, 113, 61, 99, 121, 171, 63, 258, 62, 101, - 123, 394, 254, 255, 256, 381, 259, 260, 336, 337, - 382, 192, 351, 392, 483, 143, 473, 484, 516, 478, - 543, 572, 477, 474, 428, 437, 519, 41, 30, 42, - 58, 94, 95, 96, 144, 475, 476, 383, 384, 294, - 411, 421, 461, 587, 415, 418, 502, 416, 417, 422, - 590, 419, 420, 414, 452, 554, 454, 468, 455, 469, - 591, 592, 605, 606, 604, 555, 579, 556, 557, 577, - 613, 578, 145, 264, 115, 116, 146, 358, 271, 186, - 236, 187, 194, 181, 280, 268, 147, 148, 149, 150, - 151, 448, 195, 196, 152, 103, 153, 154, 327, 237, - 238, 319, 239, 410, 320, 117, 118, 31, 32, + 3, 6, 28, 142, 4, 7, 8, 17, 53, 18, + 255, 113, 61, 99, 121, 172, 63, 260, 62, 101, + 123, 396, 256, 257, 258, 383, 261, 262, 338, 339, + 384, 194, 353, 394, 485, 144, 475, 486, 518, 480, + 545, 574, 479, 476, 430, 439, 521, 41, 30, 42, + 58, 94, 95, 96, 145, 477, 478, 385, 386, 296, + 413, 423, 463, 589, 417, 420, 504, 418, 419, 424, + 592, 421, 422, 416, 454, 556, 456, 470, 457, 471, + 593, 594, 607, 608, 606, 557, 581, 558, 559, 579, + 615, 580, 146, 266, 115, 116, 147, 360, 273, 188, + 238, 189, 196, 183, 282, 270, 148, 149, 150, 151, + 152, 450, 197, 198, 153, 103, 154, 155, 329, 239, + 240, 321, 241, 412, 322, 117, 118, 31, 32, ); - protected static $yySindex = array( -235, - 0, 0, -217, 82, 224, 923, -217, 0, 80, 94, - 98, 0, -209, -209, 0, 0, 101, 0, 118, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 271, 0, - 993, 0, 0, 82, 82, 0, -24, 166, -28, 182, - 30, 0, 0, 0, 0, 0, 0, 0, -28, -28, - -28, 0, 157, 0, 110, 129, 0, 204, 118, 993, - 82, 82, 82, 199, 0, 215, 254, 0, 82, 82, - 567, 0, 0, 269, 113, 137, 113, 0, 0, 0, - 0, 0, 0, 82, 153, 0, 0, 0, 0, 0, - 279, 47, 0, 420, 370, 0, 334, 82, 154, 82, - 353, 154, 5217, 443, 646, 646, -215, 0, -155, 0, - 210, 427, 0, 441, 0, 0, 191, 0, 0, 82, - 417, 516, 0, 0, 442, 5507, 0, 5507, 5507, 5507, - 5507, 5507, 5507, 0, 5507, 397, 529, 0, 5538, 466, - 189, 3842, -36, 0, 547, 0, 0, 0, 0, 0, - 0, 508, 566, 0, 5507, 80, 0, 0, 0, 0, - 555, 0, 82, 72, 530, 334, 0, 0, 0, 82, - 1303, 369, 321, 2939, -85, -85, -91, -85, -85, -85, - 72, 0, 5507, 0, 5507, 377, -36, 427, 0, -51, - 2769, 128, 287, 594, 593, 0, -21, 0, 5507, 5507, - 5507, 5507, 5507, 5507, 5507, 5507, 5507, 5507, 5507, 5507, - 5507, 5507, 5507, 5507, 5228, 5257, 5071, 5507, 5158, 5507, - 5507, 5507, 5507, 5507, 5507, 5507, 82, 5507, 0, 0, - 72, 0, 0, 0, 0, 0, 0, -36, -209, 5507, - 0, 239, 599, 0, 263, 0, 0, 1331, 0, 524, - 394, 0, 127, 0, 0, 0, 0, 549, 31, 0, - 5507, 632, 441, -36, 552, 556, 3842, 5507, 3842, 5406, - 0, 0, -36, 0, 617, 377, -21, 0, 377, -228, - 4003, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, - 4038, 4038, 3842, 622, 91, 310, 812, 5507, 183, 5507, - 183, 5507, 5507, 141, 141, 5507, 5507, 141, 141, 205, - 205, -9, -9, -9, -91, 0, -85, 0, 5507, 5507, - 0, 642, 0, 631, 529, 0, 0, 0, 0, 0, - 557, 440, 424, 444, -12, 578, 662, 0, 369, 0, - 77, 5507, 0, 5507, 90, 665, 557, 3842, 0, 5507, - 0, 0, 0, 582, 663, 0, 0, -36, 5507, 4038, - 4038, 141, 141, 141, 141, 615, 673, 0, 0, 4, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 675, - 591, 2966, 557, 0, 656, 0, 679, 683, 409, 633, - 617, 603, 0, 0, 5507, 0, 754, 686, 604, 605, - -36, 607, 3842, 0, 5507, 0, 77, 0, 0, 5507, - 5507, 0, 388, 5507, 694, 695, 523, 696, 680, 682, - 698, 702, 410, 0, 0, 0, 928, 104, 0, 0, - 0, 0, 0, 0, 0, 0, 709, 104, 697, 493, - 1370, 2993, 578, 0, 0, 0, 0, -36, 713, 718, - 704, 557, 700, 386, 0, 3158, 5507, 5507, 557, 0, - 403, 429, 0, 0, 5507, 5507, 712, 425, 0, 0, - 715, 371, 0, 735, 737, 70, 89, 89, 0, 689, - 0, 38, -102, 0, 0, 578, 0, 0, 0, 0, - 0, 664, 5507, 388, 676, 0, 742, 3378, 677, 763, - 760, 446, 3405, 3543, 5507, 410, 703, 0, 545, 0, - 502, 104, 494, 617, 104, 765, 737, 784, 104, 0, - 0, 557, 0, 0, 0, 160, 3842, 0, 557, 5507, - 523, 0, 5507, 498, 5507, 523, 710, 3842, 0, 557, - 617, 82, -47, 0, 0, 0, 737, 502, 502, 798, - 717, 0, 0, 0, 160, 0, 0, 723, 781, 0, - 3570, 0, 3597, 479, 175, 726, 0, 0, 5507, 0, - 557, 0, -47, -47, 502, 0, 816, 729, 0, 0, - 0, 0, 5507, 799, 523, 0, 0, 0, 0, 736, - 175, 0, 0, 3707, 743, 0, 0, -47, 82, 557, - 819, 0, 0, 523, 5507, 804, 0, 0, 0, 0, - 0, 0, -107, 746, 523, 0, 3805, 557, 82, 832, - 0, 0, 557, 0, 0, 752, 0, 557, 755, 0, + protected static $yySindex = array( -289, + 0, 0, -283, -152, -106, 478, -283, 0, 59, 75, + 76, 0, -163, -163, 0, 0, 96, 0, 63, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 305, 0, + 610, 0, 0, -152, -152, 0, -41, 100, -27, -207, + -1, 0, 0, 0, 0, 0, 0, 0, -27, -27, + -27, 0, 139, 0, 185, 147, 0, 181, 63, 610, + -152, -152, -152, 167, 0, 198, 212, 0, -152, -152, + 268, 0, 0, 219, 24, 33, 24, 0, 0, 0, + 0, 0, 0, -152, 124, 0, 0, 0, 0, 0, + 300, -96, 0, 365, 396, 0, -19, -152, 105, -152, + 319, 105, 5261, 428, 598, 598, -212, 0, -157, 0, + 188, 450, 0, 425, 0, 0, 68, 0, 0, -152, + 403, 490, 0, 0, 416, 5535, 5535, 0, 5535, 5535, + 5535, 5535, 5535, 5535, 0, 5535, 293, 514, 0, 5565, + 453, 184, 3707, -30, 0, 552, 0, 0, 0, 0, + 0, 0, 517, 572, 0, 5535, 59, 0, 0, 0, + 0, 558, 0, -152, 136, 531, -19, 0, 0, 0, + -152, 551, 370, 451, 2815, 3707, -87, -87, -53, -87, + -87, -87, 136, 0, 5535, 0, 5535, 394, -30, 450, + 0, -54, 2853, 28, 313, 618, 625, 0, -23, 0, + 5535, 5535, 5535, 5535, 5535, 5535, 5535, 5535, 5535, 5535, + 5535, 5535, 5535, 5535, 5535, 5535, 5290, 5330, 5097, 5535, + 5169, 5535, 5535, 5535, 5535, 5535, 5535, 5535, -152, 5535, + 0, 0, 136, 0, 0, 0, 0, 0, 0, -30, + -163, 5535, 0, -86, 636, 0, 493, 0, 0, 703, + 0, 560, 418, 0, 81, 0, 0, 0, 0, 559, + 304, 0, 5535, 646, 425, -30, 564, 565, 3707, 5535, + 3707, 5299, 0, 0, -30, 0, 630, 394, -23, 0, + 394, 225, 3838, 3875, 3875, 3875, 3875, 3875, 3875, 3875, + 3875, 3875, 3875, 3875, 3707, 635, 1214, 333, 2759, 5535, + 102, 5535, 102, 5535, 5535, 146, 146, 5535, 5535, 146, + 146, 150, 150, -76, -76, -76, -53, 0, -87, 0, + 5535, 5535, 0, 655, 0, 645, 514, 0, 0, 0, + 0, 0, 540, 448, 524, 455, -78, 593, 678, 0, + 370, 0, 976, 5535, 0, 5535, -13, 679, 540, 3707, + 0, 5535, 0, 0, 0, 594, 681, 0, 0, -30, + 5535, 3875, 3875, 146, 146, 146, 146, 629, 683, 0, + 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 686, 602, 2983, 540, 0, 667, 0, 689, 690, + 315, 647, 630, 614, 0, 0, 5535, 0, 836, 698, + 615, 621, -30, 622, 3707, 0, 5535, 0, 976, 0, + 0, 5535, 5535, 0, 408, 5535, 709, 715, 295, 717, + 684, 705, 727, 728, 434, 0, 0, 0, 555, -20, + 0, 0, 0, 0, 0, 0, 0, 0, 739, -20, + 737, 527, 1398, 3023, 593, 0, 0, 0, 0, -30, + 756, 758, 755, 540, 760, 422, 0, 3149, 5535, 5535, + 540, 0, 461, 483, 0, 0, 5535, 5535, 763, 438, + 0, 0, 766, 377, 0, 788, 793, -230, 129, 129, + 0, 750, 0, 17, -56, 0, 0, 593, 0, 0, + 0, 0, 0, 721, 5535, 408, 724, 0, 789, 3246, + 725, 809, 807, 488, 3281, 3408, 5535, 434, 732, 0, + 596, 0, 536, -20, 525, 630, -20, 823, 793, 825, + -20, 0, 0, 540, 0, 0, 0, 277, 3707, 0, + 540, 5535, 295, 0, 5535, 528, 5535, 295, 744, 3707, + 0, 540, 630, -152, -39, 0, 0, 0, 793, 536, + 536, 828, 745, 0, 0, 0, 277, 0, 0, 751, + 816, 0, 3445, 0, 3542, 506, 253, 753, 0, 0, + 5535, 0, 540, 0, -39, -39, 536, 0, 847, 765, + 0, 0, 0, 0, 5535, 830, 295, 0, 0, 0, + 0, 771, 253, 0, 0, 3579, 773, 0, 0, -39, + -152, 540, 858, 0, 0, 295, 5535, 846, 0, 0, + 0, 0, 0, 0, -105, 784, 295, 0, 3680, 540, + -152, 873, 0, 0, 540, 0, 0, 794, 0, 540, + 799, 0, ); - protected static $yyRindex= array( 845, - 0, 0, 1739, 0, 0, 277, 1918, 0, 753, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + protected static $yyRindex= array( 1769, + 0, 0, 1806, 0, 0, 332, 2084, 0, 748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -39, 59, 0, 0, 316, 0, 661, + 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 927, -54, 758, -54, 0, 0, 0, - 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 759, 0, - 0, 759, 794, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 283, 0, 0, 0, 0, 0, 0, - 0, 106, 0, 0, 0, 2513, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2032, 1911, 985, 850, 0, - 0, 956, 1703, 0, 468, 0, 0, 0, 0, 0, - 0, 0, -41, 0, 851, -33, 0, 0, 0, 0, + 0, 0, 0, -37, 380, 0, 0, 38, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -182, 769, 1138, 965, 2103, 2211, 2734, 2296, 2333, 2434, - 0, 0, 0, 0, 0, 0, 1703, 5419, 1771, -30, - 0, 1582, 0, 0, -23, 0, 639, 0, 0, 0, + 0, 0, 0, 878, -100, 803, -100, 0, 0, 0, + 0, 0, 0, 0, -29, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 806, 0, + 0, 806, 839, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 194, 0, 0, 0, 0, 0, 0, + 0, 309, 0, 0, 0, 2598, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2001, 1903, 916, 892, + 0, 0, 952, 1605, 0, 486, 0, 0, 0, 0, + 0, 0, 0, -10, 0, 893, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 843, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 214, 810, 1052, 109, 390, 2038, 2123, 2687, 2166, + 2300, 2423, 0, 0, 0, 0, 0, 0, 1605, 5417, + 1735, -28, 0, 1477, 0, 0, 8, 0, 692, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1882, 0, 1444, - 0, 18, 0, 0, 0, 0, 0, -182, 0, 968, - 0, 0, 0, 0, 0, 0, 457, 0, 777, 0, - 0, 813, 0, 1703, 814, 821, 51, 851, 88, 0, - 0, 0, 1703, 0, 9, 0, 0, 0, 0, 0, - 5, -16, 48, 131, 580, 584, 1093, 1186, 1224, 1435, - 1443, 1563, 1711, 0, 280, 887, 4945, 0, 4961, 0, - 4988, 0, 0, 3069, 4435, 0, 0, 4494, 4523, 4301, - 4338, 4108, 4227, 4264, 2842, 0, 2542, 0, 822, 851, - 0, 1374, 0, 0, 0, 0, 0, 0, 0, 0, - 789, 0, -6, 0, 0, 29, 0, 0, 0, 0, - 699, 851, 0, 791, 0, 0, 789, 1404, 0, 0, - 0, 0, 0, 0, 1472, 0, 0, 1703, 0, 1713, - 1810, 4562, 4731, 4768, 4822, 0, 0, 0, 0, 0, + 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -110, 0, 0, 0, 0, 807, 0, 0, - 874, 0, 0, 0, 0, 0, 181, 0, 0, 0, - 1703, 0, 105, 0, 851, 0, 4752, 0, 0, 851, - 875, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 894, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1862, + 0, 1032, 0, -18, 0, 0, 0, 0, 0, 214, + 0, 1648, 0, 0, 0, 0, 0, 0, 569, 0, + 822, 0, 0, 859, 0, 1605, 861, 864, 78, 893, + 413, 0, 0, 0, 1605, 0, 85, 0, 0, 0, + 0, 0, 673, -12, 97, 107, 786, 887, 1138, 1352, + 1449, 1499, 1563, 1645, 907, 0, 1008, -7, 4822, 0, + 4838, 0, 4862, 0, 0, 4264, 4395, 0, 0, 4432, + 4560, 4136, 4174, 3965, 4009, 4099, 2724, 0, 2557, 0, + 875, 893, 0, 1307, 0, 0, 0, 0, 0, 0, + 0, 0, 848, 0, 4, 0, 0, 412, 0, 0, + 0, 0, 4764, 893, 0, 866, 0, 0, 848, 923, + 0, 0, 0, 0, 0, 0, 1437, 0, 0, 1605, + 0, 1700, 1743, 4597, 4654, 4670, 4694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -182, 0, 1316, 0, 0, 0, 0, 1703, 0, 0, - 0, 789, 477, 0, 0, 0, 878, 0, 789, 0, + 0, 0, 0, 0, -92, 0, 0, 0, 0, 869, + 0, 0, 930, 0, 0, 0, 0, 0, -108, 0, + 0, 0, 1605, 0, 65, 0, 893, 0, 4990, 0, + 0, 893, 935, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -7, 0, 0, 898, 0, 899, 899, 0, 0, - 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, + 0, 0, 214, 0, 1179, 0, 0, 0, 0, 1605, + 0, 0, 0, 848, 503, 0, 0, 0, 938, 0, + 848, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 426, 0, 0, 957, 0, 958, 958, + 0, 0, 0, 0, 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 0, 0, -7, 0, 0, 901, 0, 894, 0, - 0, 789, 0, 0, 0, 0, 484, 0, 789, 878, - 0, 0, 0, 0, 0, 0, 0, 485, 0, 789, - -7, 0, 0, 0, 0, 0, 902, 192, 192, 0, - 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, - 0, 0, 0, 405, 824, 0, 0, 0, 0, 0, - 789, 0, 0, 0, 192, 0, 0, 0, 0, 0, - 0, 0, 851, 0, 0, 0, 0, 0, 0, 0, - 826, 0, 0, 0, 0, 0, 0, 0, 0, 789, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, - 0, 0, -104, 0, 0, 0, 0, 789, 0, 0, + 0, 0, 651, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 366, 0, 0, 426, 0, 0, 979, 0, + 954, 0, 0, 848, 0, 0, 0, 0, 533, 0, + 848, 938, 0, 0, 0, 0, 0, 0, 0, 554, + 0, 848, 426, 0, 0, 0, 0, 0, 981, 366, + 366, 0, 0, 0, 0, 0, 339, 0, 0, 0, + 0, 0, 0, 0, 0, 410, 899, 0, 0, 0, + 0, 0, 848, 0, 0, 0, 366, 0, 0, 0, + 0, 0, 0, 0, 893, 0, 0, 0, 0, 0, + 0, 0, 900, 0, 0, 0, 0, 0, 0, 0, + 0, 848, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -55, + 0, 0, 0, 0, -55, 0, 0, 0, 0, 848, + 0, 0, ); protected static $yyGindex= array(0, - 0, 0, 0, -4, 0, 0, 937, 561, 568, 32, - 946, -60, 0, 877, 853, -143, 0, 0, 0, 0, - -114, -312, 0, 0, 0, 3080, 0, 618, 0, 0, - 76, 294, -372, 0, 0, -58, -399, 475, 488, 0, - -183, -167, 0, 454, 0, 0, 0, 0, 915, 917, - 0, 507, 0, 868, -150, -76, 367, 0, 140, -211, - 0, 0, 471, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 489, 472, - 0, 391, 0, 0, 0, 0, 0, 436, 448, 0, - 0, 0, 0, 0, 803, 815, 634, 0, 291, 0, - 332, 0, 808, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 724, 0, 0, 0, 762, 0, 770, - 0, 0, 0, 0, 0, 0, 867, 0, 986, + 0, 0, 0, -4, 0, 0, 1010, 626, 599, 39, + 1020, -60, 0, 950, 926, -143, 0, 0, 0, 0, + -116, -368, 0, 0, 0, 2065, 0, 688, 0, 0, + 83, 164, 46, 0, 0, -64, -355, 545, 553, 0, + -452, 12, 0, 510, 0, 0, 0, 0, 974, 980, + 0, 538, 0, 937, -138, 112, -26, 0, -357, -217, + 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 539, 542, + 0, 454, 0, 0, 0, 0, 0, 487, 494, 0, + 0, 0, 0, 0, 870, 871, 708, 0, 173, 0, + 57, 0, 857, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 778, 0, 0, 0, 817, 0, 824, + 0, 0, 0, 0, 0, 0, 895, 0, 1034, ); protected static $yyTable = array(11, - 75, 76, 77, 235, 243, 168, 16, 222, 97, 234, - 222, 570, 93, 52, 110, 222, 619, 217, 439, 13, - 109, 50, 523, 104, 210, 248, 310, 210, 323, 47, - 48, 355, 299, 57, 228, 57, 57, 119, 480, 122, - 228, 210, 210, 413, 159, 209, 93, 93, 209, 57, - 12, 233, 57, 17, 232, 249, 74, 74, 74, 122, - 299, 236, 209, 209, 81, 82, 92, 1, 26, 112, - 54, 356, 32, 59, 339, 571, 210, 309, 165, 74, - 65, 54, 54, 233, 17, 57, 5, 32, 240, 340, - 15, 240, 74, 74, 238, 74, 521, 209, 17, 510, - 92, 92, 17, 309, 161, 240, 240, 366, 210, 122, - 236, 357, 544, 225, 214, 74, 228, 346, 223, 221, - 262, 222, 60, 224, 160, 34, 412, 225, 214, 209, - 487, 239, 223, 221, 190, 222, 217, 224, 219, 35, - 240, 546, 236, 238, 91, 58, 39, 127, 58, 309, - 217, 17, 219, 32, 16, 34, 36, 482, 244, 74, - 522, 74, 112, 58, 307, 74, 316, 69, 567, 367, - 213, 241, 240, 525, 241, 238, 74, 225, 142, 112, - 239, 40, 223, 221, 213, 222, 70, 224, 241, 241, - 274, 398, 74, 399, 112, 310, 397, 58, 34, 451, - 212, 174, 228, 175, 176, 177, 178, 179, 180, 569, - 182, 51, 239, 105, 191, 68, 228, 112, 165, 225, - 227, 310, 74, 241, 223, 221, 74, 222, 307, 224, - 142, 12, 620, 217, 166, 310, 310, 310, 9, 231, - 210, 225, 217, 71, 219, 231, 223, 388, 74, 441, - 101, 224, 167, 17, 449, 241, 26, 78, 267, 450, - 269, 209, 110, 110, 10, 57, 228, 310, 109, 109, - 322, 15, 74, 79, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 295, 296, 297, - 299, 301, 304, 305, 308, 309, 310, 311, 312, 313, - 314, 315, 227, 317, 240, 39, 497, 389, 228, 299, - 229, 230, 80, 17, 101, 293, 229, 230, 278, 390, - 266, 231, 168, 266, 168, 17, 305, 391, 97, 168, - 228, 9, 168, 17, 168, 16, 341, 266, 266, 106, - 266, 9, 266, 142, 305, 348, 225, 214, 9, 324, - 325, 223, 221, 165, 222, 329, 224, 10, 198, 71, - 184, 58, 307, 9, 573, 574, 34, 10, 471, 217, - 16, 219, 266, 360, 10, 361, 17, 362, 363, 559, - 168, 364, 365, 233, 17, 49, 333, 241, 227, 10, - 114, 598, 229, 230, 293, 142, 111, 210, 210, 513, - 517, 517, 227, 266, 266, 596, 597, 231, 71, 514, - 110, 226, 10, 109, 168, 168, 509, 142, 209, 142, - 515, 231, 98, 74, 112, 403, 495, 568, 472, 494, - 611, 350, 601, 74, 407, 228, 184, 157, 547, 157, - 309, 55, 34, 472, 157, 435, 100, 157, 101, 157, - 433, 431, 227, 432, 183, 434, 107, 245, 334, 114, - 108, 240, 240, 386, 120, 507, 309, 10, 506, 34, - 442, 231, 74, 74, 263, 124, 220, 218, 229, 230, - 142, 122, 155, 12, 164, 142, 293, 215, 216, 456, - 220, 218, 229, 230, 227, 157, 46, 226, 324, 325, - 44, 215, 216, 552, 553, 193, 13, 74, 173, 14, - 74, 226, 309, 231, 74, 44, 227, 140, 272, 163, - 140, 56, 426, 15, 141, 144, 173, 141, 144, 157, - 157, 165, 142, 498, 436, 231, 266, 74, 612, 169, - 503, 504, 229, 230, 241, 241, 335, 588, 589, 168, - 168, 168, 168, 168, 168, 130, 460, 140, 625, 170, - 173, 226, 139, 193, 172, 128, 352, 129, 527, 354, - 43, 44, 45, 37, 38, 168, 309, 309, 309, 44, - 538, 44, 220, 218, 229, 230, 185, 16, 197, 130, - 240, 140, 173, 9, 74, 343, 139, 318, 198, 128, - 241, 129, 168, 226, 349, 142, 229, 230, 561, 242, - 563, 157, 158, 83, 74, 105, 64, 66, 67, 10, - 242, 227, 246, 242, 243, 226, 275, 243, 257, 168, - 168, 168, 168, 270, 276, 168, 277, 242, 242, 328, - 231, 243, 243, 193, 594, 459, 331, 83, 131, 168, - 168, 168, 168, 332, 168, 168, 168, 83, 142, 168, - 168, 168, 168, 168, 157, 157, 157, 157, 157, 157, - 460, 342, 242, 338, 344, 460, 243, 350, 345, 359, - 617, 368, 131, 266, 266, 266, 266, 266, 183, 406, - 157, 168, 168, 266, 266, 266, 266, 266, 266, 385, - 393, 395, 405, 387, 242, 401, 404, 408, 243, 220, - 218, 229, 230, 409, 423, 424, 427, 157, 429, 168, - 215, 216, 430, 438, 460, 440, 443, 453, 444, 445, - 226, 447, 446, 457, 458, 462, 83, 465, 463, 201, - 464, 466, 201, 460, 157, 157, 157, 157, 479, 467, - 157, 309, 482, 489, 460, 481, 201, 201, 490, 201, - 493, 201, 491, 500, 157, 157, 157, 157, 501, 157, - 157, 157, 505, 508, 157, 511, 157, 157, 157, 488, - 512, 520, 173, 86, 87, 88, 89, 90, 526, 17, - 17, 201, 17, 17, 17, 17, 17, 17, 529, 17, - 530, 532, 533, 534, 541, 548, 157, 157, 10, 535, - 17, 17, 17, 17, 17, 17, 173, 86, 87, 88, - 89, 90, 542, 201, 549, 540, 85, 86, 87, 88, - 89, 90, 565, 545, 157, 135, 242, 562, 575, 583, - 243, 576, 10, 17, 19, 17, 17, 582, 225, 586, - 593, 600, 10, 223, 221, 599, 222, 602, 224, 615, - 607, 618, 138, 369, 370, 371, 91, 610, 134, 135, - 621, 217, 626, 219, 628, 17, 17, 17, 17, 630, - 30, 28, 372, 373, 374, 375, 172, 376, 377, 126, - 216, 172, 378, 41, 379, 216, 138, 369, 370, 371, - 176, 40, 134, 296, 297, 156, 86, 87, 88, 89, - 90, 298, 84, 109, 176, 172, 372, 373, 374, 375, - 309, 376, 377, 126, 132, 133, 378, 268, 379, 51, - 268, 10, 57, 176, 91, 2, 172, 228, 92, 88, - 145, 90, 89, 33, 268, 268, 309, 268, 147, 268, - 148, 29, 380, 102, 125, 201, 396, 524, 132, 133, - 309, 309, 309, 299, 299, 518, 299, 299, 299, 299, - 299, 299, 550, 299, 73, 72, 162, 539, 400, 268, - 268, 608, 528, 265, 299, 299, 380, 299, 299, 299, - 580, 84, 309, 242, 242, 266, 174, 243, 243, 174, - 353, 560, 581, 326, 279, 200, 564, 321, 200, 17, - 268, 268, 17, 19, 174, 0, 46, 299, 83, 299, - 299, 187, 187, 200, 187, 187, 187, 187, 187, 187, - 187, 187, 247, 20, 21, 22, 250, 24, 25, 0, - 26, 0, 187, 187, 187, 187, 187, 187, 174, 299, - 299, 299, 299, 0, 0, 603, 27, 200, 317, 0, - 0, 0, 17, 17, 17, 0, 0, 0, 0, 0, - 0, 0, 17, 0, 616, 187, 0, 187, 187, 0, - 174, 0, 17, 17, 17, 622, 0, 251, 0, 200, - 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 201, 201, 201, 201, 201, 0, 187, 187, - 187, 0, 201, 201, 201, 201, 201, 201, 0, 0, - 0, 0, 0, 227, 2, 2, 2, 2, 2, 2, - 0, 2, 0, 244, 0, 0, 244, 0, 0, 0, - 0, 0, 231, 268, 2, 2, 2, 0, 2, 0, - 244, 244, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 0, 17, 17, 17, 0, 17, 17, 17, 17, - 17, 17, 0, 17, 222, 222, 0, 0, 222, 222, - 222, 222, 222, 299, 222, 244, 299, 470, 86, 87, - 88, 89, 90, 0, 0, 222, 222, 17, 222, 222, - 17, 0, 20, 21, 22, 23, 24, 25, 0, 26, - 0, 220, 218, 229, 230, 0, 0, 244, 0, 0, - 0, 200, 215, 216, 0, 27, 246, 317, 17, 246, - 222, 222, 226, 0, 0, 0, 299, 299, 299, 0, - 0, 185, 0, 246, 246, 0, 299, 317, 317, 317, - 317, 317, 317, 317, 317, 0, 299, 299, 299, 0, - 0, 222, 222, 222, 245, 0, 299, 245, 0, 0, - 317, 0, 20, 21, 22, 23, 24, 25, 246, 26, - 0, 245, 245, 0, 0, 0, 0, 0, 0, 0, - 268, 268, 268, 268, 268, 27, 187, 0, 0, 317, - 268, 268, 268, 268, 268, 268, 0, 0, 0, 0, - 246, 0, 0, 0, 0, 187, 245, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 299, 299, 299, 299, - 299, 299, 299, 299, 299, 0, 0, 299, 299, 0, - 299, 299, 299, 299, 299, 299, 0, 299, 245, 244, - 0, 0, 32, 32, 0, 32, 32, 32, 32, 32, - 32, 32, 32, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 32, 32, 32, 32, 32, 32, 0, - 0, 0, 0, 0, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 19, 222, 187, 187, 0, 187, 187, - 187, 187, 187, 187, 187, 187, 32, 0, 32, 32, - 286, 286, 0, 0, 286, 286, 286, 286, 286, 286, - 286, 19, 0, 0, 0, 0, 0, 252, 0, 0, - 0, 286, 286, 286, 286, 286, 286, 0, 0, 32, - 32, 32, 246, 0, 214, 0, 0, 214, 0, 222, - 0, 0, 0, 0, 0, 330, 0, 0, 0, 0, - 19, 214, 214, 0, 286, 0, 286, 286, 222, 0, - 0, 0, 0, 0, 0, 247, 0, 17, 247, 0, - 245, 0, 0, 248, 176, 0, 248, 176, 0, 0, - 0, 0, 247, 247, 485, 0, 214, 286, 286, 286, - 248, 248, 176, 0, 0, 0, 244, 244, 183, 183, - 0, 0, 183, 183, 183, 183, 183, 183, 183, 0, - 0, 0, 0, 0, 0, 0, 0, 247, 214, 183, - 183, 183, 183, 183, 183, 248, 176, 222, 222, 222, - 222, 222, 222, 222, 222, 222, 0, 17, 222, 222, - 0, 222, 222, 222, 222, 222, 222, 222, 222, 247, - 0, 0, 183, 0, 183, 183, 0, 248, 176, 0, - 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 20, 21, 22, 250, 24, 25, 0, 26, - 0, 0, 0, 0, 0, 183, 183, 183, 0, 246, - 246, 0, 0, 249, 0, 27, 249, 0, 0, 0, - 20, 21, 22, 250, 24, 25, 0, 26, 99, 99, - 249, 249, 99, 99, 99, 99, 99, 32, 99, 0, - 286, 0, 0, 27, 0, 0, 251, 245, 245, 99, - 99, 99, 99, 99, 0, 0, 32, 0, 0, 20, - 21, 22, 250, 24, 25, 249, 26, 0, 0, 0, - 214, 0, 0, 0, 251, 0, 0, 0, 0, 0, - 0, 0, 27, 0, 99, 99, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 286, 0, 249, 0, 0, - 0, 247, 0, 0, 0, 0, 0, 0, 0, 248, - 0, 0, 0, 251, 286, 99, 99, 99, 0, 0, - 0, 0, 0, 0, 0, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 0, 0, 32, 32, 183, 32, - 32, 32, 32, 32, 32, 32, 32, 0, 0, 280, - 280, 0, 0, 280, 280, 280, 280, 280, 0, 280, - 0, 177, 0, 258, 177, 0, 258, 0, 0, 0, - 280, 280, 280, 280, 280, 280, 0, 0, 177, 177, - 258, 258, 0, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 0, 183, 286, 286, 0, 286, 286, 286, - 286, 286, 286, 286, 286, 280, 280, 0, 0, 0, - 0, 0, 183, 177, 0, 258, 0, 187, 187, 0, - 187, 187, 187, 187, 220, 187, 187, 187, 0, 249, - 0, 0, 0, 0, 0, 0, 280, 280, 280, 5, - 187, 187, 187, 187, 0, 177, 0, 258, 99, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 247, 247, - 259, 0, 0, 259, 0, 0, 248, 248, 0, 0, - 0, 187, 0, 0, 187, 0, 0, 259, 259, 0, - 0, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 0, 0, 183, 183, 0, 183, 183, 183, 183, 183, - 183, 183, 183, 99, 187, 0, 187, 0, 0, 0, - 0, 0, 259, 0, 0, 0, 0, 0, 0, 0, - 0, 99, 99, 0, 0, 0, 0, 0, 282, 282, - 0, 99, 282, 282, 282, 282, 282, 0, 282, 0, - 0, 0, 0, 0, 259, 0, 0, 0, 0, 282, - 282, 282, 282, 282, 282, 0, 0, 229, 229, 0, - 229, 0, 229, 229, 229, 229, 229, 229, 0, 280, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 258, - 229, 229, 229, 229, 282, 282, 249, 249, 0, 0, - 0, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 0, 0, 99, 99, 0, 99, 99, 99, 99, 99, - 99, 229, 99, 229, 229, 282, 282, 282, 6, 0, - 0, 0, 0, 0, 280, 0, 0, 0, 5, 5, - 5, 5, 5, 5, 0, 5, 0, 185, 0, 0, - 0, 0, 0, 280, 229, 0, 229, 0, 5, 5, - 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 259, 0, 222, 222, - 0, 0, 0, 222, 222, 222, 222, 0, 222, 0, - 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, - 0, 222, 222, 222, 222, 0, 0, 0, 0, 0, - 0, 187, 280, 280, 280, 280, 280, 280, 280, 280, - 280, 0, 0, 280, 280, 0, 280, 280, 280, 280, - 280, 280, 222, 280, 222, 222, 258, 258, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 282, 274, - 274, 0, 0, 274, 274, 274, 274, 274, 0, 274, - 0, 0, 0, 0, 0, 222, 0, 222, 0, 0, - 274, 274, 274, 274, 274, 274, 0, 0, 0, 0, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 0, - 0, 187, 187, 0, 187, 187, 187, 187, 187, 187, - 187, 187, 0, 282, 0, 274, 274, 6, 6, 6, - 6, 6, 6, 0, 6, 0, 0, 0, 0, 0, - 0, 0, 282, 0, 0, 0, 0, 6, 6, 6, - 6, 0, 229, 259, 259, 0, 274, 274, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 229, 0, 0, 0, 0, 0, 275, 275, 0, - 0, 275, 275, 275, 275, 275, 0, 275, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 275, 275, - 275, 275, 275, 275, 0, 0, 0, 0, 0, 0, - 0, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 0, 0, 282, 282, 0, 282, 282, 282, 282, 282, - 282, 0, 282, 275, 275, 0, 0, 0, 0, 0, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, - 0, 229, 229, 0, 229, 229, 229, 229, 229, 229, - 229, 229, 273, 273, 275, 275, 273, 273, 273, 273, - 273, 0, 273, 222, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 273, 273, 273, 273, 273, 273, 274, - 0, 0, 222, 0, 0, 0, 0, 0, 0, 276, - 276, 0, 0, 276, 276, 276, 276, 276, 0, 276, - 0, 0, 0, 0, 0, 0, 0, 0, 273, 273, + 75, 76, 77, 169, 50, 97, 93, 223, 16, 237, + 223, 223, 166, 1, 52, 236, 39, 245, 621, 572, + 5, 13, 26, 104, 325, 237, 250, 428, 211, 47, + 48, 211, 110, 269, 300, 57, 269, 119, 230, 122, + 93, 93, 59, 111, 128, 211, 211, 160, 218, 230, + 269, 269, 55, 269, 251, 269, 74, 74, 74, 122, + 234, 462, 300, 17, 81, 82, 92, 112, 525, 109, + 112, 112, 230, 415, 237, 523, 489, 54, 10, 74, + 211, 71, 234, 573, 482, 269, 269, 65, 54, 54, + 276, 60, 74, 74, 17, 74, 12, 575, 576, 515, + 92, 92, 162, 368, 34, 58, 237, 9, 58, 516, + 122, 167, 211, 195, 234, 74, 269, 269, 166, 527, + 35, 239, 264, 58, 600, 57, 40, 161, 57, 168, + 71, 348, 56, 10, 36, 192, 15, 241, 227, 524, + 241, 39, 91, 225, 223, 51, 224, 242, 226, 200, + 242, 310, 200, 12, 241, 241, 414, 58, 546, 246, + 74, 219, 74, 221, 242, 242, 74, 200, 318, 34, + 239, 112, 195, 326, 327, 462, 13, 310, 74, 14, + 462, 390, 227, 369, 105, 143, 227, 225, 223, 241, + 224, 225, 226, 15, 74, 453, 226, 68, 399, 242, + 16, 200, 239, 484, 70, 400, 320, 401, 175, 176, + 26, 177, 178, 179, 180, 181, 182, 571, 184, 112, + 71, 241, 193, 310, 74, 78, 112, 230, 74, 462, + 34, 242, 12, 200, 622, 229, 9, 306, 143, 9, + 9, 391, 69, 233, 211, 274, 326, 327, 462, 269, + 74, 443, 195, 392, 233, 306, 79, 16, 229, 462, + 114, 393, 10, 17, 218, 10, 10, 269, 451, 271, + 80, 230, 15, 452, 74, 230, 311, 233, 97, 324, + 110, 110, 310, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 297, 298, 299, 301, + 303, 306, 307, 310, 311, 312, 313, 314, 315, 316, + 317, 300, 319, 107, 231, 232, 280, 109, 109, 474, + 499, 58, 345, 17, 295, 231, 232, 131, 247, 141, + 114, 351, 186, 98, 140, 17, 16, 129, 34, 130, + 335, 57, 100, 17, 228, 343, 265, 341, 231, 232, + 185, 437, 143, 241, 350, 200, 435, 433, 83, 434, + 106, 436, 342, 242, 473, 200, 10, 308, 49, 227, + 216, 168, 16, 168, 225, 223, 17, 224, 168, 226, + 17, 168, 362, 168, 363, 83, 364, 365, 9, 235, + 366, 367, 219, 561, 221, 9, 269, 269, 269, 269, + 269, 211, 211, 295, 143, 108, 269, 269, 269, 269, + 269, 269, 336, 229, 10, 120, 408, 461, 337, 17, + 132, 10, 511, 17, 101, 74, 143, 570, 143, 168, + 202, 308, 233, 202, 405, 74, 110, 352, 441, 109, + 438, 124, 157, 409, 157, 311, 603, 202, 202, 157, + 354, 310, 157, 356, 157, 32, 240, 229, 230, 448, + 517, 229, 497, 168, 168, 496, 57, 156, 474, 57, + 32, 311, 17, 310, 74, 74, 233, 310, 509, 444, + 233, 508, 202, 122, 357, 311, 311, 311, 101, 143, + 186, 310, 310, 310, 143, 295, 34, 164, 458, 310, + 157, 222, 220, 231, 232, 240, 490, 165, 562, 74, + 241, 241, 74, 566, 202, 166, 74, 311, 57, 512, + 242, 242, 228, 310, 358, 170, 173, 85, 86, 87, + 88, 89, 90, 171, 157, 157, 32, 240, 173, 74, + 614, 143, 500, 140, 173, 310, 140, 231, 232, 505, + 506, 231, 232, 10, 174, 86, 87, 88, 89, 90, + 627, 548, 605, 388, 359, 308, 228, 91, 19, 34, + 228, 187, 131, 141, 141, 199, 141, 529, 173, 140, + 10, 618, 129, 166, 130, 331, 598, 599, 569, 540, + 519, 519, 624, 200, 144, 242, 74, 144, 168, 168, + 168, 168, 168, 168, 43, 44, 45, 136, 46, 243, + 173, 613, 44, 84, 143, 244, 74, 563, 105, 565, + 554, 555, 101, 248, 168, 590, 591, 44, 549, 259, + 83, 310, 310, 310, 139, 371, 372, 373, 37, 38, + 135, 19, 158, 159, 229, 83, 202, 64, 66, 67, + 272, 168, 277, 596, 374, 375, 376, 377, 278, 378, + 379, 126, 127, 233, 380, 132, 381, 143, 279, 157, + 157, 157, 157, 157, 157, 254, 330, 334, 168, 168, + 168, 168, 333, 340, 168, 344, 346, 347, 83, 619, + 352, 44, 361, 44, 370, 157, 133, 134, 168, 168, + 168, 168, 185, 168, 168, 168, 168, 387, 168, 168, + 168, 168, 168, 210, 389, 395, 210, 397, 406, 403, + 407, 410, 157, 411, 382, 425, 426, 429, 431, 432, + 210, 210, 222, 220, 231, 232, 442, 440, 445, 446, + 168, 168, 465, 217, 218, 447, 449, 455, 459, 157, + 157, 157, 157, 228, 460, 157, 464, 20, 21, 22, + 23, 24, 25, 466, 26, 210, 467, 468, 168, 157, + 157, 157, 157, 469, 157, 157, 157, 157, 481, 157, + 27, 157, 157, 157, 17, 17, 484, 17, 17, 17, + 17, 17, 17, 19, 17, 483, 491, 210, 492, 174, + 86, 87, 88, 89, 90, 17, 17, 17, 17, 17, + 17, 157, 157, 493, 472, 86, 87, 88, 89, 90, + 495, 502, 503, 507, 510, 10, 243, 332, 513, 243, + 20, 21, 22, 252, 24, 25, 514, 26, 17, 157, + 17, 17, 522, 243, 243, 528, 531, 532, 535, 534, + 536, 537, 136, 27, 542, 543, 544, 157, 86, 87, + 88, 89, 90, 550, 547, 551, 567, 564, 577, 578, + 17, 17, 17, 17, 585, 584, 588, 595, 243, 139, + 371, 372, 373, 10, 253, 135, 601, 602, 604, 20, + 21, 22, 23, 24, 25, 609, 26, 612, 617, 374, + 375, 376, 377, 620, 378, 379, 126, 127, 623, 380, + 243, 381, 27, 628, 300, 300, 630, 300, 300, 300, + 300, 300, 300, 632, 300, 30, 19, 244, 28, 210, + 244, 172, 217, 172, 41, 300, 300, 176, 300, 300, + 300, 133, 134, 84, 244, 244, 40, 177, 217, 297, + 177, 298, 187, 187, 299, 187, 187, 187, 187, 187, + 187, 187, 187, 215, 177, 177, 215, 176, 300, 382, + 300, 300, 109, 187, 187, 187, 187, 187, 187, 244, + 215, 215, 20, 21, 22, 252, 24, 25, 57, 26, + 172, 51, 174, 176, 91, 174, 172, 92, 88, 177, + 300, 300, 300, 300, 17, 27, 187, 17, 187, 187, + 174, 244, 227, 216, 145, 215, 33, 225, 223, 90, + 224, 89, 226, 147, 148, 29, 102, 125, 398, 526, + 552, 177, 520, 73, 530, 219, 253, 221, 72, 187, + 187, 187, 243, 582, 174, 163, 610, 215, 267, 541, + 583, 267, 267, 268, 402, 281, 355, 17, 17, 17, + 328, 249, 0, 323, 46, 267, 267, 17, 267, 215, + 267, 0, 176, 0, 0, 176, 174, 17, 17, 17, + 0, 0, 0, 0, 0, 0, 210, 17, 223, 223, + 176, 0, 223, 223, 223, 223, 223, 0, 223, 214, + 267, 230, 0, 0, 0, 0, 0, 0, 0, 223, + 223, 17, 223, 223, 17, 20, 21, 22, 252, 24, + 25, 0, 26, 0, 176, 0, 0, 0, 0, 0, + 0, 267, 267, 0, 300, 0, 0, 300, 27, 0, + 0, 0, 17, 244, 223, 223, 0, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 176, 17, 17, 17, + 0, 17, 17, 17, 17, 17, 17, 0, 17, 253, + 0, 0, 185, 0, 0, 223, 223, 223, 245, 215, + 0, 245, 0, 0, 0, 0, 0, 300, 300, 300, + 0, 0, 0, 0, 0, 245, 245, 300, 0, 243, + 243, 0, 0, 0, 0, 0, 0, 300, 300, 300, + 0, 0, 0, 0, 0, 32, 32, 300, 32, 32, + 32, 32, 32, 32, 32, 32, 0, 187, 0, 0, + 245, 0, 0, 0, 0, 0, 32, 32, 32, 32, + 32, 32, 0, 0, 0, 0, 187, 0, 0, 0, + 227, 216, 0, 0, 0, 225, 223, 0, 224, 0, + 226, 0, 245, 0, 267, 0, 0, 0, 0, 32, + 0, 32, 32, 219, 0, 221, 0, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 0, 229, 300, 300, + 0, 300, 300, 300, 300, 300, 300, 0, 300, 0, + 244, 244, 32, 32, 32, 0, 233, 215, 223, 0, + 0, 0, 0, 0, 0, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 0, 0, 187, 187, 0, 187, + 187, 187, 187, 187, 187, 187, 187, 0, 0, 230, + 0, 0, 0, 287, 287, 0, 0, 287, 287, 287, + 287, 287, 287, 287, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 223, 287, 287, 287, 287, 287, 287, + 0, 0, 0, 0, 0, 222, 220, 231, 232, 0, + 0, 0, 223, 0, 0, 0, 217, 218, 0, 0, + 0, 17, 247, 0, 245, 247, 228, 287, 0, 287, + 287, 0, 0, 0, 0, 0, 0, 0, 0, 247, + 247, 267, 267, 267, 267, 267, 0, 0, 0, 0, + 0, 267, 267, 267, 267, 267, 267, 0, 0, 0, + 287, 287, 287, 0, 0, 32, 0, 0, 0, 0, + 0, 0, 0, 0, 247, 0, 0, 0, 0, 0, + 0, 223, 223, 223, 223, 223, 223, 223, 223, 223, + 0, 17, 223, 223, 0, 223, 223, 223, 223, 223, + 223, 223, 223, 183, 183, 0, 247, 183, 183, 183, + 183, 183, 183, 183, 0, 0, 0, 0, 19, 246, + 32, 0, 246, 0, 183, 183, 183, 183, 183, 183, + 0, 0, 0, 0, 0, 0, 246, 246, 0, 32, + 0, 0, 0, 99, 99, 0, 0, 99, 99, 99, + 99, 99, 487, 99, 0, 229, 0, 183, 0, 183, + 183, 0, 0, 0, 99, 99, 99, 99, 99, 248, + 0, 246, 248, 0, 233, 0, 0, 0, 0, 0, + 0, 245, 245, 0, 0, 0, 248, 248, 0, 0, + 183, 183, 183, 287, 0, 0, 0, 0, 0, 99, + 99, 0, 0, 246, 0, 0, 0, 0, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 0, 0, 32, + 32, 248, 32, 32, 32, 32, 32, 32, 32, 32, + 99, 99, 99, 249, 0, 0, 249, 0, 247, 0, + 0, 0, 0, 222, 220, 231, 232, 0, 287, 0, + 249, 249, 0, 248, 217, 218, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 287, 0, 0, + 0, 281, 281, 0, 0, 281, 281, 281, 281, 281, + 0, 281, 0, 0, 0, 249, 0, 0, 0, 0, + 0, 0, 281, 281, 281, 281, 281, 281, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, + 252, 24, 25, 0, 26, 250, 0, 249, 250, 0, + 0, 0, 0, 183, 0, 0, 0, 281, 281, 0, + 27, 0, 250, 250, 0, 246, 287, 287, 287, 287, + 287, 287, 287, 287, 287, 0, 0, 287, 287, 0, + 287, 287, 287, 287, 287, 287, 287, 287, 281, 281, + 281, 253, 0, 99, 0, 0, 0, 250, 318, 0, + 259, 0, 0, 259, 0, 0, 0, 0, 183, 0, + 0, 0, 0, 0, 0, 248, 0, 259, 259, 0, + 0, 0, 0, 0, 0, 247, 247, 183, 0, 250, + 0, 187, 187, 0, 187, 187, 187, 187, 221, 187, + 187, 187, 0, 260, 0, 0, 260, 0, 99, 0, + 0, 0, 259, 0, 187, 187, 187, 187, 0, 0, + 260, 260, 0, 0, 0, 0, 99, 99, 0, 0, + 0, 0, 0, 0, 0, 0, 99, 0, 0, 249, + 0, 0, 0, 0, 259, 187, 0, 0, 187, 0, + 0, 0, 0, 0, 0, 260, 183, 183, 183, 183, + 183, 183, 183, 183, 183, 0, 0, 183, 183, 0, + 183, 183, 183, 183, 183, 183, 183, 183, 187, 2, + 187, 281, 246, 246, 0, 0, 0, 260, 0, 0, + 0, 0, 0, 0, 0, 0, 99, 99, 99, 99, + 99, 99, 99, 99, 99, 0, 0, 99, 99, 0, + 99, 99, 99, 99, 99, 99, 5, 99, 283, 283, + 0, 250, 283, 283, 283, 283, 283, 318, 283, 0, + 0, 0, 248, 248, 0, 0, 281, 0, 0, 283, + 283, 283, 283, 283, 283, 0, 0, 318, 318, 318, + 318, 318, 318, 318, 318, 281, 0, 0, 0, 230, + 230, 0, 230, 0, 230, 230, 230, 230, 230, 230, + 318, 0, 0, 0, 283, 283, 259, 0, 0, 0, + 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 249, 249, 0, 318, + 0, 0, 0, 0, 0, 283, 283, 283, 0, 0, + 0, 185, 0, 230, 0, 230, 230, 0, 0, 260, + 0, 0, 0, 0, 281, 281, 281, 281, 281, 281, + 281, 281, 281, 0, 0, 281, 281, 0, 281, 281, + 281, 281, 281, 281, 0, 281, 230, 0, 230, 0, + 0, 0, 0, 0, 0, 0, 0, 223, 223, 0, + 0, 0, 223, 223, 223, 223, 187, 223, 2, 2, + 2, 2, 2, 2, 0, 2, 0, 0, 250, 250, + 223, 223, 223, 223, 0, 187, 0, 0, 2, 2, + 2, 0, 2, 0, 275, 275, 0, 0, 275, 275, + 275, 275, 275, 0, 275, 5, 5, 5, 5, 5, + 5, 223, 5, 223, 223, 275, 275, 275, 275, 275, + 275, 0, 0, 0, 0, 5, 5, 5, 5, 0, + 0, 0, 0, 259, 259, 0, 0, 0, 283, 0, + 0, 0, 0, 0, 223, 0, 223, 0, 0, 0, + 275, 275, 0, 0, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 0, 0, 187, 187, 0, 187, 187, + 187, 187, 187, 187, 187, 187, 260, 260, 0, 276, + 276, 275, 275, 276, 276, 276, 276, 276, 0, 276, + 0, 0, 0, 283, 6, 0, 0, 0, 0, 0, 276, 276, 276, 276, 276, 276, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 274, 0, 0, 0, 0, 273, - 273, 0, 0, 0, 0, 276, 276, 0, 0, 0, - 0, 222, 222, 222, 222, 222, 222, 222, 222, 222, - 0, 17, 222, 222, 0, 222, 222, 222, 222, 222, - 222, 222, 222, 0, 0, 0, 276, 276, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 275, 0, 0, - 277, 277, 0, 0, 277, 277, 277, 277, 277, 0, - 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 277, 277, 277, 277, 277, 277, 0, 0, 0, + 0, 0, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 274, 274, 0, 0, 274, 274, 274, 274, - 274, 0, 0, 274, 274, 0, 274, 274, 274, 274, - 274, 274, 275, 274, 0, 0, 277, 277, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, - 199, 0, 273, 199, 199, 0, 199, 277, 277, 199, + 274, 0, 274, 0, 230, 276, 276, 0, 0, 0, + 0, 0, 0, 274, 274, 274, 274, 274, 274, 0, + 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 276, 276, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 274, 274, + 0, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 0, 0, 283, 283, 0, 283, 283, 283, 283, 283, + 283, 0, 283, 0, 0, 0, 0, 0, 0, 274, + 274, 0, 0, 0, 275, 0, 0, 0, 0, 0, + 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 0, 223, 230, 230, 0, 230, 230, 230, 230, + 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, + 0, 223, 0, 0, 0, 0, 277, 277, 0, 0, + 277, 277, 277, 277, 277, 0, 277, 0, 0, 275, + 0, 0, 0, 0, 0, 0, 0, 277, 277, 277, + 277, 277, 277, 6, 6, 6, 6, 6, 6, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 276, + 0, 0, 0, 6, 6, 6, 6, 0, 0, 0, + 0, 0, 277, 277, 0, 0, 0, 0, 0, 0, + 223, 223, 223, 223, 223, 223, 223, 223, 223, 0, + 17, 223, 223, 404, 223, 223, 223, 223, 223, 223, + 223, 223, 274, 277, 277, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 276, 0, 0, 275, 275, 0, + 0, 275, 275, 275, 275, 275, 0, 0, 275, 275, + 0, 275, 275, 275, 275, 275, 275, 0, 275, 278, + 278, 0, 0, 278, 278, 278, 278, 278, 0, 278, + 0, 0, 0, 0, 0, 0, 0, 274, 0, 0, + 278, 278, 278, 278, 278, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 199, 199, 199, 199, 199, 199, 0, 0, 265, 265, - 0, 0, 265, 265, 265, 265, 265, 0, 265, 276, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 265, - 265, 265, 265, 265, 265, 199, 199, 273, 0, 0, - 275, 275, 0, 0, 275, 275, 275, 275, 275, 0, - 0, 275, 275, 0, 275, 275, 275, 275, 275, 275, - 0, 275, 0, 0, 265, 265, 199, 199, 0, 0, - 0, 0, 0, 0, 276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 265, 265, 0, 0, 0, + 0, 0, 0, 0, 0, 278, 278, 0, 494, 0, + 0, 0, 276, 276, 0, 501, 276, 276, 276, 276, + 276, 0, 0, 276, 276, 0, 276, 276, 276, 276, + 276, 276, 0, 276, 0, 0, 278, 278, 0, 0, + 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, + 0, 0, 0, 0, 0, 274, 274, 0, 0, 274, + 274, 274, 274, 274, 0, 0, 274, 274, 0, 274, + 274, 274, 274, 274, 274, 0, 274, 0, 553, 0, + 0, 0, 0, 266, 266, 560, 0, 266, 266, 266, + 266, 266, 0, 266, 0, 0, 568, 0, 0, 0, + 0, 277, 0, 0, 266, 266, 266, 266, 266, 266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 199, 199, 0, 597, 199, 199, + 0, 199, 0, 0, 199, 0, 0, 0, 0, 266, + 266, 0, 0, 0, 0, 199, 199, 199, 199, 199, + 199, 0, 0, 0, 0, 0, 616, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, + 266, 266, 0, 0, 626, 0, 0, 0, 0, 629, + 199, 199, 0, 0, 631, 0, 0, 0, 0, 277, + 277, 0, 0, 277, 277, 277, 277, 277, 0, 0, + 277, 277, 0, 277, 277, 277, 277, 277, 277, 0, + 277, 199, 199, 273, 273, 0, 0, 273, 273, 273, + 273, 273, 0, 273, 278, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 273, 273, 273, 273, 273, 273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 277, 0, 0, 0, 0, 273, 273, 0, 0, 273, - 273, 273, 273, 273, 0, 0, 273, 273, 0, 273, - 273, 273, 273, 273, 273, 0, 273, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 276, 276, 0, 0, 276, 276, 276, 276, - 276, 0, 0, 276, 276, 277, 276, 276, 276, 276, - 276, 276, 0, 276, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 272, 272, 0, 0, 272, 272, 272, 272, 272, 0, + 272, 0, 0, 0, 0, 0, 0, 0, 0, 273, + 273, 272, 272, 272, 272, 272, 272, 0, 0, 0, + 0, 0, 0, 0, 0, 227, 0, 0, 0, 0, + 225, 223, 0, 224, 0, 226, 0, 0, 0, 0, + 273, 273, 0, 266, 0, 0, 272, 272, 219, 0, + 221, 0, 278, 278, 0, 0, 278, 278, 278, 278, + 278, 0, 0, 278, 278, 0, 278, 278, 278, 278, + 278, 278, 0, 278, 0, 0, 0, 272, 272, 0, + 0, 227, 216, 0, 199, 0, 225, 223, 0, 224, + 0, 226, 0, 0, 0, 0, 0, 0, 266, 0, + 0, 0, 263, 0, 219, 203, 221, 213, 0, 0, + 0, 0, 0, 0, 230, 0, 0, 0, 0, 227, + 216, 0, 0, 275, 225, 223, 0, 224, 0, 226, + 0, 0, 0, 0, 0, 0, 0, 0, 215, 199, + 0, 0, 219, 203, 221, 213, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 199, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 214, 0, + 230, 0, 0, 273, 0, 0, 215, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 266, 266, 0, 0, + 266, 266, 266, 266, 266, 0, 0, 266, 266, 0, + 266, 266, 266, 266, 266, 266, 214, 266, 230, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 272, 272, 272, 272, 272, 272, 0, 265, 0, - 0, 0, 0, 0, 0, 225, 214, 0, 0, 273, - 223, 221, 0, 222, 0, 224, 0, 0, 0, 0, - 0, 0, 0, 0, 199, 0, 272, 272, 217, 201, - 219, 211, 0, 277, 277, 0, 0, 277, 277, 277, - 277, 277, 0, 199, 277, 277, 0, 277, 277, 277, - 277, 277, 277, 265, 277, 0, 0, 272, 272, 0, - 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 271, 271, - 0, 0, 271, 271, 271, 271, 271, 0, 271, 0, - 0, 0, 212, 0, 228, 0, 0, 0, 0, 271, - 271, 271, 271, 271, 271, 0, 0, 0, 0, 0, - 0, 0, 199, 199, 0, 0, 199, 199, 199, 199, - 199, 0, 0, 199, 199, 0, 199, 199, 199, 199, - 199, 199, 0, 199, 271, 271, 0, 0, 0, 0, - 0, 265, 265, 0, 0, 265, 265, 265, 265, 265, - 0, 0, 265, 265, 0, 265, 265, 265, 265, 265, - 265, 0, 265, 0, 0, 271, 271, 0, 0, 0, - 0, 0, 0, 0, 0, 225, 214, 0, 0, 0, - 223, 221, 0, 222, 0, 224, 0, 0, 0, 0, - 272, 0, 0, 0, 0, 0, 261, 0, 217, 201, - 219, 211, 225, 214, 0, 0, 0, 223, 221, 0, - 222, 0, 224, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 425, 217, 201, 219, 211, 225, - 214, 0, 213, 486, 223, 221, 0, 222, 0, 224, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 217, 201, 219, 211, 0, 0, 0, 213, - 0, 0, 212, 0, 228, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 199, 199, 0, + 0, 199, 199, 199, 199, 199, 0, 0, 199, 199, + 0, 199, 199, 199, 199, 199, 199, 0, 199, 227, + 216, 0, 0, 0, 225, 223, 0, 224, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 227, 0, 0, 0, 0, 0, 213, 0, 0, 212, - 0, 228, 0, 0, 0, 0, 0, 0, 271, 231, - 0, 0, 0, 0, 0, 0, 252, 0, 0, 252, - 0, 0, 252, 0, 0, 0, 212, 0, 228, 0, - 0, 0, 0, 0, 0, 0, 252, 252, 0, 252, - 0, 252, 0, 272, 272, 0, 0, 272, 272, 272, + 0, 427, 219, 203, 221, 213, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, + 216, 0, 0, 488, 225, 223, 0, 224, 0, 226, + 229, 0, 0, 0, 0, 0, 215, 0, 0, 0, + 0, 0, 219, 203, 221, 213, 273, 273, 0, 233, + 273, 273, 273, 273, 273, 0, 0, 273, 273, 0, + 273, 273, 273, 273, 273, 273, 214, 273, 230, 0, + 0, 0, 0, 0, 0, 0, 215, 0, 0, 0, + 0, 0, 0, 272, 272, 0, 229, 272, 272, 272, 272, 272, 0, 0, 272, 272, 0, 272, 272, 272, - 272, 272, 272, 0, 272, 0, 0, 0, 0, 0, - 0, 252, 252, 0, 0, 0, 0, 0, 220, 218, - 229, 230, 202, 203, 204, 205, 207, 0, 0, 215, - 216, 0, 199, 200, 206, 209, 208, 210, 0, 226, - 0, 0, 252, 252, 225, 214, 0, 0, 0, 223, - 221, 0, 222, 0, 224, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 496, 217, 201, 219, - 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 272, 272, 272, 0, 272, 233, 214, 0, 230, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 222, 220, + 231, 232, 0, 0, 229, 0, 0, 0, 0, 217, + 218, 0, 0, 0, 0, 0, 0, 0, 0, 228, + 0, 0, 0, 233, 0, 227, 216, 0, 0, 0, + 225, 223, 0, 224, 0, 226, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 498, 219, 203, + 221, 213, 0, 0, 222, 220, 231, 232, 204, 205, + 206, 207, 209, 0, 0, 217, 218, 0, 201, 202, + 208, 211, 210, 212, 0, 228, 0, 0, 0, 0, + 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 222, 220, 231, 232, 204, 205, 206, 207, + 209, 0, 0, 217, 218, 0, 201, 202, 208, 211, + 210, 212, 214, 228, 230, 0, 0, 0, 0, 0, + 0, 0, 227, 216, 0, 0, 533, 225, 223, 0, + 224, 0, 226, 0, 229, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 219, 203, 221, 213, 0, + 0, 0, 0, 233, 0, 0, 0, 227, 216, 0, + 0, 538, 225, 223, 0, 224, 0, 226, 0, 0, + 0, 0, 0, 0, 229, 0, 0, 0, 0, 215, + 219, 203, 221, 213, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 233, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 214, + 0, 230, 0, 0, 215, 0, 0, 0, 0, 0, + 0, 0, 222, 220, 231, 232, 204, 205, 206, 207, + 209, 0, 0, 217, 218, 0, 201, 202, 208, 211, + 210, 212, 0, 228, 214, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 271, 271, 0, 0, 271, 271, 271, 271, 271, - 227, 213, 271, 271, 0, 271, 271, 271, 271, 271, - 271, 0, 271, 0, 0, 0, 0, 0, 0, 231, - 0, 0, 0, 0, 0, 0, 0, 227, 0, 0, - 0, 212, 0, 228, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 231, 0, 0, 0, - 0, 0, 0, 0, 227, 0, 0, 0, 0, 0, + 0, 0, 222, 220, 231, 232, 204, 205, 206, 207, + 209, 0, 0, 217, 218, 0, 201, 202, 208, 211, + 210, 212, 0, 228, 227, 216, 0, 0, 539, 225, + 223, 0, 224, 0, 226, 0, 0, 0, 0, 0, + 229, 0, 0, 0, 0, 0, 0, 219, 203, 221, + 213, 0, 0, 0, 0, 0, 0, 0, 0, 233, + 0, 227, 216, 0, 0, 586, 225, 223, 0, 224, + 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 215, 0, 0, 219, 203, 221, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 231, 0, 252, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 220, 218, - 229, 230, 202, 203, 204, 205, 207, 0, 0, 215, - 216, 0, 199, 200, 206, 209, 208, 210, 0, 226, - 0, 0, 0, 0, 0, 220, 218, 229, 230, 202, - 203, 204, 205, 207, 0, 0, 215, 216, 0, 199, - 200, 206, 209, 208, 210, 0, 226, 0, 0, 0, - 0, 0, 220, 218, 229, 230, 202, 203, 204, 205, - 207, 0, 0, 215, 216, 0, 199, 200, 206, 209, - 208, 210, 0, 226, 225, 214, 0, 0, 531, 223, - 221, 0, 222, 0, 224, 0, 402, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 217, 201, 219, - 211, 225, 214, 0, 0, 536, 223, 221, 0, 222, - 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 217, 201, 219, 211, 0, 227, - 0, 213, 252, 252, 252, 252, 252, 0, 0, 252, - 252, 0, 252, 252, 252, 252, 252, 252, 231, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 213, 0, - 0, 212, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, - 228, 492, 0, 0, 0, 0, 0, 0, 499, 0, + 0, 214, 0, 230, 0, 0, 0, 0, 215, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 222, 220, + 231, 232, 204, 205, 206, 207, 209, 229, 0, 217, + 218, 0, 201, 202, 208, 211, 210, 212, 214, 228, + 230, 0, 0, 0, 0, 0, 233, 0, 227, 216, + 0, 0, 587, 225, 223, 0, 224, 0, 226, 0, + 0, 0, 229, 0, 0, 0, 0, 0, 0, 0, + 0, 219, 203, 221, 213, 0, 0, 0, 0, 0, + 0, 233, 0, 0, 0, 227, 216, 0, 0, 0, + 225, 223, 0, 224, 0, 226, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 215, 0, 611, 219, 203, + 221, 213, 0, 0, 0, 222, 220, 231, 232, 204, + 205, 206, 207, 209, 0, 0, 217, 218, 0, 201, + 202, 208, 211, 210, 212, 214, 228, 230, 0, 0, + 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, + 222, 220, 231, 232, 204, 205, 206, 207, 209, 0, + 0, 217, 218, 0, 201, 202, 208, 211, 210, 212, + 0, 228, 214, 0, 230, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 227, 216, 0, 229, + 0, 225, 223, 0, 224, 0, 226, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 625, 233, 219, + 203, 221, 213, 227, 216, 0, 0, 0, 225, 223, + 0, 224, 0, 226, 0, 0, 229, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 219, 203, 221, 213, + 0, 0, 0, 215, 0, 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 220, 218, 229, - 230, 202, 203, 204, 205, 207, 0, 0, 215, 216, - 0, 199, 200, 206, 209, 208, 210, 0, 226, 225, - 214, 0, 0, 537, 223, 221, 0, 222, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 551, 217, 201, 219, 211, 225, 214, 558, 0, - 584, 223, 221, 0, 222, 0, 224, 0, 0, 566, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, - 201, 219, 211, 225, 214, 0, 213, 585, 223, 221, - 0, 222, 0, 224, 0, 0, 0, 0, 0, 0, - 595, 0, 0, 0, 0, 0, 217, 201, 219, 211, - 0, 0, 0, 213, 0, 0, 212, 0, 228, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 614, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, - 213, 0, 0, 212, 0, 228, 0, 624, 0, 0, - 0, 0, 627, 0, 0, 0, 0, 629, 231, 0, - 0, 0, 0, 0, 0, 0, 227, 0, 0, 0, - 212, 0, 228, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 231, 0, 0, 0, 0, - 0, 0, 0, 225, 214, 0, 0, 0, 223, 221, - 0, 222, 0, 224, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 609, 217, 201, 219, 211, - 0, 0, 0, 0, 0, 0, 0, 220, 218, 229, - 230, 202, 203, 204, 205, 207, 0, 0, 215, 216, - 0, 199, 200, 206, 209, 208, 210, 0, 226, 0, - 213, 0, 0, 0, 220, 218, 229, 230, 202, 203, - 204, 205, 207, 0, 0, 215, 216, 0, 199, 200, - 206, 209, 208, 210, 0, 226, 0, 0, 0, 0, - 212, 0, 228, 0, 0, 0, 0, 0, 0, 0, - 0, 225, 214, 0, 0, 0, 223, 221, 0, 222, - 0, 224, 0, 0, 227, 0, 0, 0, 0, 0, - 0, 0, 623, 0, 217, 201, 219, 211, 0, 0, - 0, 0, 0, 231, 0, 0, 0, 0, 225, 214, - 0, 227, 0, 223, 221, 0, 222, 0, 224, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 213, 0, - 231, 217, 201, 219, 211, 0, 0, 0, 227, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 212, 0, - 228, 0, 0, 0, 0, 213, 0, 0, 0, 0, - 0, 0, 220, 218, 229, 230, 202, 203, 204, 205, - 207, 0, 0, 215, 216, 0, 199, 200, 206, 209, - 208, 210, 0, 226, 0, 212, 0, 228, 0, 220, - 218, 229, 230, 202, 203, 204, 205, 207, 0, 0, - 215, 216, 0, 199, 200, 206, 209, 208, 210, 0, - 226, 0, 0, 0, 0, 0, 220, 218, 229, 230, - 202, 203, 204, 205, 207, 0, 0, 215, 216, 0, - 199, 200, 206, 209, 208, 210, 0, 226, 227, 0, + 215, 0, 0, 214, 0, 230, 0, 222, 220, 231, + 232, 204, 205, 206, 207, 209, 0, 0, 217, 218, + 0, 201, 202, 208, 211, 210, 212, 0, 228, 0, + 214, 0, 230, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 222, 220, 231, 232, 204, 205, + 206, 207, 209, 229, 0, 217, 218, 0, 201, 202, + 208, 211, 210, 212, 0, 228, 0, 0, 0, 0, + 0, 0, 233, 0, 227, 216, 0, 0, 0, 225, + 223, 0, 224, 0, 226, 0, 0, 0, 0, 0, + 229, 0, 0, 0, 0, 0, 0, 219, 203, 221, + 213, 0, 0, 0, 0, 0, 0, 0, 0, 233, + 0, 227, 216, 0, 0, 0, 225, 223, 0, 224, + 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 215, 0, 0, 219, 203, 221, 213, 0, 0, + 0, 222, 220, 231, 232, 204, 205, 206, 207, 209, + 0, 0, 217, 218, 0, 201, 202, 208, 211, 210, + 212, 214, 228, 230, 0, 0, 0, 0, 215, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 222, 220, + 231, 232, 204, 205, 206, 207, 209, 0, 0, 217, + 218, 229, 201, 202, 208, 211, 210, 212, 214, 228, + 230, 263, 263, 0, 0, 263, 263, 263, 263, 263, + 233, 263, 0, 0, 0, 0, 0, 0, 229, 0, + 0, 0, 263, 263, 263, 263, 263, 263, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, + 0, 0, 0, 0, 0, 264, 264, 0, 0, 264, + 264, 264, 264, 264, 0, 264, 0, 263, 263, 0, + 0, 0, 0, 0, 0, 0, 264, 264, 264, 264, + 264, 264, 0, 0, 0, 0, 0, 0, 0, 222, + 220, 231, 232, 204, 205, 206, 207, 209, 263, 263, + 217, 218, 0, 201, 202, 208, 211, 210, 212, 0, + 228, 264, 264, 0, 0, 0, 222, 220, 231, 232, + 204, 205, 206, 207, 209, 0, 0, 217, 218, 0, + 201, 202, 208, 211, 210, 212, 0, 228, 0, 0, + 0, 0, 264, 264, 0, 265, 265, 0, 0, 265, + 265, 265, 265, 265, 0, 265, 0, 0, 0, 229, + 0, 0, 0, 0, 0, 0, 265, 265, 265, 265, + 265, 265, 0, 0, 0, 0, 0, 0, 233, 0, + 0, 0, 0, 261, 0, 0, 261, 0, 261, 261, + 261, 0, 0, 0, 0, 0, 229, 0, 0, 0, + 0, 265, 265, 261, 261, 261, 261, 261, 261, 0, + 0, 0, 0, 0, 0, 233, 0, 0, 0, 0, + 0, 262, 0, 0, 262, 0, 262, 262, 262, 0, + 0, 263, 265, 265, 0, 0, 0, 0, 261, 261, + 0, 262, 262, 262, 262, 262, 262, 222, 220, 231, + 232, 204, 205, 206, 207, 209, 0, 0, 217, 218, + 0, 0, 202, 208, 211, 210, 212, 0, 228, 261, + 261, 0, 0, 0, 0, 264, 262, 262, 0, 0, + 0, 0, 0, 0, 222, 220, 231, 232, 204, 205, + 206, 207, 209, 0, 0, 217, 218, 0, 0, 0, + 208, 211, 210, 212, 0, 228, 0, 262, 262, 0, + 0, 253, 0, 0, 253, 0, 0, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 0, 225, - 214, 0, 0, 0, 223, 221, 0, 222, 0, 224, + 0, 253, 253, 0, 253, 0, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 217, 201, 219, 211, 0, 0, 0, 0, - 0, 0, 0, 0, 225, 214, 0, 0, 0, 223, - 221, 0, 222, 0, 224, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 213, 217, 201, 219, - 211, 0, 0, 0, 0, 0, 220, 218, 229, 230, - 202, 203, 204, 205, 207, 0, 227, 215, 216, 0, - 199, 200, 206, 209, 208, 210, 212, 226, 228, 0, - 0, 213, 0, 0, 0, 231, 0, 0, 0, 0, - 0, 0, 0, 0, 262, 262, 0, 0, 262, 262, - 262, 262, 262, 227, 262, 0, 0, 0, 0, 0, - 0, 212, 0, 228, 0, 262, 262, 262, 262, 262, - 262, 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 265, 253, 253, 0, 0, + 0, 0, 0, 0, 263, 263, 0, 0, 263, 263, + 263, 263, 263, 0, 0, 263, 263, 0, 263, 263, + 263, 263, 263, 263, 0, 0, 0, 253, 253, 0, + 0, 0, 261, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 264, 264, + 0, 0, 264, 264, 264, 264, 264, 0, 0, 264, + 264, 0, 264, 264, 264, 264, 264, 264, 0, 0, + 262, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 262, 0, 0, 220, 218, 229, 230, 202, 203, - 204, 205, 207, 0, 0, 215, 216, 0, 199, 200, - 206, 209, 208, 210, 0, 226, 0, 0, 0, 0, - 0, 262, 262, 0, 0, 0, 0, 0, 0, 0, - 0, 220, 218, 229, 230, 202, 203, 204, 205, 207, - 0, 0, 215, 216, 0, 199, 200, 206, 209, 208, - 210, 0, 226, 263, 263, 0, 0, 263, 263, 263, - 263, 263, 0, 263, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 263, 263, 263, 263, 263, 263, + 0, 0, 255, 255, 0, 255, 0, 255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, + 0, 0, 254, 0, 0, 254, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 255, 254, + 254, 0, 254, 0, 254, 0, 0, 0, 265, 265, + 0, 0, 265, 265, 265, 265, 265, 0, 0, 265, + 265, 0, 265, 265, 265, 265, 265, 265, 255, 255, + 253, 0, 0, 0, 254, 254, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 261, 261, 0, 0, 261, + 261, 261, 261, 261, 0, 0, 261, 261, 0, 261, + 261, 261, 261, 261, 261, 254, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 264, 264, 0, 0, 264, 264, 264, 264, 264, 0, - 264, 0, 0, 0, 227, 0, 0, 0, 0, 263, - 263, 264, 264, 264, 264, 264, 264, 0, 0, 0, - 0, 0, 0, 231, 0, 0, 0, 0, 260, 0, - 0, 260, 0, 260, 260, 260, 0, 0, 0, 227, - 263, 263, 0, 0, 0, 0, 264, 264, 260, 260, - 260, 260, 260, 260, 262, 0, 0, 0, 231, 0, - 0, 0, 0, 0, 0, 261, 0, 0, 261, 0, - 261, 261, 261, 0, 0, 0, 0, 264, 264, 0, - 0, 0, 0, 260, 260, 261, 261, 261, 261, 261, - 261, 0, 220, 218, 229, 230, 202, 203, 204, 205, - 207, 0, 0, 215, 216, 0, 0, 200, 206, 209, - 208, 210, 0, 226, 260, 260, 0, 0, 0, 0, - 261, 261, 0, 0, 0, 0, 0, 220, 218, 229, - 230, 202, 203, 204, 205, 207, 0, 0, 215, 216, - 0, 0, 0, 206, 209, 208, 210, 0, 226, 0, - 0, 261, 261, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 254, 0, 0, 254, 0, 0, 254, 0, - 0, 0, 0, 263, 0, 0, 0, 0, 0, 0, - 0, 0, 254, 254, 0, 254, 0, 254, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 262, 262, 0, - 0, 262, 262, 262, 262, 262, 0, 0, 262, 262, - 264, 262, 262, 262, 262, 262, 262, 254, 254, 0, - 0, 253, 0, 0, 253, 0, 0, 253, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 253, 253, 0, 253, 0, 253, 260, 254, 254, - 255, 0, 0, 255, 0, 0, 255, 0, 0, 0, + 0, 0, 0, 262, 262, 0, 0, 262, 262, 262, + 262, 262, 0, 0, 262, 262, 0, 262, 262, 262, + 262, 262, 262, 0, 0, 0, 0, 256, 0, 0, + 256, 0, 0, 256, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 256, 256, 0, + 256, 0, 256, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 271, 0, 0, 271, 0, 0, + 271, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 256, 256, 271, 271, 0, 271, 0, 271, + 0, 0, 0, 0, 0, 0, 0, 253, 253, 253, + 253, 253, 0, 0, 253, 253, 0, 253, 253, 253, + 253, 253, 253, 256, 256, 0, 0, 0, 254, 271, + 271, 252, 0, 0, 252, 0, 0, 252, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 270, 0, 0, + 270, 252, 252, 270, 252, 0, 252, 0, 0, 0, + 271, 271, 0, 0, 0, 0, 0, 270, 270, 0, + 270, 251, 270, 0, 251, 0, 0, 251, 0, 0, + 0, 0, 0, 0, 0, 0, 252, 252, 0, 0, + 0, 251, 251, 0, 251, 0, 251, 0, 0, 0, + 0, 0, 270, 270, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 252, 252, 0, + 0, 0, 0, 0, 0, 0, 251, 251, 0, 0, + 0, 0, 0, 270, 270, 0, 0, 0, 255, 255, + 255, 255, 255, 0, 201, 255, 255, 201, 255, 255, + 255, 255, 255, 255, 0, 0, 256, 251, 251, 0, + 0, 201, 201, 0, 201, 0, 201, 0, 0, 0, + 0, 0, 0, 0, 0, 254, 254, 254, 254, 254, + 0, 0, 254, 254, 0, 254, 254, 254, 254, 254, + 254, 0, 0, 271, 0, 0, 201, 0, 0, 268, + 0, 0, 268, 0, 0, 268, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 257, 0, 0, 257, 268, + 268, 257, 268, 0, 268, 0, 0, 0, 201, 0, + 0, 0, 0, 0, 0, 257, 257, 0, 257, 258, + 257, 0, 258, 0, 0, 258, 0, 0, 0, 0, + 252, 0, 0, 0, 268, 268, 0, 0, 0, 258, + 258, 0, 258, 0, 258, 0, 270, 0, 0, 0, + 257, 257, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 268, 268, 0, 0, 0, + 251, 0, 0, 0, 258, 258, 0, 0, 0, 0, + 0, 257, 257, 256, 256, 256, 256, 256, 0, 0, + 256, 256, 0, 256, 256, 256, 256, 256, 256, 0, + 0, 0, 0, 0, 0, 258, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 255, 255, 0, 255, 0, 255, 253, 253, 0, 0, - 0, 0, 0, 0, 261, 0, 0, 0, 0, 270, - 0, 0, 270, 0, 0, 270, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 255, 255, 253, 253, 270, - 270, 0, 270, 0, 270, 0, 263, 263, 0, 0, - 263, 263, 263, 263, 263, 0, 0, 263, 263, 0, - 263, 263, 263, 263, 263, 263, 255, 255, 0, 0, - 0, 0, 0, 0, 270, 270, 0, 0, 0, 0, - 0, 0, 0, 264, 264, 0, 0, 264, 264, 264, - 264, 264, 0, 0, 264, 264, 0, 264, 264, 264, - 264, 264, 264, 0, 0, 270, 270, 0, 0, 0, - 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, - 260, 260, 0, 0, 260, 260, 260, 260, 260, 0, - 0, 260, 260, 0, 260, 260, 260, 260, 260, 260, + 271, 271, 271, 271, 271, 0, 0, 271, 271, 0, + 271, 271, 271, 271, 271, 271, 0, 0, 0, 0, + 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 209, 0, 0, 209, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 209, 209, 0, + 209, 0, 209, 0, 0, 0, 0, 252, 252, 252, + 252, 252, 0, 0, 252, 252, 0, 252, 252, 252, + 252, 252, 252, 270, 270, 270, 270, 270, 268, 0, + 270, 270, 209, 270, 270, 270, 270, 270, 270, 0, + 0, 0, 0, 0, 257, 0, 0, 251, 251, 251, + 251, 251, 0, 0, 251, 251, 0, 251, 251, 251, + 251, 251, 251, 0, 209, 0, 0, 0, 258, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, + 0, 141, 0, 0, 0, 0, 140, 0, 0, 129, + 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 304, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 201, 201, 201, + 201, 201, 0, 0, 0, 0, 0, 201, 201, 201, + 201, 201, 201, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 261, 261, 0, - 0, 261, 261, 261, 261, 261, 0, 0, 261, 261, - 253, 261, 261, 261, 261, 261, 261, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 251, 0, - 0, 251, 0, 0, 251, 0, 0, 0, 0, 255, - 0, 0, 0, 0, 0, 0, 0, 0, 251, 251, - 0, 251, 208, 251, 0, 208, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 269, 0, 0, 269, 208, - 208, 269, 208, 0, 208, 0, 0, 0, 270, 0, - 0, 0, 0, 251, 251, 269, 269, 0, 269, 0, - 269, 0, 0, 0, 0, 0, 0, 0, 254, 254, - 254, 254, 254, 0, 208, 254, 254, 0, 254, 254, - 254, 254, 254, 254, 251, 251, 0, 0, 0, 250, - 269, 269, 250, 0, 0, 250, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 208, 0, 0, 250, - 250, 0, 250, 0, 250, 0, 0, 0, 0, 0, - 0, 269, 269, 0, 0, 0, 0, 253, 253, 253, - 253, 253, 0, 0, 253, 253, 0, 253, 253, 253, - 253, 253, 253, 0, 250, 250, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, - 255, 0, 0, 255, 255, 0, 255, 255, 255, 255, - 255, 255, 0, 0, 0, 250, 250, 0, 0, 0, + 0, 131, 0, 141, 0, 0, 0, 0, 140, 0, + 0, 129, 0, 130, 0, 0, 0, 0, 0, 0, + 0, 0, 132, 0, 0, 268, 268, 268, 268, 268, + 308, 0, 0, 0, 0, 268, 268, 268, 268, 268, + 268, 257, 257, 257, 257, 257, 209, 0, 0, 0, + 0, 257, 257, 257, 257, 257, 257, 0, 0, 83, + 0, 0, 0, 0, 0, 258, 258, 258, 258, 258, + 0, 0, 0, 0, 0, 258, 258, 258, 258, 258, + 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 131, 132, 141, 0, 0, 0, 0, + 140, 0, 0, 129, 0, 130, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, + 0, 0, 131, 0, 141, 0, 0, 0, 0, 140, + 0, 131, 129, 141, 130, 0, 0, 0, 140, 0, + 0, 129, 0, 130, 0, 0, 0, 0, 0, 0, + 300, 83, 0, 0, 0, 0, 174, 86, 87, 88, + 89, 90, 131, 0, 141, 0, 0, 0, 0, 140, + 0, 0, 129, 0, 130, 0, 0, 0, 0, 0, + 83, 0, 10, 0, 0, 0, 132, 0, 0, 83, + 302, 0, 0, 209, 209, 209, 209, 209, 0, 0, + 0, 0, 0, 209, 209, 209, 209, 209, 209, 136, + 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, + 83, 349, 0, 0, 132, 0, 0, 0, 174, 86, + 87, 88, 89, 90, 0, 0, 139, 0, 0, 0, + 0, 0, 135, 0, 0, 0, 0, 0, 0, 224, + 0, 224, 0, 0, 10, 132, 224, 0, 0, 224, + 0, 224, 0, 126, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 270, 270, 270, 270, 270, - 0, 0, 270, 270, 0, 270, 270, 270, 270, 270, - 270, 0, 267, 0, 0, 267, 0, 251, 267, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, - 0, 256, 267, 267, 256, 267, 0, 267, 208, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 256, 256, - 0, 256, 0, 256, 269, 257, 0, 0, 257, 0, - 0, 257, 0, 0, 0, 0, 0, 267, 267, 0, - 0, 0, 0, 0, 0, 257, 257, 0, 257, 0, - 257, 0, 0, 256, 256, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 267, 267, - 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, - 257, 257, 0, 0, 256, 256, 0, 0, 0, 0, + 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 305, 133, 134, + 0, 0, 0, 0, 0, 0, 0, 224, 139, 224, + 0, 0, 0, 0, 135, 0, 0, 0, 0, 0, + 137, 138, 87, 88, 89, 90, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 126, 127, 0, 0, 0, + 0, 0, 224, 0, 0, 0, 10, 0, 0, 174, + 86, 87, 88, 89, 90, 0, 0, 0, 174, 86, + 87, 88, 89, 90, 0, 0, 0, 131, 309, 141, + 133, 134, 0, 136, 140, 10, 0, 129, 0, 130, + 0, 0, 0, 0, 10, 0, 0, 0, 0, 174, + 86, 87, 88, 89, 90, 0, 0, 131, 0, 141, + 139, 0, 136, 0, 140, 0, 135, 129, 0, 130, + 0, 136, 0, 0, 0, 10, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 83, 0, 126, 127, 139, + 0, 0, 0, 0, 0, 135, 0, 0, 139, 0, + 0, 0, 136, 0, 135, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 190, 126, 127, 0, 0, + 132, 0, 133, 134, 0, 126, 127, 0, 0, 139, + 0, 0, 0, 0, 0, 135, 224, 224, 224, 224, + 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, + 132, 133, 134, 0, 0, 0, 126, 127, 0, 0, + 133, 134, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 130, 0, 140, 0, 0, 0, 0, - 139, 257, 257, 128, 0, 129, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, + 0, 133, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 302, 0, 0, 0, 251, 251, 251, 251, 251, 0, - 0, 251, 251, 0, 251, 251, 251, 251, 251, 251, - 0, 0, 0, 0, 0, 208, 208, 208, 208, 208, - 0, 83, 0, 0, 0, 208, 208, 208, 208, 208, - 208, 269, 269, 269, 269, 269, 0, 0, 269, 269, - 0, 269, 269, 269, 269, 269, 269, 0, 0, 0, - 130, 0, 140, 0, 0, 0, 131, 139, 0, 0, - 128, 267, 129, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 256, 0, 306, - 0, 0, 0, 0, 0, 250, 250, 250, 250, 250, - 0, 0, 250, 250, 0, 250, 250, 250, 250, 250, - 250, 0, 0, 0, 257, 0, 0, 0, 83, 130, - 0, 140, 0, 0, 0, 0, 139, 0, 0, 128, - 130, 129, 140, 0, 0, 0, 0, 139, 0, 0, - 128, 0, 129, 0, 127, 0, 0, 0, 0, 0, - 0, 0, 0, 131, 0, 0, 0, 0, 298, 130, - 0, 140, 0, 0, 0, 0, 139, 0, 0, 128, - 0, 129, 0, 0, 0, 0, 0, 83, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 300, 83, 0, + 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, + 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 173, 86, 87, 88, 89, 90, 0, 0, 0, 0, - 0, 0, 131, 0, 0, 0, 0, 83, 267, 267, - 267, 267, 267, 131, 0, 0, 10, 0, 267, 267, - 267, 267, 267, 267, 256, 256, 256, 256, 256, 0, - 0, 0, 0, 0, 256, 256, 256, 256, 256, 256, - 0, 0, 131, 135, 0, 0, 0, 0, 0, 0, - 0, 257, 257, 257, 257, 257, 0, 0, 0, 0, - 0, 257, 257, 257, 257, 257, 257, 0, 0, 0, - 138, 0, 0, 0, 0, 0, 134, 173, 86, 87, - 88, 89, 90, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 126, 130, 0, - 140, 0, 0, 10, 0, 139, 0, 0, 128, 0, - 129, 223, 0, 223, 0, 0, 0, 0, 223, 0, - 0, 223, 0, 223, 0, 0, 0, 0, 0, 0, - 135, 303, 132, 133, 0, 0, 136, 137, 87, 88, - 89, 90, 0, 0, 0, 0, 0, 173, 86, 87, - 88, 89, 90, 0, 0, 0, 83, 138, 0, 0, - 0, 0, 10, 134, 0, 0, 0, 0, 0, 223, - 0, 223, 0, 10, 0, 0, 173, 86, 87, 88, - 89, 90, 0, 0, 126, 0, 0, 0, 347, 135, - 0, 131, 0, 0, 0, 0, 0, 0, 0, 130, - 135, 140, 10, 0, 223, 0, 139, 0, 0, 128, - 0, 129, 0, 0, 0, 0, 138, 307, 0, 132, - 133, 0, 134, 0, 0, 0, 0, 138, 0, 135, - 130, 0, 140, 134, 0, 0, 0, 139, 0, 0, - 128, 0, 129, 126, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 126, 0, 138, 83, 0, 0, - 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 132, 133, - 0, 0, 0, 126, 0, 0, 0, 0, 188, 132, - 133, 0, 131, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 224, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 174, 86, 87, 88, 89, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 132, 133, - 0, 0, 0, 131, 0, 173, 86, 87, 88, 89, - 90, 0, 0, 0, 0, 0, 0, 0, 223, 223, - 223, 223, 223, 223, 0, 0, 0, 0, 0, 0, - 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 223, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 135, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, + 10, 0, 0, 0, 174, 86, 87, 88, 89, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, - 0, 134, 0, 0, 0, 0, 0, 0, 223, 0, - 0, 0, 0, 0, 223, 0, 173, 86, 87, 88, - 89, 90, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, - 0, 0, 10, 0, 0, 0, 0, 173, 86, 87, - 88, 89, 90, 0, 0, 0, 0, 132, 133, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, - 223, 223, 0, 10, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, - 135, 0, 134, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 139, 0, 0, 136, 0, 0, + 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 126, 0, 0, 0, 189, 0, 0, - 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, + 0, 126, 127, 0, 191, 0, 0, 0, 0, 0, + 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 126, 0, 0, 0, 132, 133, + 0, 126, 127, 0, 0, 0, 133, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, - 133, + 0, 0, 0, 0, 0, 0, 133, 134, ); protected static $yyCheck = array(4, - 61, 62, 63, 40, 155, 120, 46, 41, 60, 46, - 44, 59, 71, 42, 125, 41, 124, 41, 391, 59, - 125, 46, 125, 84, 41, 169, 91, 44, 240, 34, - 35, 260, 63, 41, 126, 40, 44, 98, 438, 100, - 126, 58, 59, 40, 260, 41, 105, 106, 44, 41, - 260, 93, 44, 60, 91, 170, 61, 62, 63, 120, - 91, 44, 58, 59, 69, 70, 71, 303, 123, 91, - 39, 300, 44, 44, 44, 123, 93, 260, 91, 84, - 49, 50, 51, 125, 91, 93, 304, 59, 41, 59, - 300, 44, 97, 98, 44, 100, 59, 93, 40, 472, - 105, 106, 44, 286, 260, 58, 59, 319, 125, 170, - 93, 340, 512, 37, 38, 120, 126, 268, 42, 43, - 181, 45, 93, 47, 340, 46, 123, 37, 38, 125, - 443, 44, 42, 43, 139, 45, 60, 47, 62, 46, - 93, 514, 125, 93, 300, 41, 46, 58, 44, 332, - 60, 93, 62, 125, 364, 46, 59, 260, 163, 164, - 123, 166, 91, 59, 59, 170, 227, 58, 541, 320, - 94, 41, 125, 486, 44, 125, 181, 37, 103, 91, - 93, 64, 42, 43, 94, 45, 58, 47, 58, 59, - 63, 342, 197, 344, 91, 260, 340, 93, 46, 411, - 124, 126, 126, 128, 129, 130, 131, 132, 133, 257, - 135, 46, 125, 61, 139, 59, 126, 91, 91, 37, - 312, 286, 227, 93, 42, 43, 231, 45, 123, 47, - 155, 260, 340, 257, 44, 300, 301, 302, 260, 331, - 257, 37, 60, 40, 62, 331, 42, 260, 253, 393, - 59, 47, 62, 260, 405, 125, 311, 59, 183, 410, - 185, 257, 373, 374, 286, 257, 126, 332, 373, 374, - 239, 300, 277, 59, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 312, 228, 257, 125, 457, 320, 126, 340, - 402, 403, 59, 320, 123, 240, 402, 403, 340, 332, - 41, 331, 33, 44, 35, 332, 44, 340, 60, 40, - 126, 260, 43, 340, 45, 364, 261, 58, 59, 61, - 61, 260, 63, 268, 62, 270, 37, 38, 260, 260, - 261, 42, 43, 91, 45, 93, 47, 286, 410, 44, - 40, 257, 257, 260, 548, 549, 46, 286, 427, 60, - 410, 62, 93, 298, 286, 300, 410, 302, 303, 530, - 91, 306, 307, 420, 410, 410, 260, 257, 312, 286, - 97, 575, 402, 403, 319, 320, 63, 414, 415, 330, - 477, 478, 312, 124, 125, 573, 574, 331, 93, 340, - 41, 421, 286, 44, 125, 126, 46, 342, 414, 344, - 332, 331, 310, 428, 91, 350, 41, 542, 340, 44, - 598, 61, 583, 438, 359, 126, 40, 33, 515, 35, - 260, 260, 46, 340, 40, 37, 310, 43, 257, 45, - 42, 43, 312, 45, 58, 47, 410, 164, 332, 166, - 41, 414, 415, 40, 311, 41, 286, 286, 44, 46, - 395, 331, 477, 478, 181, 123, 400, 401, 402, 403, - 405, 542, 40, 260, 58, 410, 411, 411, 412, 414, - 400, 401, 402, 403, 312, 91, 40, 421, 260, 261, - 44, 411, 412, 344, 345, 139, 283, 512, 41, 286, - 515, 421, 332, 331, 519, 59, 312, 41, 187, 310, - 44, 340, 383, 300, 41, 41, 59, 44, 44, 125, - 126, 91, 457, 458, 126, 331, 257, 542, 599, 123, - 465, 466, 402, 403, 414, 415, 253, 373, 374, 260, - 261, 262, 263, 264, 265, 33, 417, 35, 619, 44, - 93, 421, 40, 197, 123, 43, 276, 45, 493, 279, - 300, 301, 302, 13, 14, 286, 300, 301, 302, 123, - 505, 125, 400, 401, 402, 403, 58, 364, 123, 33, - 44, 35, 125, 260, 599, 264, 40, 231, 410, 43, - 93, 45, 313, 421, 273, 530, 402, 403, 533, 44, - 535, 105, 106, 91, 619, 61, 49, 50, 51, 286, - 41, 312, 93, 44, 41, 421, 340, 44, 260, 340, - 341, 342, 343, 257, 41, 346, 44, 58, 59, 41, - 331, 58, 59, 277, 569, 123, 123, 91, 126, 360, - 361, 362, 363, 260, 365, 366, 367, 91, 583, 370, - 371, 372, 373, 374, 260, 261, 262, 263, 264, 265, - 531, 40, 93, 125, 123, 536, 93, 61, 123, 58, - 605, 40, 126, 404, 405, 406, 407, 408, 58, 358, - 286, 402, 403, 414, 415, 416, 417, 418, 419, 260, - 123, 40, 40, 260, 125, 41, 125, 93, 125, 400, - 401, 402, 403, 41, 40, 125, 61, 313, 40, 430, - 411, 412, 40, 91, 585, 123, 41, 340, 125, 125, - 421, 125, 401, 40, 40, 40, 91, 40, 59, 41, - 59, 40, 44, 604, 340, 341, 342, 343, 40, 340, - 346, 91, 260, 41, 615, 59, 58, 59, 41, 61, - 61, 63, 59, 361, 360, 361, 362, 363, 340, 365, - 366, 367, 61, 59, 370, 41, 372, 373, 374, 448, - 44, 93, 260, 261, 262, 263, 264, 265, 125, 37, - 38, 93, 40, 41, 42, 43, 44, 45, 123, 47, - 59, 125, 40, 44, 260, 41, 402, 403, 286, 364, - 58, 59, 60, 61, 62, 63, 260, 261, 262, 263, - 264, 265, 321, 125, 41, 123, 260, 261, 262, 263, - 264, 265, 123, 340, 430, 313, 257, 340, 41, 59, - 257, 125, 286, 91, 91, 93, 94, 125, 37, 371, - 125, 123, 286, 42, 43, 40, 45, 59, 47, 41, - 125, 58, 340, 341, 342, 343, 300, 125, 346, 313, - 125, 60, 41, 62, 123, 123, 124, 125, 126, 125, - 123, 123, 360, 361, 362, 363, 93, 365, 366, 367, - 41, 41, 370, 125, 372, 257, 340, 341, 342, 343, - 58, 125, 346, 91, 91, 260, 261, 262, 263, 264, - 265, 91, 346, 125, 93, 125, 360, 361, 362, 363, - 260, 365, 366, 367, 402, 403, 370, 41, 372, 123, - 44, 286, 59, 59, 41, 91, 59, 126, 41, 41, - 364, 41, 41, 7, 58, 59, 286, 61, 125, 63, - 125, 6, 430, 77, 102, 257, 339, 483, 402, 403, - 300, 301, 302, 37, 38, 478, 40, 41, 42, 43, - 44, 45, 519, 47, 60, 59, 109, 506, 345, 93, - 94, 591, 494, 181, 58, 59, 430, 61, 62, 63, - 555, 346, 332, 414, 415, 181, 41, 414, 415, 44, - 277, 531, 555, 242, 197, 41, 536, 238, 44, 257, - 124, 125, 260, 91, 59, -1, 31, 91, 91, 93, - 94, 37, 38, 59, 40, 41, 42, 43, 44, 45, - 46, 47, 166, 280, 281, 282, 283, 284, 285, -1, - 287, -1, 58, 59, 60, 61, 62, 63, 93, 123, - 124, 125, 126, -1, -1, 585, 303, 93, 91, -1, - -1, -1, 310, 311, 312, -1, -1, -1, -1, -1, - -1, -1, 320, -1, 604, 91, -1, 93, 94, -1, - 125, -1, 330, 331, 332, 615, -1, 334, -1, 125, - -1, -1, 340, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 404, 405, 406, 407, 408, -1, 124, 125, - 126, -1, 414, 415, 416, 417, 418, 419, -1, -1, - -1, -1, -1, 312, 280, 281, 282, 283, 284, 285, - -1, 287, -1, 41, -1, -1, 44, -1, -1, -1, - -1, -1, 331, 257, 300, 301, 302, -1, 304, -1, - 58, 59, 400, 401, 402, 403, 404, 405, 406, 407, - 408, -1, 410, 411, 412, -1, 414, 415, 416, 417, - 418, 419, -1, 421, 37, 38, -1, -1, 41, 42, - 43, 44, 45, 257, 47, 93, 260, 260, 261, 262, - 263, 264, 265, -1, -1, 58, 59, 60, 61, 62, - 63, -1, 280, 281, 282, 283, 284, 285, -1, 287, - -1, 400, 401, 402, 403, -1, -1, 125, -1, -1, - -1, 257, 411, 412, -1, 303, 41, 260, 91, 44, - 93, 94, 421, -1, -1, -1, 310, 311, 312, -1, - -1, 257, -1, 58, 59, -1, 320, 280, 281, 282, - 283, 284, 285, 286, 287, -1, 330, 331, 332, -1, - -1, 124, 125, 126, 41, -1, 340, 44, -1, -1, - 303, -1, 280, 281, 282, 283, 284, 285, 93, 287, - -1, 58, 59, -1, -1, -1, -1, -1, -1, -1, - 404, 405, 406, 407, 408, 303, 312, -1, -1, 332, - 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, - 125, -1, -1, -1, -1, 331, 93, -1, -1, -1, + 61, 62, 63, 120, 46, 60, 71, 41, 46, 40, + 44, 41, 91, 303, 42, 46, 125, 156, 124, 59, + 304, 59, 123, 84, 242, 44, 170, 385, 41, 34, + 35, 44, 125, 41, 63, 40, 44, 98, 126, 100, + 105, 106, 44, 63, 58, 58, 59, 260, 41, 126, + 58, 59, 260, 61, 171, 63, 61, 62, 63, 120, + 91, 419, 91, 60, 69, 70, 71, 91, 125, 125, + 91, 91, 126, 40, 93, 59, 445, 39, 286, 84, + 93, 44, 93, 123, 440, 93, 94, 49, 50, 51, + 63, 93, 97, 98, 91, 100, 260, 550, 551, 330, + 105, 106, 260, 321, 46, 41, 125, 260, 44, 340, + 171, 44, 125, 140, 125, 120, 124, 125, 91, 488, + 46, 44, 183, 59, 577, 41, 64, 340, 44, 62, + 93, 270, 340, 286, 59, 140, 300, 41, 37, 123, + 44, 46, 300, 42, 43, 46, 45, 41, 47, 41, + 44, 260, 44, 260, 58, 59, 123, 93, 514, 164, + 165, 60, 167, 62, 58, 59, 171, 59, 229, 46, + 93, 91, 199, 260, 261, 533, 283, 286, 183, 286, + 538, 260, 37, 322, 61, 103, 37, 42, 43, 93, + 45, 42, 47, 300, 199, 413, 47, 59, 342, 93, + 364, 93, 125, 260, 58, 344, 233, 346, 126, 127, + 311, 129, 130, 131, 132, 133, 134, 257, 136, 91, + 40, 125, 140, 332, 229, 59, 91, 126, 233, 587, + 46, 125, 260, 125, 340, 312, 260, 44, 156, 260, + 260, 320, 58, 331, 257, 189, 260, 261, 606, 257, + 255, 395, 279, 332, 331, 62, 59, 364, 312, 617, + 97, 340, 286, 260, 257, 286, 286, 185, 407, 187, + 59, 126, 300, 412, 279, 126, 91, 331, 60, 241, + 373, 374, 91, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 340, 230, 410, 402, 403, 340, 373, 374, 340, + 459, 257, 266, 320, 242, 402, 403, 33, 165, 35, + 167, 275, 40, 310, 40, 332, 364, 43, 46, 45, + 260, 257, 310, 340, 421, 263, 183, 44, 402, 403, + 58, 37, 270, 257, 272, 410, 42, 43, 91, 45, + 61, 47, 59, 257, 429, 257, 286, 59, 410, 37, + 38, 33, 410, 35, 42, 43, 410, 45, 40, 47, + 410, 43, 300, 45, 302, 91, 304, 305, 260, 420, + 308, 309, 60, 532, 62, 260, 404, 405, 406, 407, + 408, 414, 415, 321, 322, 41, 414, 415, 416, 417, + 418, 419, 332, 312, 286, 311, 360, 123, 255, 40, + 126, 286, 46, 44, 59, 430, 344, 544, 346, 91, + 41, 123, 331, 44, 352, 440, 41, 61, 393, 44, + 126, 123, 33, 361, 35, 260, 585, 58, 59, 40, + 278, 260, 43, 281, 45, 44, 44, 312, 126, 403, + 332, 312, 41, 125, 126, 44, 41, 40, 340, 44, + 59, 286, 93, 260, 479, 480, 331, 286, 41, 397, + 331, 44, 93, 544, 260, 300, 301, 302, 123, 407, + 40, 300, 301, 302, 412, 413, 46, 310, 416, 286, + 91, 400, 401, 402, 403, 93, 450, 58, 533, 514, + 414, 415, 517, 538, 125, 91, 521, 332, 93, 474, + 414, 415, 421, 332, 300, 123, 41, 260, 261, 262, + 263, 264, 265, 44, 125, 126, 125, 125, 123, 544, + 601, 459, 460, 41, 59, 332, 44, 402, 403, 467, + 468, 402, 403, 286, 260, 261, 262, 263, 264, 265, + 621, 516, 587, 40, 340, 257, 421, 300, 91, 46, + 421, 58, 33, 41, 35, 123, 44, 495, 93, 40, + 286, 606, 43, 91, 45, 93, 575, 576, 543, 507, + 479, 480, 617, 410, 41, 44, 601, 44, 260, 261, + 262, 263, 264, 265, 300, 301, 302, 313, 40, 93, + 125, 600, 44, 346, 532, 44, 621, 535, 61, 537, + 344, 345, 257, 93, 286, 373, 374, 59, 517, 260, + 91, 300, 301, 302, 340, 341, 342, 343, 13, 14, + 346, 91, 105, 106, 312, 91, 257, 49, 50, 51, + 257, 313, 340, 571, 360, 361, 362, 363, 41, 365, + 366, 367, 368, 331, 370, 126, 372, 585, 44, 260, + 261, 262, 263, 264, 265, 125, 41, 260, 340, 341, + 342, 343, 123, 125, 346, 40, 123, 123, 91, 607, + 61, 123, 58, 125, 40, 286, 402, 403, 360, 361, + 362, 363, 58, 365, 366, 367, 368, 260, 370, 371, + 372, 373, 374, 41, 260, 123, 44, 40, 125, 41, + 40, 93, 313, 41, 430, 40, 125, 61, 40, 40, + 58, 59, 400, 401, 402, 403, 123, 91, 41, 125, + 402, 403, 59, 411, 412, 125, 125, 340, 40, 340, + 341, 342, 343, 421, 40, 346, 40, 280, 281, 282, + 283, 284, 285, 59, 287, 93, 40, 40, 430, 360, + 361, 362, 363, 340, 365, 366, 367, 368, 40, 370, + 303, 372, 373, 374, 37, 38, 260, 40, 41, 42, + 43, 44, 45, 91, 47, 59, 41, 125, 41, 260, + 261, 262, 263, 264, 265, 58, 59, 60, 61, 62, + 63, 402, 403, 59, 260, 261, 262, 263, 264, 265, + 61, 361, 340, 61, 59, 286, 41, 125, 41, 44, + 280, 281, 282, 283, 284, 285, 44, 287, 91, 430, + 93, 94, 93, 58, 59, 125, 123, 59, 40, 125, + 44, 364, 313, 303, 123, 260, 321, 260, 261, 262, + 263, 264, 265, 41, 340, 41, 123, 340, 41, 125, + 123, 124, 125, 126, 59, 125, 371, 125, 93, 340, + 341, 342, 343, 286, 334, 346, 40, 123, 59, 280, + 281, 282, 283, 284, 285, 125, 287, 125, 41, 360, + 361, 362, 363, 58, 365, 366, 367, 368, 125, 370, + 125, 372, 303, 41, 37, 38, 123, 40, 41, 42, + 43, 44, 45, 125, 47, 123, 91, 41, 123, 257, + 44, 93, 41, 41, 125, 58, 59, 58, 61, 62, + 63, 402, 403, 346, 58, 59, 125, 41, 257, 91, + 44, 91, 37, 38, 91, 40, 41, 42, 43, 44, + 45, 46, 47, 41, 58, 59, 44, 93, 91, 430, + 93, 94, 125, 58, 59, 60, 61, 62, 63, 93, + 58, 59, 280, 281, 282, 283, 284, 285, 59, 287, + 125, 123, 41, 59, 41, 44, 59, 41, 41, 93, + 123, 124, 125, 126, 257, 303, 91, 260, 93, 94, + 59, 125, 37, 38, 364, 93, 7, 42, 43, 41, + 45, 41, 47, 125, 125, 6, 77, 102, 341, 485, + 521, 125, 480, 60, 496, 60, 334, 62, 59, 124, + 125, 126, 257, 557, 93, 109, 593, 125, 41, 508, + 557, 44, 183, 183, 347, 199, 279, 310, 311, 312, + 244, 167, -1, 240, 31, 58, 59, 320, 61, 94, + 63, -1, 41, -1, -1, 44, 125, 330, 331, 332, + -1, -1, -1, -1, -1, -1, 414, 340, 37, 38, + 59, -1, 41, 42, 43, 44, 45, -1, 47, 124, + 93, 126, -1, -1, -1, -1, -1, -1, -1, 58, + 59, 60, 61, 62, 63, 280, 281, 282, 283, 284, + 285, -1, 287, -1, 93, -1, -1, -1, -1, -1, + -1, 124, 125, -1, 257, -1, -1, 260, 303, -1, + -1, -1, 91, 257, 93, 94, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 125, 410, 411, 412, + -1, 414, 415, 416, 417, 418, 419, -1, 421, 334, + -1, -1, 257, -1, -1, 124, 125, 126, 41, 257, + -1, 44, -1, -1, -1, -1, -1, 310, 311, 312, + -1, -1, -1, -1, -1, 58, 59, 320, -1, 414, + 415, -1, -1, -1, -1, -1, -1, 330, 331, 332, + -1, -1, -1, -1, -1, 37, 38, 340, 40, 41, + 42, 43, 44, 45, 46, 47, -1, 312, -1, -1, + 93, -1, -1, -1, -1, -1, 58, 59, 60, 61, + 62, 63, -1, -1, -1, -1, 331, -1, -1, -1, + 37, 38, -1, -1, -1, 42, 43, -1, 45, -1, + 47, -1, 125, -1, 257, -1, -1, -1, -1, 91, + -1, 93, 94, 60, -1, 62, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, -1, 312, 411, 412, + -1, 414, 415, 416, 417, 418, 419, -1, 421, -1, + 414, 415, 124, 125, 126, -1, 331, 94, 257, -1, + -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, + 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, 420, 421, -1, -1, 126, + -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, + 44, 45, 46, 47, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 312, 58, 59, 60, 61, 62, 63, + -1, -1, -1, -1, -1, 400, 401, 402, 403, -1, + -1, -1, 331, -1, -1, -1, 411, 412, -1, -1, + -1, 340, 41, -1, 257, 44, 421, 91, -1, 93, + 94, -1, -1, -1, -1, -1, -1, -1, -1, 58, + 59, 404, 405, 406, 407, 408, -1, -1, -1, -1, + -1, 414, 415, 416, 417, 418, 419, -1, -1, -1, + 124, 125, 126, -1, -1, 257, -1, -1, -1, -1, + -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, + -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, + -1, 410, 411, 412, -1, 414, 415, 416, 417, 418, + 419, 420, 421, 37, 38, -1, 125, 41, 42, 43, + 44, 45, 46, 47, -1, -1, -1, -1, 91, 41, + 312, -1, 44, -1, 58, 59, 60, 61, 62, 63, + -1, -1, -1, -1, -1, -1, 58, 59, -1, 331, + -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, + 44, 45, 125, 47, -1, 312, -1, 91, -1, 93, + 94, -1, -1, -1, 58, 59, 60, 61, 62, 41, + -1, 93, 44, -1, 331, -1, -1, -1, -1, -1, + -1, 414, 415, -1, -1, -1, 58, 59, -1, -1, + 124, 125, 126, 257, -1, -1, -1, -1, -1, 93, + 94, -1, -1, 125, -1, -1, -1, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, + 412, 93, 414, 415, 416, 417, 418, 419, 420, 421, + 124, 125, 126, 41, -1, -1, 44, -1, 257, -1, + -1, -1, -1, 400, 401, 402, 403, -1, 312, -1, + 58, 59, -1, 125, 411, 412, -1, -1, -1, -1, + -1, -1, -1, -1, 421, -1, -1, 331, -1, -1, + -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, + -1, 47, -1, -1, -1, 93, -1, -1, -1, -1, + -1, -1, 58, 59, 60, 61, 62, 63, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 280, 281, 282, + 283, 284, 285, -1, 287, 41, -1, 125, 44, -1, + -1, -1, -1, 257, -1, -1, -1, 93, 94, -1, + 303, -1, 58, 59, -1, 257, 400, 401, 402, 403, + 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, + 414, 415, 416, 417, 418, 419, 420, 421, 124, 125, + 126, 334, -1, 257, -1, -1, -1, 93, 91, -1, + 41, -1, -1, 44, -1, -1, -1, -1, 312, -1, + -1, -1, -1, -1, -1, 257, -1, 58, 59, -1, + -1, -1, -1, -1, -1, 414, 415, 331, -1, 125, + -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, + 46, 47, -1, 41, -1, -1, 44, -1, 312, -1, + -1, -1, 93, -1, 60, 61, 62, 63, -1, -1, + 58, 59, -1, -1, -1, -1, 330, 331, -1, -1, + -1, -1, -1, -1, -1, -1, 340, -1, -1, 257, + -1, -1, -1, -1, 125, 91, -1, -1, 94, -1, + -1, -1, -1, -1, -1, 93, 400, 401, 402, 403, + 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, + 414, 415, 416, 417, 418, 419, 420, 421, 124, 91, + 126, 257, 414, 415, -1, -1, -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, -1, 421, 125, 257, - -1, -1, 37, 38, -1, 40, 41, 42, 43, 44, - 45, 46, 47, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 58, 59, 60, 61, 62, 63, -1, + 414, 415, 416, 417, 418, 419, 91, 421, 37, 38, + -1, 257, 41, 42, 43, 44, 45, 260, 47, -1, + -1, -1, 414, 415, -1, -1, 312, -1, -1, 58, + 59, 60, 61, 62, 63, -1, -1, 280, 281, 282, + 283, 284, 285, 286, 287, 331, -1, -1, -1, 37, + 38, -1, 40, -1, 42, 43, 44, 45, 46, 47, + 303, -1, -1, -1, 93, 94, 257, -1, -1, -1, + -1, -1, 60, 61, 62, 63, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 414, 415, -1, 332, + -1, -1, -1, -1, -1, 124, 125, 126, -1, -1, + -1, 257, -1, 91, -1, 93, 94, -1, -1, 257, -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 91, 257, 411, 412, -1, 414, 415, - 416, 417, 418, 419, 420, 421, 91, -1, 93, 94, - 37, 38, -1, -1, 41, 42, 43, 44, 45, 46, - 47, 91, -1, -1, -1, -1, -1, 125, -1, -1, - -1, 58, 59, 60, 61, 62, 63, -1, -1, 124, - 125, 126, 257, -1, 41, -1, -1, 44, -1, 312, - -1, -1, -1, -1, -1, 125, -1, -1, -1, -1, - 91, 58, 59, -1, 91, -1, 93, 94, 331, -1, - -1, -1, -1, -1, -1, 41, -1, 340, 44, -1, - 257, -1, -1, 41, 41, -1, 44, 44, -1, -1, - -1, -1, 58, 59, 125, -1, 93, 124, 125, 126, - 58, 59, 59, -1, -1, -1, 414, 415, 37, 38, - -1, -1, 41, 42, 43, 44, 45, 46, 47, -1, - -1, -1, -1, -1, -1, -1, -1, 93, 125, 58, - 59, 60, 61, 62, 63, 93, 93, 400, 401, 402, - 403, 404, 405, 406, 407, 408, -1, 410, 411, 412, - -1, 414, 415, 416, 417, 418, 419, 420, 421, 125, - -1, -1, 91, -1, 93, 94, -1, 125, 125, -1, - -1, -1, 257, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 280, 281, 282, 283, 284, 285, -1, 287, - -1, -1, -1, -1, -1, 124, 125, 126, -1, 414, - 415, -1, -1, 41, -1, 303, 44, -1, -1, -1, - 280, 281, 282, 283, 284, 285, -1, 287, 37, 38, - 58, 59, 41, 42, 43, 44, 45, 312, 47, -1, - 257, -1, -1, 303, -1, -1, 334, 414, 415, 58, - 59, 60, 61, 62, -1, -1, 331, -1, -1, 280, - 281, 282, 283, 284, 285, 93, 287, -1, -1, -1, - 257, -1, -1, -1, 334, -1, -1, -1, -1, -1, - -1, -1, 303, -1, 93, 94, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 312, -1, 125, -1, -1, - -1, 257, -1, -1, -1, -1, -1, -1, -1, 257, - -1, -1, -1, 334, 331, 124, 125, 126, -1, -1, - -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, -1, -1, 411, 412, 257, 414, - 415, 416, 417, 418, 419, 420, 421, -1, -1, 37, - 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, - -1, 41, -1, 41, 44, -1, 44, -1, -1, -1, - 58, 59, 60, 61, 62, 63, -1, -1, 58, 59, - 58, 59, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, -1, 312, 411, 412, -1, 414, 415, 416, - 417, 418, 419, 420, 421, 93, 94, -1, -1, -1, - -1, -1, 331, 93, -1, 93, -1, 37, 38, -1, - 40, 41, 42, 43, 44, 45, 46, 47, -1, 257, - -1, -1, -1, -1, -1, -1, 124, 125, 126, 91, - 60, 61, 62, 63, -1, 125, -1, 125, 257, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 414, 415, - 41, -1, -1, 44, -1, -1, 414, 415, -1, -1, - -1, 91, -1, -1, 94, -1, -1, 58, 59, -1, - -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 420, 421, 312, 124, -1, 126, -1, -1, -1, - -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, - -1, 330, 331, -1, -1, -1, -1, -1, 37, 38, - -1, 340, 41, 42, 43, 44, 45, -1, 47, -1, - -1, -1, -1, -1, 125, -1, -1, -1, -1, 58, - 59, 60, 61, 62, 63, -1, -1, 37, 38, -1, - 40, -1, 42, 43, 44, 45, 46, 47, -1, 257, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, - 60, 61, 62, 63, 93, 94, 414, 415, -1, -1, - -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 91, 421, 93, 94, 124, 125, 126, 91, -1, - -1, -1, -1, -1, 312, -1, -1, -1, 280, 281, - 282, 283, 284, 285, -1, 287, -1, 257, -1, -1, - -1, -1, -1, 331, 124, -1, 126, -1, 300, 301, - 302, 303, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 257, -1, 37, 38, - -1, -1, -1, 42, 43, 44, 45, -1, 47, -1, - -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, - -1, 60, 61, 62, 63, -1, -1, -1, -1, -1, - -1, 331, 400, 401, 402, 403, 404, 405, 406, 407, - 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, 91, 421, 93, 94, 414, 415, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 257, 37, - 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, - -1, -1, -1, -1, -1, 124, -1, 126, -1, -1, + 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, + 416, 417, 418, 419, -1, 421, 124, -1, 126, -1, + -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, + -1, -1, 42, 43, 44, 45, 312, 47, 280, 281, + 282, 283, 284, 285, -1, 287, -1, -1, 414, 415, + 60, 61, 62, 63, -1, 331, -1, -1, 300, 301, + 302, -1, 304, -1, 37, 38, -1, -1, 41, 42, + 43, 44, 45, -1, 47, 280, 281, 282, 283, 284, + 285, 91, 287, 93, 94, 58, 59, 60, 61, 62, + 63, -1, -1, -1, -1, 300, 301, 302, 303, -1, + -1, -1, -1, 414, 415, -1, -1, -1, 257, -1, + -1, -1, -1, -1, 124, -1, 126, -1, -1, -1, + 93, 94, -1, -1, 400, 401, 402, 403, 404, 405, + 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, + 416, 417, 418, 419, 420, 421, 414, 415, -1, 37, + 38, 124, 125, 41, 42, 43, 44, 45, -1, 47, + -1, -1, -1, 312, 91, -1, -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, - -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, - 420, 421, -1, 312, -1, 93, 94, 280, 281, 282, - 283, 284, 285, -1, 287, -1, -1, -1, -1, -1, - -1, -1, 331, -1, -1, -1, -1, 300, 301, 302, - 303, -1, 312, 414, 415, -1, 124, 125, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 331, -1, -1, -1, -1, -1, 37, 38, -1, - -1, 41, 42, 43, 44, 45, -1, 47, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, - 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, + -1, -1, 331, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, + 45, -1, 47, -1, 312, 93, 94, -1, -1, -1, + -1, -1, -1, 58, 59, 60, 61, 62, 63, -1, + -1, -1, -1, 331, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 124, 125, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, 421, 93, 94, -1, -1, -1, -1, -1, + 419, -1, 421, -1, -1, -1, -1, -1, -1, 124, + 125, -1, -1, -1, 257, -1, -1, -1, -1, -1, + -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, + 408, -1, 312, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 420, 421, -1, -1, -1, -1, -1, -1, + -1, 331, -1, -1, -1, -1, 37, 38, -1, -1, + 41, 42, 43, 44, 45, -1, 47, -1, -1, 312, + -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, + 61, 62, 63, 280, 281, 282, 283, 284, 285, -1, + 287, -1, -1, -1, -1, -1, -1, -1, -1, 257, + -1, -1, -1, 300, 301, 302, 303, -1, -1, -1, + -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, - -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, - 420, 421, 37, 38, 124, 125, 41, 42, 43, 44, - 45, -1, 47, 312, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 58, 59, 60, 61, 62, 63, 257, - -1, -1, 331, -1, -1, -1, -1, -1, -1, 37, + 410, 411, 412, 349, 414, 415, 416, 417, 418, 419, + 420, 421, 257, 124, 125, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 312, -1, -1, 400, 401, -1, + -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, + -1, 414, 415, 416, 417, 418, 419, -1, 421, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, - -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, + -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 312, -1, -1, -1, -1, 124, - 125, -1, -1, -1, -1, 93, 94, -1, -1, -1, - -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - -1, 410, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 420, 421, -1, -1, -1, 124, 125, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 257, -1, -1, - 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, - 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 58, 59, 60, 61, 62, 63, -1, -1, -1, - -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, 312, 421, -1, -1, 93, 94, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, 257, 41, 42, -1, 44, 124, 125, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 58, 59, 60, 61, 62, 63, -1, -1, 37, 38, - -1, -1, 41, 42, 43, 44, 45, -1, 47, 257, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, - 59, 60, 61, 62, 63, 93, 94, 312, -1, -1, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, - -1, 421, -1, -1, 93, 94, 124, 125, -1, -1, - -1, -1, -1, -1, 312, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 257, -1, -1, -1, -1, 400, 401, -1, -1, 404, + -1, -1, -1, -1, -1, 93, 94, -1, 454, -1, + -1, -1, 400, 401, -1, 461, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, -1, 421, -1, -1, 124, 125, -1, -1, + -1, -1, -1, -1, -1, -1, 257, -1, -1, -1, + -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, -1, 421, -1, -1, -1, + 415, 416, 417, 418, 419, -1, 421, -1, 524, -1, + -1, -1, -1, 37, 38, 531, -1, 41, 42, 43, + 44, 45, -1, 47, -1, -1, 542, -1, -1, -1, + -1, 312, -1, -1, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, -1, 411, 412, 312, 414, 415, 416, 417, - 418, 419, -1, 421, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 37, 38, -1, 573, 41, 42, + -1, 44, -1, -1, 47, -1, -1, -1, -1, 93, + 94, -1, -1, -1, -1, 58, 59, 60, 61, 62, + 63, -1, -1, -1, -1, -1, 602, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, + 124, 125, -1, -1, 620, -1, -1, -1, -1, 625, + 93, 94, -1, -1, 630, -1, -1, -1, -1, 400, + 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, + 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, + 421, 124, 125, 37, 38, -1, -1, 41, 42, 43, + 44, 45, -1, 47, 312, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, - 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 58, 59, 60, 61, 62, 63, -1, 257, -1, - -1, -1, -1, -1, -1, 37, 38, -1, -1, 41, + 47, -1, -1, -1, -1, -1, -1, -1, -1, 93, + 94, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, - -1, -1, -1, -1, 312, -1, 93, 94, 60, 61, - 62, 63, -1, 400, 401, -1, -1, 404, 405, 406, - 407, 408, -1, 331, 411, 412, -1, 414, 415, 416, - 417, 418, 419, 312, 421, -1, -1, 124, 125, -1, - -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, - -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, - -1, -1, 124, -1, 126, -1, -1, -1, -1, 58, - 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, - -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, + 124, 125, -1, 257, -1, -1, 93, 94, 60, -1, + 62, -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, -1, 421, 93, 94, -1, -1, -1, -1, - -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, 421, -1, -1, 124, 125, -1, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, -1, -1, - 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, - 257, -1, -1, -1, -1, -1, 58, -1, 60, 61, - 62, 63, 37, 38, -1, -1, -1, 42, 43, -1, - 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 59, 60, 61, 62, 63, 37, - 38, -1, 94, 41, 42, 43, -1, 45, -1, 47, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 60, 61, 62, 63, -1, -1, -1, 94, - -1, -1, 124, -1, 126, -1, -1, -1, -1, -1, + 418, 419, -1, 421, -1, -1, -1, 124, 125, -1, + -1, 37, 38, -1, 257, -1, 42, 43, -1, 45, + -1, 47, -1, -1, -1, -1, -1, -1, 312, -1, + -1, -1, 58, -1, 60, 61, 62, 63, -1, -1, + -1, -1, -1, -1, 126, -1, -1, -1, -1, 37, + 38, -1, -1, 41, 42, 43, -1, 45, -1, 47, + -1, -1, -1, -1, -1, -1, -1, -1, 94, 312, + -1, -1, 60, 61, 62, 63, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 331, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, + 126, -1, -1, 257, -1, -1, 94, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, + 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, + 414, 415, 416, 417, 418, 419, 124, 421, 126, -1, + 257, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, + -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, + -1, 414, 415, 416, 417, 418, 419, -1, 421, 37, + 38, -1, -1, -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 312, -1, -1, -1, -1, -1, 94, -1, -1, 124, - -1, 126, -1, -1, -1, -1, -1, -1, 257, 331, - -1, -1, -1, -1, -1, -1, 38, -1, -1, 41, - -1, -1, 44, -1, -1, -1, 124, -1, 126, -1, - -1, -1, -1, -1, -1, -1, 58, 59, -1, 61, - -1, 63, -1, 400, 401, -1, -1, 404, 405, 406, + -1, 59, 60, 61, 62, 63, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, + 38, -1, -1, 41, 42, 43, -1, 45, -1, 47, + 312, -1, -1, -1, -1, -1, 94, -1, -1, -1, + -1, -1, 60, 61, 62, 63, 400, 401, -1, 331, + 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, + 414, 415, 416, 417, 418, 419, 124, 421, 126, -1, + -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, + -1, -1, -1, 400, 401, -1, 312, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, - 417, 418, 419, -1, 421, -1, -1, -1, -1, -1, - -1, 93, 94, -1, -1, -1, -1, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, -1, 421, - -1, -1, 124, 125, 37, 38, -1, -1, -1, 42, - 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 59, 60, 61, 62, - 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, - 312, 94, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, 421, -1, -1, -1, -1, -1, -1, 331, - -1, -1, -1, -1, -1, -1, -1, 312, -1, -1, - -1, 124, -1, 126, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 331, -1, -1, -1, - -1, -1, -1, -1, 312, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 331, -1, 257, -1, -1, -1, -1, + 417, 418, 419, -1, 421, 331, 124, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, -1, 421, - -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, -1, 421, -1, -1, -1, + 402, 403, -1, -1, 312, -1, -1, -1, -1, 411, + 412, -1, -1, -1, -1, -1, -1, -1, -1, 421, + -1, -1, -1, 331, -1, 37, 38, -1, -1, -1, + 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 59, 60, 61, + 62, 63, -1, -1, 400, 401, 402, 403, 404, 405, + 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, + 416, 417, 418, 419, -1, 421, -1, -1, -1, -1, + -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 124, 421, 126, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, -1, 41, 42, 43, -1, + 45, -1, 47, -1, 312, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 60, 61, 62, 63, -1, + -1, -1, -1, 331, -1, -1, -1, 37, 38, -1, + -1, 41, 42, 43, -1, 45, -1, 47, -1, -1, + -1, -1, -1, -1, 312, -1, -1, -1, -1, 94, + 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 331, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, + -1, 126, -1, -1, 94, -1, -1, -1, -1, -1, + -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, -1, 421, 124, -1, 126, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, 421, 37, 38, -1, -1, 41, 42, - 43, -1, 45, -1, 47, -1, 347, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, - 63, 37, 38, -1, -1, 41, 42, 43, -1, 45, + 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, + 312, -1, -1, -1, -1, -1, -1, 60, 61, 62, + 63, -1, -1, -1, -1, -1, -1, -1, -1, 331, + -1, 37, 38, -1, -1, 41, 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 60, 61, 62, 63, -1, 312, - -1, 94, 404, 405, 406, 407, 408, -1, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, 331, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 94, -1, - -1, 124, -1, 126, -1, -1, -1, -1, -1, -1, + -1, 94, -1, -1, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, - 126, 452, -1, -1, -1, -1, -1, -1, 459, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, - 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, - -1, 414, 415, 416, 417, 418, 419, -1, 421, 37, - 38, -1, -1, 41, 42, 43, -1, 45, -1, 47, + -1, 124, -1, 126, -1, -1, -1, -1, 94, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 312, -1, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 124, 421, + 126, -1, -1, -1, -1, -1, 331, -1, 37, 38, + -1, -1, 41, 42, 43, -1, 45, -1, 47, -1, + -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, + -1, 60, 61, 62, 63, -1, -1, -1, -1, -1, + -1, 331, -1, -1, -1, 37, 38, -1, -1, -1, + 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 94, -1, 59, 60, 61, + 62, 63, -1, -1, -1, 400, 401, 402, 403, 404, + 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, 124, 421, 126, -1, -1, + -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, + 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, + -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, + -1, 421, 124, -1, 126, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 37, 38, -1, 312, + -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 58, 331, 60, + 61, 62, 63, 37, 38, -1, -1, -1, 42, 43, + -1, 45, -1, 47, -1, -1, 312, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 60, 61, 62, 63, + -1, -1, -1, 94, -1, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 522, 60, 61, 62, 63, 37, 38, 529, -1, - 41, 42, 43, -1, 45, -1, 47, -1, -1, 540, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, - 61, 62, 63, 37, 38, -1, 94, 41, 42, 43, - -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, - 571, -1, -1, -1, -1, -1, 60, 61, 62, 63, - -1, -1, -1, 94, -1, -1, 124, -1, 126, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 600, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, - 94, -1, -1, 124, -1, 126, -1, 618, -1, -1, - -1, -1, 623, -1, -1, -1, -1, 628, 331, -1, - -1, -1, -1, -1, -1, -1, 312, -1, -1, -1, - 124, -1, 126, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 331, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, -1, -1, 42, 43, - -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 59, 60, 61, 62, 63, - -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 94, -1, -1, 124, -1, 126, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, 421, -1, - 94, -1, -1, -1, 400, 401, 402, 403, 404, 405, - 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, -1, 421, -1, -1, -1, -1, 124, -1, 126, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 312, -1, 411, 412, -1, 414, 415, + 416, 417, 418, 419, -1, 421, -1, -1, -1, -1, + -1, -1, 331, -1, 37, 38, -1, -1, -1, 42, + 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, + 312, -1, -1, -1, -1, -1, -1, 60, 61, 62, + 63, -1, -1, -1, -1, -1, -1, -1, -1, 331, -1, 37, 38, -1, -1, -1, 42, 43, -1, 45, - -1, 47, -1, -1, 312, -1, -1, -1, -1, -1, - -1, -1, 58, -1, 60, 61, 62, 63, -1, -1, - -1, -1, -1, 331, -1, -1, -1, -1, 37, 38, - -1, 312, -1, 42, 43, -1, 45, -1, 47, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 94, -1, - 331, 60, 61, 62, 63, -1, -1, -1, 312, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 331, 124, -1, - 126, -1, -1, -1, -1, 94, -1, -1, -1, -1, - -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, - 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, -1, 421, -1, 124, -1, 126, -1, 400, - 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, + -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 94, -1, -1, 60, 61, 62, 63, -1, -1, + -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, + -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, 124, 421, 126, -1, -1, -1, -1, 94, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, + 412, 312, 414, 415, 416, 417, 418, 419, 124, 421, + 126, 37, 38, -1, -1, 41, 42, 43, 44, 45, + 331, 47, -1, -1, -1, -1, -1, -1, 312, -1, + -1, -1, 58, 59, 60, 61, 62, 63, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 331, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, -1, 41, + 42, 43, 44, 45, -1, 47, -1, 93, 94, -1, + -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, + 62, 63, -1, -1, -1, -1, -1, -1, -1, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 124, 125, 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, - 421, -1, -1, -1, -1, -1, 400, 401, 402, 403, + 421, 93, 94, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, -1, 421, 312, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 331, -1, 37, - 38, -1, -1, -1, 42, 43, -1, 45, -1, 47, + 414, 415, 416, 417, 418, 419, -1, 421, -1, -1, + -1, -1, 124, 125, -1, 37, 38, -1, -1, 41, + 42, 43, 44, 45, -1, 47, -1, -1, -1, 312, + -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, + 62, 63, -1, -1, -1, -1, -1, -1, 331, -1, + -1, -1, -1, 38, -1, -1, 41, -1, 43, 44, + 45, -1, -1, -1, -1, -1, 312, -1, -1, -1, + -1, 93, 94, 58, 59, 60, 61, 62, 63, -1, + -1, -1, -1, -1, -1, 331, -1, -1, -1, -1, + -1, 38, -1, -1, 41, -1, 43, 44, 45, -1, + -1, 257, 124, 125, -1, -1, -1, -1, 93, 94, + -1, 58, 59, 60, 61, 62, 63, 400, 401, 402, + 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, + -1, -1, 415, 416, 417, 418, 419, -1, 421, 124, + 125, -1, -1, -1, -1, 257, 93, 94, -1, -1, + -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, + 406, 407, 408, -1, -1, 411, 412, -1, -1, -1, + 416, 417, 418, 419, -1, 421, -1, 124, 125, -1, + -1, 38, -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, -1, -1, 42, - 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 94, 60, 61, 62, - 63, -1, -1, -1, -1, -1, 400, 401, 402, 403, - 404, 405, 406, 407, 408, -1, 312, 411, 412, -1, - 414, 415, 416, 417, 418, 419, 124, 421, 126, -1, - -1, 94, -1, -1, -1, 331, -1, -1, -1, -1, - -1, -1, -1, -1, 37, 38, -1, -1, 41, 42, - 43, 44, 45, 312, 47, -1, -1, -1, -1, -1, - -1, 124, -1, 126, -1, 58, 59, 60, 61, 62, - 63, -1, 331, -1, -1, -1, -1, -1, -1, -1, + -1, 58, 59, -1, 61, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 93, 94, -1, -1, 400, 401, 402, 403, 404, 405, + -1, -1, -1, -1, -1, 257, 93, 94, -1, -1, + -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, -1, 421, -1, -1, -1, -1, - -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, 421, 37, 38, -1, -1, 41, 42, 43, - 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, + 416, 417, 418, 419, -1, -1, -1, 124, 125, -1, + -1, -1, 257, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, + -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, + 412, -1, 414, 415, 416, 417, 418, 419, -1, -1, + 257, -1, 38, -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, - 47, -1, -1, -1, 312, -1, -1, -1, -1, 93, - 94, 58, 59, 60, 61, 62, 63, -1, -1, -1, - -1, -1, -1, 331, -1, -1, -1, -1, 38, -1, - -1, 41, -1, 43, 44, 45, -1, -1, -1, 312, - 124, 125, -1, -1, -1, -1, 93, 94, 58, 59, - 60, 61, 62, 63, 257, -1, -1, -1, 331, -1, - -1, -1, -1, -1, -1, 38, -1, -1, 41, -1, - 43, 44, 45, -1, -1, -1, -1, 124, 125, -1, - -1, -1, -1, 93, 94, 58, 59, 60, 61, 62, - 63, -1, 400, 401, 402, 403, 404, 405, 406, 407, - 408, -1, -1, 411, 412, -1, -1, 415, 416, 417, - 418, 419, -1, 421, 124, 125, -1, -1, -1, -1, - 93, 94, -1, -1, -1, -1, -1, 400, 401, 402, - 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, - -1, -1, -1, 416, 417, 418, 419, -1, 421, -1, - -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 38, -1, -1, 41, -1, -1, 44, -1, - -1, -1, -1, 257, -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, -1, 61, -1, 63, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 257, 414, 415, 416, 417, 418, 419, 93, 94, -1, - -1, 38, -1, -1, 41, -1, -1, 44, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 58, 59, -1, 61, -1, 63, 257, 124, 125, - 38, -1, -1, 41, -1, -1, 44, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 58, 59, -1, 61, -1, 63, 93, 94, -1, -1, - -1, -1, -1, -1, 257, -1, -1, -1, -1, 38, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 93, 94, 124, 125, 58, - 59, -1, 61, -1, 63, -1, 400, 401, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, 124, 125, -1, -1, - -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 93, 94, 58, + 59, -1, 61, -1, 63, -1, -1, -1, 400, 401, + -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 124, 125, + 257, -1, -1, -1, 93, 94, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, + 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, 124, 125, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, - 417, 418, 419, -1, -1, 124, 125, -1, -1, -1, - -1, 257, -1, -1, -1, -1, -1, -1, -1, -1, - 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 257, 414, 415, 416, 417, 418, 419, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 38, -1, - -1, 41, -1, -1, 44, -1, -1, -1, -1, 257, - -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, - -1, 61, 41, 63, -1, 44, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 38, -1, -1, 41, 58, - 59, 44, 61, -1, 63, -1, -1, -1, 257, -1, - -1, -1, -1, 93, 94, 58, 59, -1, 61, -1, - 63, -1, -1, -1, -1, -1, -1, -1, 404, 405, - 406, 407, 408, -1, 93, 411, 412, -1, 414, 415, - 416, 417, 418, 419, 124, 125, -1, -1, -1, 38, - 93, 94, 41, -1, -1, 44, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 125, -1, -1, 58, - 59, -1, 61, -1, 63, -1, -1, -1, -1, -1, - -1, 124, 125, -1, -1, -1, -1, 404, 405, 406, + 417, 418, 419, -1, -1, -1, -1, 38, -1, -1, + 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 58, 59, -1, + 61, -1, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 38, -1, -1, 41, -1, -1, + 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 257, 93, 94, 58, 59, -1, 61, -1, 63, + -1, -1, -1, -1, -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, - 417, 418, 419, -1, 93, 94, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 404, 405, 406, 407, - 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, -1, -1, -1, 124, 125, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 417, 418, 419, 124, 125, -1, -1, -1, 257, 93, + 94, 38, -1, -1, 41, -1, -1, 44, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, + 41, 58, 59, 44, 61, -1, 63, -1, -1, -1, + 124, 125, -1, -1, -1, -1, -1, 58, 59, -1, + 61, 38, 63, -1, 41, -1, -1, 44, -1, -1, + -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, + -1, 58, 59, -1, 61, -1, 63, -1, -1, -1, + -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 124, 125, -1, + -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, + -1, -1, -1, 124, 125, -1, -1, -1, 404, 405, + 406, 407, 408, -1, 41, 411, 412, 44, 414, 415, + 416, 417, 418, 419, -1, -1, 257, 124, 125, -1, + -1, 58, 59, -1, 61, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, 38, -1, -1, 41, -1, 257, 44, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 38, -1, - -1, 41, 58, 59, 44, 61, -1, 63, 257, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, - -1, 61, -1, 63, 257, 38, -1, -1, 41, -1, - -1, 44, -1, -1, -1, -1, -1, 93, 94, -1, - -1, -1, -1, -1, -1, 58, 59, -1, 61, -1, - 63, -1, -1, 93, 94, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 124, 125, - -1, -1, -1, -1, -1, -1, -1, -1, 257, -1, - 93, 94, -1, -1, 124, 125, -1, -1, -1, -1, + 419, -1, -1, 257, -1, -1, 93, -1, -1, 38, + -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 38, -1, -1, 41, 58, + 59, 44, 61, -1, 63, -1, -1, -1, 125, -1, + -1, -1, -1, -1, -1, 58, 59, -1, 61, 38, + 63, -1, 41, -1, -1, 44, -1, -1, -1, -1, + 257, -1, -1, -1, 93, 94, -1, -1, -1, 58, + 59, -1, 61, -1, 63, -1, 257, -1, -1, -1, + 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, + 257, -1, -1, -1, 93, 94, -1, -1, -1, -1, + -1, 124, 125, 404, 405, 406, 407, 408, -1, -1, + 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, + -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 33, -1, 35, -1, -1, -1, -1, - 40, 124, 125, 43, -1, 45, -1, -1, -1, -1, + 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, + 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, + 257, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 58, 59, -1, + 61, -1, 63, -1, -1, -1, -1, 404, 405, 406, + 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, 404, 405, 406, 407, 408, 257, -1, + 411, 412, 93, 414, 415, 416, 417, 418, 419, -1, + -1, -1, -1, -1, 257, -1, -1, 404, 405, 406, + 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, -1, 125, -1, -1, -1, 257, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, + -1, 35, -1, -1, -1, -1, 40, -1, -1, 43, + -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 60, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 404, 405, 406, + 407, 408, -1, -1, -1, -1, -1, 414, 415, 416, + 417, 418, 419, -1, -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 60, -1, -1, -1, 404, 405, 406, 407, 408, -1, - -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, - -1, -1, -1, -1, -1, 404, 405, 406, 407, 408, - -1, 91, -1, -1, -1, 414, 415, 416, 417, 418, - 419, 404, 405, 406, 407, 408, -1, -1, 411, 412, - -1, 414, 415, 416, 417, 418, 419, -1, -1, -1, - 33, -1, 35, -1, -1, -1, 126, 40, -1, -1, - 43, 257, 45, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 257, -1, 62, + -1, 33, -1, 35, -1, -1, -1, -1, 40, -1, + -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, + -1, -1, 126, -1, -1, 404, 405, 406, 407, 408, + 62, -1, -1, -1, -1, 414, 415, 416, 417, 418, + 419, 404, 405, 406, 407, 408, 257, -1, -1, -1, + -1, 414, 415, 416, 417, 418, 419, -1, -1, 91, -1, -1, -1, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, -1, -1, 257, -1, -1, -1, 91, 33, - -1, 35, -1, -1, -1, -1, 40, -1, -1, 43, - 33, 45, 35, -1, -1, -1, -1, 40, -1, -1, - 43, -1, 45, -1, 58, -1, -1, -1, -1, -1, - -1, -1, -1, 126, -1, -1, -1, -1, 61, 33, - -1, 35, -1, -1, -1, -1, 40, -1, -1, 43, - -1, 45, -1, -1, -1, -1, -1, 91, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 61, 91, -1, + -1, -1, -1, -1, -1, 414, 415, 416, 417, 418, + 419, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 33, 126, 35, -1, -1, -1, -1, + 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, + -1, -1, 33, -1, 35, -1, -1, -1, -1, 40, + -1, 33, 43, 35, 45, -1, -1, -1, 40, -1, + -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, + 61, 91, -1, -1, -1, -1, 260, 261, 262, 263, + 264, 265, 33, -1, 35, -1, -1, -1, -1, 40, + -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, + 91, -1, 286, -1, -1, -1, 126, -1, -1, 91, + 61, -1, -1, 404, 405, 406, 407, 408, -1, -1, + -1, -1, -1, 414, 415, 416, 417, 418, 419, 313, + -1, -1, -1, -1, -1, 126, -1, -1, -1, -1, + 91, 123, -1, -1, 126, -1, -1, -1, 260, 261, + 262, 263, 264, 265, -1, -1, 340, -1, -1, -1, + -1, -1, 346, -1, -1, -1, -1, -1, -1, 33, + -1, 35, -1, -1, 286, 126, 40, -1, -1, 43, + -1, 45, -1, 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 401, 402, 403, + -1, -1, -1, -1, -1, -1, -1, 91, 340, 93, + -1, -1, -1, -1, 346, -1, -1, -1, -1, -1, 260, 261, 262, 263, 264, 265, -1, -1, -1, -1, - -1, -1, 126, -1, -1, -1, -1, 91, 404, 405, - 406, 407, 408, 126, -1, -1, 286, -1, 414, 415, - 416, 417, 418, 419, 404, 405, 406, 407, 408, -1, - -1, -1, -1, -1, 414, 415, 416, 417, 418, 419, - -1, -1, 126, 313, -1, -1, -1, -1, -1, -1, - -1, 404, 405, 406, 407, 408, -1, -1, -1, -1, - -1, 414, 415, 416, 417, 418, 419, -1, -1, -1, - 340, -1, -1, -1, -1, -1, 346, 260, 261, 262, - 263, 264, 265, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 367, 33, -1, - 35, -1, -1, 286, -1, 40, -1, -1, 43, -1, - 45, 33, -1, 35, -1, -1, -1, -1, 40, -1, - -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, - 313, 401, 402, 403, -1, -1, 260, 261, 262, 263, - 264, 265, -1, -1, -1, -1, -1, 260, 261, 262, - 263, 264, 265, -1, -1, -1, 91, 340, -1, -1, - -1, -1, 286, 346, -1, -1, -1, -1, -1, 91, - -1, 93, -1, 286, -1, -1, 260, 261, 262, 263, - 264, 265, -1, -1, 367, -1, -1, -1, 123, 313, - -1, 126, -1, -1, -1, -1, -1, -1, -1, 33, - 313, 35, 286, -1, 126, -1, 40, -1, -1, 43, - -1, 45, -1, -1, -1, -1, 340, 400, -1, 402, - 403, -1, 346, -1, -1, -1, -1, 340, -1, 313, - 33, -1, 35, 346, -1, -1, -1, 40, -1, -1, - 43, -1, 45, 367, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 367, -1, 340, 91, -1, -1, + -1, -1, -1, -1, -1, 367, 368, -1, -1, -1, + -1, -1, 126, -1, -1, -1, 286, -1, -1, 260, + 261, 262, 263, 264, 265, -1, -1, -1, 260, 261, + 262, 263, 264, 265, -1, -1, -1, 33, 400, 35, + 402, 403, -1, 313, 40, 286, -1, 43, -1, 45, + -1, -1, -1, -1, 286, -1, -1, -1, -1, 260, + 261, 262, 263, 264, 265, -1, -1, 33, -1, 35, + 340, -1, 313, -1, 40, -1, 346, 43, -1, 45, + -1, 313, -1, -1, -1, 286, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, -1, 367, 368, 340, + -1, -1, -1, -1, -1, 346, -1, -1, 340, -1, + -1, -1, 313, -1, 346, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, 367, 368, -1, -1, + 126, -1, 402, 403, -1, 367, 368, -1, -1, 340, + -1, -1, -1, -1, -1, 346, 260, 261, 262, 263, + 264, 265, -1, -1, -1, -1, -1, -1, -1, -1, + 126, 402, 403, -1, -1, -1, 367, 368, -1, -1, + 402, 403, 286, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, + -1, 402, 403, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 340, -1, -1, -1, -1, -1, 346, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 402, 403, - -1, -1, -1, 367, -1, -1, -1, -1, 91, 402, - 403, -1, 126, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 367, 368, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 260, 261, 262, 263, 264, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 402, 403, - -1, -1, -1, 126, -1, 260, 261, 262, 263, 264, - 265, -1, -1, -1, -1, -1, -1, -1, 260, 261, - 262, 263, 264, 265, -1, -1, -1, -1, -1, -1, - -1, 286, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 286, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 313, -1, + 286, -1, -1, -1, 260, 261, 262, 263, 264, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 340, -1, -1, -1, -1, - -1, 346, -1, -1, -1, -1, -1, -1, 340, -1, - -1, -1, -1, -1, 346, -1, 260, 261, 262, 263, - 264, 265, 367, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 367, -1, -1, -1, -1, - -1, -1, 286, -1, -1, -1, -1, 260, 261, 262, - 263, 264, 265, -1, -1, -1, -1, 402, 403, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, - 402, 403, -1, 286, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 313, -1, -1, + 286, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 340, -1, -1, -1, - 313, -1, 346, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 340, -1, -1, 313, -1, -1, + 346, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 367, -1, -1, -1, 340, -1, -1, - -1, -1, -1, 346, -1, -1, -1, -1, -1, -1, + -1, 367, 368, -1, 340, -1, -1, -1, -1, -1, + 346, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 367, -1, -1, -1, 402, 403, + -1, 367, 368, -1, -1, -1, 402, 403, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 402, - 403, + -1, -1, -1, -1, -1, -1, 402, 403, ); protected static $yyFinal= 2; protected static $yyName= array( @@ -1672,10 +1683,10 @@ class Parser extends \text\parser\generic\AbstractParser { 'T_VARIABLE', 'T_RETURN', 'T_TRY', 'T_THROW', 'T_CATCH', 'T_FINALLY', 'T_NEW', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'T_FOR', 'T_WHILE', 'T_DO', 'T_FOREACH', 'T_IN', 'T_BREAK', - 'T_CONTINUE', 'T_YIELD', NULL, NULL, 'T_IF', 'T_ELSE', 'T_SWITCH', 'T_CASE', - 'T_DEFAULT', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + 'T_CONTINUE', 'T_YIELD', 'T_YIELD_FROM', NULL, 'T_IF', 'T_ELSE', 'T_SWITCH', + 'T_CASE', 'T_DEFAULT', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - 'T_GE', 'T_SE', 'T_INC', 'T_DEC', 'T_ADD_EQUAL', 'T_SUB_EQUAL', + NULL, NULL, 'T_GE', 'T_SE', 'T_INC', 'T_DEC', 'T_ADD_EQUAL', 'T_SUB_EQUAL', 'T_MUL_EQUAL', 'T_DIV_EQUAL', 'T_MOD_EQUAL', NULL, 'T_DOUBLE_COLON', 'T_EQUALS', 'T_NOT_EQUALS', 'T_DOUBLE_ARROW', 'T_BOOLEAN_OR', 'T_BOOLEAN_AND', 'T_CONCAT_EQUAL', 'T_OR_EQUAL', 'T_AND_EQUAL', @@ -1835,7 +1846,7 @@ public function yyparse($yyLex) { // Actions switch ($yyN) { - case 1: #line 188 "src/main/jay/grammars/xp.jay" + case 1: #line 190 "src/main/jay/grammars/xp.jay" { $yyVal= new ParseTree(); $yyVal->origin= $yyLex->fileName; @@ -1844,54 +1855,54 @@ public function yyparse($yyLex) { $yyVal->declaration= $yyVals[0+$yyTop]; } break; - case 3: #line 200 "src/main/jay/grammars/xp.jay" + case 3: #line 202 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new PackageNode()); } break; - case 4: #line 200 "src/main/jay/grammars/xp.jay" + case 4: #line 202 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->name= $yyVals[-1+$yyTop]; } break; - case 7: #line 211 "src/main/jay/grammars/xp.jay" + case 7: #line 213 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 8: #line 212 "src/main/jay/grammars/xp.jay" + case 8: #line 214 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 9: #line 216 "src/main/jay/grammars/xp.jay" + case 9: #line 218 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new ImportNode(array('name' => $yyVals[-3+$yyTop].'.'.$yyVals[-1+$yyTop]))); } break; - case 10: #line 219 "src/main/jay/grammars/xp.jay" + case 10: #line 221 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new NativeImportNode(array('name' => $yyVals[-3+$yyTop].'.'.$yyVals[-1+$yyTop]))); } break; - case 11: #line 222 "src/main/jay/grammars/xp.jay" + case 11: #line 224 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new StaticImportNode(array('name' => $yyVals[-3+$yyTop].'.'.$yyVals[-1+$yyTop]))); } break; - case 12: #line 225 "src/main/jay/grammars/xp.jay" + case 12: #line 227 "src/main/jay/grammars/xp.jay" { $this->error(E_WARNING, 'Deprecated static import form used', array($yyVals[-3+$yyTop].'::'.$yyVals[-1+$yyTop])); $yyVal= $yyLex->create(new StaticImportNode(array('name' => $yyVals[-3+$yyTop].'.'.$yyVals[-1+$yyTop]))); } break; - case 16: #line 238 "src/main/jay/grammars/xp.jay" + case 16: #line 240 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[-2+$yyTop].'.'.$yyVals[0+$yyTop]; } break; - case 18: #line 243 "src/main/jay/grammars/xp.jay" + case 18: #line 245 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[-2+$yyTop].'.'.$yyVals[0+$yyTop]; } break; - case 19: #line 244 "src/main/jay/grammars/xp.jay" + case 19: #line 246 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[-2+$yyTop].'.'.$yyVals[0+$yyTop]; } break; - case 20: #line 250 "src/main/jay/grammars/xp.jay" + case 20: #line 252 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ClassNode(), TRUE); } break; - case 21: #line 250 "src/main/jay/grammars/xp.jay" + case 21: #line 252 "src/main/jay/grammars/xp.jay" { $yyVals[-7+$yyTop]->modifiers= $yyVals[-8+$yyTop][0]; $yyVals[-7+$yyTop]->annotations= $yyVals[-8+$yyTop][1]; @@ -1902,10 +1913,10 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-7+$yyTop]; } break; - case 22: #line 259 "src/main/jay/grammars/xp.jay" + case 22: #line 261 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new EnumNode(), TRUE); } break; - case 23: #line 259 "src/main/jay/grammars/xp.jay" + case 23: #line 261 "src/main/jay/grammars/xp.jay" { $yyVals[-7+$yyTop]->modifiers= $yyVals[-8+$yyTop][0]; $yyVals[-7+$yyTop]->annotations= $yyVals[-8+$yyTop][1]; @@ -1916,10 +1927,10 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-7+$yyTop]; } break; - case 24: #line 268 "src/main/jay/grammars/xp.jay" + case 24: #line 270 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InterfaceNode(), TRUE); } break; - case 25: #line 268 "src/main/jay/grammars/xp.jay" + case 25: #line 270 "src/main/jay/grammars/xp.jay" { $yyVals[-6+$yyTop]->modifiers= $yyVals[-7+$yyTop][0]; $yyVals[-6+$yyTop]->annotations= $yyVals[-7+$yyTop][1]; @@ -1929,78 +1940,78 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-6+$yyTop]; } break; - case 26: #line 279 "src/main/jay/grammars/xp.jay" + case 26: #line 281 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 27: #line 280 "src/main/jay/grammars/xp.jay" + case 27: #line 282 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 28: #line 284 "src/main/jay/grammars/xp.jay" + case 28: #line 286 "src/main/jay/grammars/xp.jay" { $yyVal= array(); } break; - case 29: #line 285 "src/main/jay/grammars/xp.jay" + case 29: #line 287 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 30: #line 289 "src/main/jay/grammars/xp.jay" + case 30: #line 291 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 31: #line 290 "src/main/jay/grammars/xp.jay" + case 31: #line 292 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 32: #line 294 "src/main/jay/grammars/xp.jay" + case 32: #line 296 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 33: #line 295 "src/main/jay/grammars/xp.jay" + case 33: #line 297 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[-1+$yyTop]; } break; - case 34: #line 299 "src/main/jay/grammars/xp.jay" + case 34: #line 301 "src/main/jay/grammars/xp.jay" { $yyVal[]= $yyVals[0+$yyTop]; } break; - case 35: #line 300 "src/main/jay/grammars/xp.jay" + case 35: #line 302 "src/main/jay/grammars/xp.jay" { $yyVal= array(); } break; - case 36: #line 304 "src/main/jay/grammars/xp.jay" + case 36: #line 306 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 37: #line 305 "src/main/jay/grammars/xp.jay" + case 37: #line 307 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 38: #line 306 "src/main/jay/grammars/xp.jay" + case 38: #line 308 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new StaticInitializerNode($yyVals[-1+$yyTop])); } break; - case 39: #line 310 "src/main/jay/grammars/xp.jay" + case 39: #line 312 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 40: #line 311 "src/main/jay/grammars/xp.jay" + case 40: #line 313 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 41: #line 312 "src/main/jay/grammars/xp.jay" + case 41: #line 314 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 42: #line 316 "src/main/jay/grammars/xp.jay" + case 42: #line 318 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 43: #line 317 "src/main/jay/grammars/xp.jay" + case 43: #line 319 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 44: #line 321 "src/main/jay/grammars/xp.jay" + case 44: #line 323 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new EnumMemberNode(array('name' => $yyVals[0+$yyTop]))); } break; - case 45: #line 321 "src/main/jay/grammars/xp.jay" + case 45: #line 323 "src/main/jay/grammars/xp.jay" { $yyVals[-2+$yyTop]->body= $yyVals[0+$yyTop]; } break; - case 46: #line 324 "src/main/jay/grammars/xp.jay" + case 46: #line 326 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new EnumMemberNode(array('name' => $yyVals[0+$yyTop]))); } break; - case 47: #line 324 "src/main/jay/grammars/xp.jay" + case 47: #line 326 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->value= $yyVals[-2+$yyTop]; $yyVals[-5+$yyTop]->body= $yyVals[0+$yyTop]; } break; - case 48: #line 334 "src/main/jay/grammars/xp.jay" + case 48: #line 336 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new FieldNode()); $yyVal->modifiers= $yyVals[-4+$yyTop][0]; $yyVal->annotations= $yyVals[-4+$yyTop][1]; @@ -2009,7 +2020,7 @@ public function yyparse($yyLex) { $yyVal->initialization= $yyVals[-1+$yyTop]; } break; - case 49: #line 341 "src/main/jay/grammars/xp.jay" + case 49: #line 343 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->modifiers= $yyVals[-5+$yyTop][0]; $yyVals[-3+$yyTop]->annotations= $yyVals[-5+$yyTop][1]; @@ -2018,39 +2029,39 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-3+$yyTop]; } break; - case 50: #line 348 "src/main/jay/grammars/xp.jay" + case 50: #line 350 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new ClassConstantNode($yyVals[-3+$yyTop], new TypeName($yyVals[-4+$yyTop]), $yyVals[-1+$yyTop])); } break; - case 51: #line 354 "src/main/jay/grammars/xp.jay" + case 51: #line 356 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new PropertyNode(array('name' => $yyVals[0+$yyTop]))); } break; - case 52: #line 355 "src/main/jay/grammars/xp.jay" + case 52: #line 357 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new IndexerNode(array('parameter' => $yyVals[-1+$yyTop]))); } break; - case 53: #line 359 "src/main/jay/grammars/xp.jay" + case 53: #line 361 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 54: #line 360 "src/main/jay/grammars/xp.jay" + case 54: #line 362 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], $yyVals[0+$yyTop]); } break; - case 55: #line 364 "src/main/jay/grammars/xp.jay" + case 55: #line 366 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[-1+$yyTop]=> NULL); } break; - case 56: #line 365 "src/main/jay/grammars/xp.jay" + case 56: #line 367 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[-3+$yyTop] => $yyVals[-1+$yyTop]); } break; - case 57: #line 369 "src/main/jay/grammars/xp.jay" + case 57: #line 371 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 58: #line 370 "src/main/jay/grammars/xp.jay" + case 58: #line 372 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 59: #line 376 "src/main/jay/grammars/xp.jay" + case 59: #line 378 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new MethodNode(), TRUE); } break; - case 60: #line 376 "src/main/jay/grammars/xp.jay" + case 60: #line 378 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->modifiers= $yyVals[-8+$yyTop][0]; $yyVals[-5+$yyTop]->annotations= $yyVals[-8+$yyTop][1]; @@ -2063,10 +2074,10 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-5+$yyTop]; } break; - case 61: #line 387 "src/main/jay/grammars/xp.jay" + case 61: #line 389 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new MethodNode(), TRUE); } break; - case 62: #line 387 "src/main/jay/grammars/xp.jay" + case 62: #line 389 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->modifiers= $yyVals[-8+$yyTop][0]; $yyVals[-5+$yyTop]->annotations= $yyVals[-8+$yyTop][1]; @@ -2079,10 +2090,10 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-5+$yyTop]; } break; - case 63: #line 398 "src/main/jay/grammars/xp.jay" + case 63: #line 400 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 64: #line 398 "src/main/jay/grammars/xp.jay" + case 64: #line 400 "src/main/jay/grammars/xp.jay" { /* Assert only certain methods are allowed here. This could be done by making*/ /* __construct and friends keywords - or this way!*/ @@ -2109,10 +2120,10 @@ public function yyparse($yyLex) { $yyVal->body= $yyVals[0+$yyTop]; } break; - case 65: #line 423 "src/main/jay/grammars/xp.jay" + case 65: #line 425 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new OperatorNode(), TRUE); } break; - case 66: #line 423 "src/main/jay/grammars/xp.jay" + case 66: #line 425 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->modifiers= $yyVals[-9+$yyTop][0]; $yyVals[-5+$yyTop]->annotations= $yyVals[-9+$yyTop][1]; @@ -2124,68 +2135,68 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-5+$yyTop]; } break; - case 67: #line 436 "src/main/jay/grammars/xp.jay" + case 67: #line 438 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[-2+$yyTop]); } break; - case 68: #line 437 "src/main/jay/grammars/xp.jay" + case 68: #line 439 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop], NULL); } break; - case 69: #line 441 "src/main/jay/grammars/xp.jay" + case 69: #line 443 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 70: #line 442 "src/main/jay/grammars/xp.jay" + case 70: #line 444 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 71: #line 446 "src/main/jay/grammars/xp.jay" + case 71: #line 448 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 72: #line 449 "src/main/jay/grammars/xp.jay" + case 72: #line 451 "src/main/jay/grammars/xp.jay" { $yyVals[-1+$yyTop] && $yyVals[-3+$yyTop]->parameters= array('default' => $yyVals[-1+$yyTop]); $yyVal= $yyVals[-3+$yyTop]; } break; - case 73: #line 453 "src/main/jay/grammars/xp.jay" + case 73: #line 455 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->parameters= $yyVals[-1+$yyTop]; $yyVal= $yyVals[-3+$yyTop]; } break; - case 74: #line 460 "src/main/jay/grammars/xp.jay" + case 74: #line 462 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new AnnotationNode()); $yyVal->target= $yyVals[-2+$yyTop]; $yyVal->type= $yyVals[0+$yyTop]; } break; - case 75: #line 465 "src/main/jay/grammars/xp.jay" + case 75: #line 467 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new AnnotationNode()); $yyVal->target= '$'.$yyVals[-2+$yyTop]; $yyVal->type= $yyVals[0+$yyTop]; } break; - case 76: #line 470 "src/main/jay/grammars/xp.jay" + case 76: #line 472 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new AnnotationNode()); $yyVal->type= $yyVals[0+$yyTop]; } break; - case 77: #line 477 "src/main/jay/grammars/xp.jay" + case 77: #line 479 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 78: #line 478 "src/main/jay/grammars/xp.jay" + case 78: #line 480 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 79: #line 482 "src/main/jay/grammars/xp.jay" + case 79: #line 484 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[-2+$yyTop] => $yyVals[0+$yyTop]); } break; - case 80: #line 483 "src/main/jay/grammars/xp.jay" + case 80: #line 485 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[-2+$yyTop] => $yyVals[0+$yyTop]); } break; - case 82: #line 488 "src/main/jay/grammars/xp.jay" + case 82: #line 490 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new InstanceCreationNode()); $yyVal->type= $yyVals[-3+$yyTop]; @@ -2193,101 +2204,101 @@ public function yyparse($yyLex) { $yyVal->body= NULL; } break; - case 83: #line 494 "src/main/jay/grammars/xp.jay" + case 83: #line 496 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new ConstantAccessNode(new TypeName($yyVals[-2+$yyTop]), $yyVals[0+$yyTop])); } break; - case 84: #line 497 "src/main/jay/grammars/xp.jay" + case 84: #line 499 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new StaticMemberAccessNode(new TypeName($yyVals[-2+$yyTop]), $yyVals[0+$yyTop])); } break; - case 85: #line 503 "src/main/jay/grammars/xp.jay" + case 85: #line 505 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 86: #line 504 "src/main/jay/grammars/xp.jay" + case 86: #line 506 "src/main/jay/grammars/xp.jay" { $yyVal= (array)$yyVals[-1+$yyTop]; } break; - case 87: #line 505 "src/main/jay/grammars/xp.jay" + case 87: #line 507 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyLex->create(new ReturnNode($yyVals[-1+$yyTop]))); } break; - case 88: #line 509 "src/main/jay/grammars/xp.jay" + case 88: #line 511 "src/main/jay/grammars/xp.jay" { $yyVal= array(NULL, NULL); } break; - case 89: #line 510 "src/main/jay/grammars/xp.jay" + case 89: #line 512 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[0+$yyTop][0]['type']); } break; - case 90: #line 511 "src/main/jay/grammars/xp.jay" + case 90: #line 513 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop], NULL); } break; - case 91: #line 515 "src/main/jay/grammars/xp.jay" + case 91: #line 517 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 92: #line 516 "src/main/jay/grammars/xp.jay" + case 92: #line 518 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 93: #line 520 "src/main/jay/grammars/xp.jay" + case 93: #line 522 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 94: #line 521 "src/main/jay/grammars/xp.jay" + case 94: #line 523 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 95: #line 525 "src/main/jay/grammars/xp.jay" + case 95: #line 527 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge(array('name' => $yyVals[-1+$yyTop]), $yyVals[-2+$yyTop]); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 96: #line 526 "src/main/jay/grammars/xp.jay" + case 96: #line 528 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge(array('name' => $yyVals[0+$yyTop], 'vararg' => TRUE), $yyVals[-2+$yyTop]); } break; - case 97: #line 527 "src/main/jay/grammars/xp.jay" + case 97: #line 529 "src/main/jay/grammars/xp.jay" { $yyVal= array('assign' => $yyVals[-1+$yyTop]); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 98: #line 528 "src/main/jay/grammars/xp.jay" + case 98: #line 530 "src/main/jay/grammars/xp.jay" { $yyVal= array('name' => $yyVals[-1+$yyTop], 'type' => TypeName::$VAR, 'check' => FALSE); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 99: #line 532 "src/main/jay/grammars/xp.jay" + case 99: #line 534 "src/main/jay/grammars/xp.jay" { $yyVal= array('type' => $yyVals[0+$yyTop], 'check' => TRUE); } break; - case 100: #line 533 "src/main/jay/grammars/xp.jay" + case 100: #line 535 "src/main/jay/grammars/xp.jay" { $yyVal= array('type' => $yyVals[-1+$yyTop], 'check' => FALSE); } break; - case 101: #line 537 "src/main/jay/grammars/xp.jay" + case 101: #line 539 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 102: #line 538 "src/main/jay/grammars/xp.jay" + case 102: #line 540 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 109: #line 557 "src/main/jay/grammars/xp.jay" + case 109: #line 559 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 111: #line 562 "src/main/jay/grammars/xp.jay" + case 111: #line 564 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 112: #line 563 "src/main/jay/grammars/xp.jay" + case 112: #line 565 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 113: #line 567 "src/main/jay/grammars/xp.jay" + case 113: #line 569 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ReturnNode()); } break; - case 114: #line 567 "src/main/jay/grammars/xp.jay" + case 114: #line 569 "src/main/jay/grammars/xp.jay" { $yyVal->expression= $yyVals[-1+$yyTop]; } break; - case 115: #line 570 "src/main/jay/grammars/xp.jay" + case 115: #line 572 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new IfNode()); } break; - case 116: #line 570 "src/main/jay/grammars/xp.jay" + case 116: #line 572 "src/main/jay/grammars/xp.jay" { $yyVals[-6+$yyTop]->condition= $yyVals[-3+$yyTop]; $yyVals[-6+$yyTop]->statements= $yyVals[-1+$yyTop]; $yyVals[-6+$yyTop]->otherwise= $yyVals[0+$yyTop]; } break; - case 117: #line 575 "src/main/jay/grammars/xp.jay" + case 117: #line 577 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForNode()); } break; - case 118: #line 575 "src/main/jay/grammars/xp.jay" + case 118: #line 577 "src/main/jay/grammars/xp.jay" { if ($yyVals[-6+$yyTop]) { $yyVals[-9+$yyTop]->initialization= $yyVals[-6+$yyTop]; @@ -2299,168 +2310,168 @@ public function yyparse($yyLex) { $yyVals[-9+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 119: #line 585 "src/main/jay/grammars/xp.jay" + case 119: #line 587 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForeachNode()); } break; - case 120: #line 585 "src/main/jay/grammars/xp.jay" + case 120: #line 587 "src/main/jay/grammars/xp.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-7+$yyTop]->assignment= $yyVals[-4+$yyTop]; $yyVals[-7+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 121: #line 590 "src/main/jay/grammars/xp.jay" + case 121: #line 592 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new WhileNode()); } break; - case 122: #line 590 "src/main/jay/grammars/xp.jay" + case 122: #line 592 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-5+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 123: #line 594 "src/main/jay/grammars/xp.jay" + case 123: #line 596 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DoNode()); } break; - case 124: #line 594 "src/main/jay/grammars/xp.jay" + case 124: #line 596 "src/main/jay/grammars/xp.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-7+$yyTop]->statements= $yyVals[-5+$yyTop]; } break; - case 125: #line 598 "src/main/jay/grammars/xp.jay" + case 125: #line 600 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new SwitchNode()); } break; - case 126: #line 598 "src/main/jay/grammars/xp.jay" + case 126: #line 600 "src/main/jay/grammars/xp.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-4+$yyTop]; $yyVals[-7+$yyTop]->cases= $yyVals[-1+$yyTop]; } break; - case 127: #line 602 "src/main/jay/grammars/xp.jay" + case 127: #line 604 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new BreakNode()); } break; - case 129: #line 603 "src/main/jay/grammars/xp.jay" + case 129: #line 605 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ContinueNode()); } break; - case 131: #line 604 "src/main/jay/grammars/xp.jay" + case 131: #line 606 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ThrowNode()); } break; - case 132: #line 604 "src/main/jay/grammars/xp.jay" + case 132: #line 606 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->expression= $yyVals[-1+$yyTop]; } break; - case 133: #line 607 "src/main/jay/grammars/xp.jay" + case 133: #line 609 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new TryNode()); } break; - case 134: #line 607 "src/main/jay/grammars/xp.jay" + case 134: #line 609 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->statements= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->handling= $yyVals[0+$yyTop]; $yyVal= $yyVals[-4+$yyTop]; } break; - case 135: #line 612 "src/main/jay/grammars/xp.jay" + case 135: #line 614 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new ArmNode($yyVals[-4+$yyTop]['i'], $yyVals[-4+$yyTop]['v'], $yyVals[-1+$yyTop] ? $yyVals[-1+$yyTop] : array())); } break; - case 136: #line 615 "src/main/jay/grammars/xp.jay" + case 136: #line 617 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new WithNode($yyVals[-4+$yyTop], $yyVals[-1+$yyTop] ? $yyVals[-1+$yyTop] : array())); } break; - case 138: #line 622 "src/main/jay/grammars/xp.jay" + case 138: #line 624 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 139: #line 623 "src/main/jay/grammars/xp.jay" + case 139: #line 625 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge_recursive($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 140: #line 627 "src/main/jay/grammars/xp.jay" + case 140: #line 629 "src/main/jay/grammars/xp.jay" { $yyVal= array('i' => array(), 'v' => array(new VariableNode($yyVals[0+$yyTop]))); } break; - case 141: #line 630 "src/main/jay/grammars/xp.jay" + case 141: #line 632 "src/main/jay/grammars/xp.jay" { $v= new VariableNode($yyVals[-2+$yyTop]); $yyVal= array('i' => array($yyLex->create(new AssignmentNode(array('op' => '=', 'variable' => $v, 'expression' => $yyVals[0+$yyTop])))), 'v' => array($v)); } break; - case 142: #line 637 "src/main/jay/grammars/xp.jay" + case 142: #line 639 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 143: #line 638 "src/main/jay/grammars/xp.jay" + case 143: #line 640 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 144: #line 642 "src/main/jay/grammars/xp.jay" + case 144: #line 644 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new AssignmentNode(array('op' => '=', 'variable' => new VariableNode($yyVals[-2+$yyTop]), 'expression' => $yyVals[0+$yyTop]))); } break; - case 145: #line 648 "src/main/jay/grammars/xp.jay" + case 145: #line 650 "src/main/jay/grammars/xp.jay" { $yyVal= array('value' => $yyVals[0+$yyTop]); } break; - case 146: #line 649 "src/main/jay/grammars/xp.jay" + case 146: #line 651 "src/main/jay/grammars/xp.jay" { $yyVal= array('key' => $yyVals[-2+$yyTop], 'value' => $yyVals[0+$yyTop]); } break; - case 147: #line 653 "src/main/jay/grammars/xp.jay" + case 147: #line 655 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 149: #line 658 "src/main/jay/grammars/xp.jay" + case 149: #line 660 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 150: #line 659 "src/main/jay/grammars/xp.jay" + case 150: #line 661 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 151: #line 663 "src/main/jay/grammars/xp.jay" + case 151: #line 665 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new CaseNode()); } break; - case 152: #line 663 "src/main/jay/grammars/xp.jay" + case 152: #line 665 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 153: #line 667 "src/main/jay/grammars/xp.jay" + case 153: #line 669 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DefaultNode()); } break; - case 154: #line 667 "src/main/jay/grammars/xp.jay" + case 154: #line 669 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 155: #line 673 "src/main/jay/grammars/xp.jay" + case 155: #line 675 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 156: #line 674 "src/main/jay/grammars/xp.jay" + case 156: #line 676 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[-1+$yyTop]; } break; - case 157: #line 678 "src/main/jay/grammars/xp.jay" + case 157: #line 680 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 158: #line 679 "src/main/jay/grammars/xp.jay" + case 158: #line 681 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ElseNode()); } break; - case 159: #line 679 "src/main/jay/grammars/xp.jay" + case 159: #line 681 "src/main/jay/grammars/xp.jay" { $yyVals[-2+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 160: #line 684 "src/main/jay/grammars/xp.jay" + case 160: #line 686 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop] === NULL || $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 161: #line 685 "src/main/jay/grammars/xp.jay" + case 161: #line 687 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 162: #line 689 "src/main/jay/grammars/xp.jay" + case 162: #line 691 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 163: #line 690 "src/main/jay/grammars/xp.jay" + case 163: #line 692 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], $yyVals[0+$yyTop]); } break; - case 164: #line 694 "src/main/jay/grammars/xp.jay" + case 164: #line 696 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 165: #line 694 "src/main/jay/grammars/xp.jay" + case 165: #line 696 "src/main/jay/grammars/xp.jay" { $yyVal= array(); foreach ($yyVals[-5+$yyTop] as $type) { @@ -2473,36 +2484,36 @@ public function yyparse($yyLex) { } } break; - case 166: #line 708 "src/main/jay/grammars/xp.jay" + case 166: #line 710 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 167: #line 709 "src/main/jay/grammars/xp.jay" + case 167: #line 711 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 168: #line 713 "src/main/jay/grammars/xp.jay" + case 168: #line 715 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 170: #line 718 "src/main/jay/grammars/xp.jay" + case 170: #line 720 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new FinallyNode()); } break; - case 171: #line 718 "src/main/jay/grammars/xp.jay" + case 171: #line 720 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->statements= $yyVals[-1+$yyTop]; } break; - case 172: #line 726 "src/main/jay/grammars/xp.jay" + case 172: #line 728 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 174: #line 731 "src/main/jay/grammars/xp.jay" + case 174: #line 733 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 175: #line 732 "src/main/jay/grammars/xp.jay" + case 175: #line 734 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 176: #line 736 "src/main/jay/grammars/xp.jay" + case 176: #line 738 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 178: #line 741 "src/main/jay/grammars/xp.jay" + case 178: #line 743 "src/main/jay/grammars/xp.jay" { $yyVal= new InstanceCreationNode(); $yyVal->type= $yyVals[-4+$yyTop]; @@ -2510,52 +2521,52 @@ public function yyparse($yyLex) { $yyVal->body= $yyVals[0+$yyTop]; } break; - case 179: #line 747 "src/main/jay/grammars/xp.jay" + case 179: #line 749 "src/main/jay/grammars/xp.jay" { $yyVal= new ArrayNode(); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->values= (array)$yyVals[-1+$yyTop]; } break; - case 180: #line 752 "src/main/jay/grammars/xp.jay" + case 180: #line 754 "src/main/jay/grammars/xp.jay" { $yyVal= new MapNode(); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->elements= (array)$yyVals[-1+$yyTop]; } break; - case 181: #line 760 "src/main/jay/grammars/xp.jay" + case 181: #line 762 "src/main/jay/grammars/xp.jay" { $yyVal= new StaticMemberAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 182: #line 763 "src/main/jay/grammars/xp.jay" + case 182: #line 765 "src/main/jay/grammars/xp.jay" { $yyVal= new StaticMethodCallNode(NULL, $yyVals[-3+$yyTop], $yyVals[-1+$yyTop]); } break; - case 183: #line 766 "src/main/jay/grammars/xp.jay" + case 183: #line 768 "src/main/jay/grammars/xp.jay" { $yyVal= new ConstantAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 184: #line 769 "src/main/jay/grammars/xp.jay" + case 184: #line 771 "src/main/jay/grammars/xp.jay" { $yyVal= new ClassAccessNode(NULL); } break; - case 185: #line 775 "src/main/jay/grammars/xp.jay" + case 185: #line 777 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= array('name' => $yyVals[0+$yyTop]); } break; - case 186: #line 775 "src/main/jay/grammars/xp.jay" + case 186: #line 777 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new LambdaNode(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop])); } break; - case 187: #line 778 "src/main/jay/grammars/xp.jay" + case 187: #line 780 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new VariableNode($yyVals[0+$yyTop])); } break; - case 188: #line 778 "src/main/jay/grammars/xp.jay" + case 188: #line 780 "src/main/jay/grammars/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2563,7 +2574,7 @@ public function yyparse($yyLex) { } } break; - case 189: #line 784 "src/main/jay/grammars/xp.jay" + case 189: #line 786 "src/main/jay/grammars/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2573,12 +2584,12 @@ public function yyparse($yyLex) { } } break; - case 190: #line 792 "src/main/jay/grammars/xp.jay" + case 190: #line 794 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new LambdaNode($yyVals[-2+$yyTop], $yyVals[0+$yyTop])); } break; - case 191: #line 795 "src/main/jay/grammars/xp.jay" + case 191: #line 797 "src/main/jay/grammars/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2586,10 +2597,10 @@ public function yyparse($yyLex) { } } break; - case 192: #line 801 "src/main/jay/grammars/xp.jay" + case 192: #line 803 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 193: #line 801 "src/main/jay/grammars/xp.jay" + case 193: #line 803 "src/main/jay/grammars/xp.jay" { $yyVals[-1+$yyTop]->position= $p; if ($yyVals[0+$yyTop]) { @@ -2600,10 +2611,10 @@ public function yyparse($yyLex) { } } break; - case 194: #line 810 "src/main/jay/grammars/xp.jay" + case 194: #line 812 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 195: #line 810 "src/main/jay/grammars/xp.jay" + case 195: #line 812 "src/main/jay/grammars/xp.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= new TypeName($yyVals[-4+$yyTop]); @@ -2615,10 +2626,10 @@ public function yyparse($yyLex) { } } break; - case 196: #line 820 "src/main/jay/grammars/xp.jay" + case 196: #line 822 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InvocationNode($yyVals[-1+$yyTop])); } break; - case 197: #line 820 "src/main/jay/grammars/xp.jay" + case 197: #line 822 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->arguments= $yyVals[-2+$yyTop]; if ($yyVals[0+$yyTop]) { @@ -2629,58 +2640,63 @@ public function yyparse($yyLex) { } } break; - case 198: #line 829 "src/main/jay/grammars/xp.jay" + case 198: #line 831 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new CloneNode($yyVals[0+$yyTop])); } break; - case 199: #line 832 "src/main/jay/grammars/xp.jay" + case 199: #line 834 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new YieldNode()); } break; - case 200: #line 835 "src/main/jay/grammars/xp.jay" + case 200: #line 837 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new YieldNode($yyVals[0+$yyTop])); } break; - case 201: #line 838 "src/main/jay/grammars/xp.jay" + case 201: #line 840 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new YieldNode($yyVals[0+$yyTop], $yyVals[-2+$yyTop])); } break; - case 202: #line 841 "src/main/jay/grammars/xp.jay" + case 202: #line 843 "src/main/jay/grammars/xp.jay" + { + $yyVal= $yyLex->create(new YieldFromNode($yyVals[0+$yyTop])); + } break; + + case 203: #line 846 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new CastNode(array_merge($yyVals[0+$yyTop], array('expression' => $yyVals[-2+$yyTop])))); } break; - case 203: #line 844 "src/main/jay/grammars/xp.jay" + case 204: #line 849 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new AssignmentNode($yyVals[0+$yyTop])); } break; - case 204: #line 847 "src/main/jay/grammars/xp.jay" + case 205: #line 852 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new ComparisonNode($yyVals[0+$yyTop])); } break; - case 205: #line 850 "src/main/jay/grammars/xp.jay" + case 206: #line 855 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode($yyVals[0+$yyTop])); } break; - case 206: #line 853 "src/main/jay/grammars/xp.jay" + case 207: #line 858 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); } break; - case 207: #line 856 "src/main/jay/grammars/xp.jay" + case 208: #line 861 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); $yyVal->postfix= TRUE; } break; - case 208: #line 860 "src/main/jay/grammars/xp.jay" + case 209: #line 865 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new TernaryNode()); $yyVal->condition= $yyVals[-4+$yyTop]; @@ -2688,7 +2704,7 @@ public function yyparse($yyLex) { $yyVal->conditional= $yyVals[0+$yyTop]; } break; - case 209: #line 866 "src/main/jay/grammars/xp.jay" + case 210: #line 871 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2696,7 +2712,7 @@ public function yyparse($yyLex) { $yyVal->op= '||'; } break; - case 210: #line 872 "src/main/jay/grammars/xp.jay" + case 211: #line 877 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2704,17 +2720,17 @@ public function yyparse($yyLex) { $yyVal->op= '&&'; } break; - case 211: #line 878 "src/main/jay/grammars/xp.jay" + case 212: #line 883 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new InstanceOfNode()); $yyVal->expression= $yyVals[-2+$yyTop]; $yyVal->type= $yyVals[0+$yyTop]; } break; - case 212: #line 883 "src/main/jay/grammars/xp.jay" + case 213: #line 888 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]= $yyLex->create(new LambdaNode($yyVals[-2+$yyTop], $yyVals[-1+$yyTop])); } break; - case 213: #line 883 "src/main/jay/grammars/xp.jay" + case 214: #line 888 "src/main/jay/grammars/xp.jay" { $this->error(E_WARNING, 'Deprecated lambda syntax used', array('#{ ... }')); if ($yyVals[0+$yyTop]) { @@ -2723,28 +2739,28 @@ public function yyparse($yyLex) { } } break; - case 214: #line 893 "src/main/jay/grammars/xp.jay" + case 215: #line 898 "src/main/jay/grammars/xp.jay" { $yyVal= array(new ReturnNode($yyVals[0+$yyTop])); } break; - case 215: #line 894 "src/main/jay/grammars/xp.jay" + case 216: #line 899 "src/main/jay/grammars/xp.jay" { $yyVal= (array)$yyVals[-1+$yyTop]; } break; - case 216: #line 898 "src/main/jay/grammars/xp.jay" + case 217: #line 903 "src/main/jay/grammars/xp.jay" { $yyVal= array(); } break; - case 218: #line 903 "src/main/jay/grammars/xp.jay" + case 219: #line 908 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 219: #line 904 "src/main/jay/grammars/xp.jay" + case 220: #line 909 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 220: #line 908 "src/main/jay/grammars/xp.jay" + case 221: #line 913 "src/main/jay/grammars/xp.jay" { $yyVal= array('name' => $yyVals[0+$yyTop]); } break; - case 221: #line 909 "src/main/jay/grammars/xp.jay" + case 222: #line 914 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge(array('name' => $yyVals[-1+$yyTop]), $yyVals[-2+$yyTop]); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 222: #line 913 "src/main/jay/grammars/xp.jay" + case 223: #line 918 "src/main/jay/grammars/xp.jay" { switch ($yyVals[0+$yyTop]) { case 'true': $yyVal= $yyLex->create(new BooleanNode(TRUE)); break; case 'false': $yyVal= $yyLex->create(new BooleanNode(FALSE)); break; @@ -2752,282 +2768,282 @@ public function yyparse($yyLex) { default: $yyVal= $yyLex->create(new ConstantNode($yyVals[0+$yyTop])); break; }} break; - case 223: #line 919 "src/main/jay/grammars/xp.jay" + case 224: #line 924 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 224: #line 919 "src/main/jay/grammars/xp.jay" + case 225: #line 924 "src/main/jay/grammars/xp.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= NULL; $yyVal= $yyVals[-1+$yyTop]; } break; - case 225: #line 920 "src/main/jay/grammars/xp.jay" + case 226: #line 925 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new IntegerNode($yyVals[0+$yyTop])); } break; - case 226: #line 921 "src/main/jay/grammars/xp.jay" + case 227: #line 926 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new HexNode($yyVals[0+$yyTop])); } break; - case 227: #line 922 "src/main/jay/grammars/xp.jay" + case 228: #line 927 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new OctalNode($yyVals[0+$yyTop])); } break; - case 228: #line 923 "src/main/jay/grammars/xp.jay" + case 229: #line 928 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new DecimalNode($yyVals[0+$yyTop])); } break; - case 229: #line 924 "src/main/jay/grammars/xp.jay" + case 230: #line 929 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new StringNode($yyVals[0+$yyTop])); } break; - case 230: #line 928 "src/main/jay/grammars/xp.jay" + case 231: #line 933 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => (array)$yyVals[0+$yyTop]))); } break; - case 231: #line 931 "src/main/jay/grammars/xp.jay" + case 232: #line 936 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => (array)$yyVals[0+$yyTop]))); } break; - case 232: #line 937 "src/main/jay/grammars/xp.jay" + case 233: #line 942 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 234: #line 942 "src/main/jay/grammars/xp.jay" + case 235: #line 947 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 235: #line 943 "src/main/jay/grammars/xp.jay" + case 236: #line 948 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 236: #line 947 "src/main/jay/grammars/xp.jay" + case 237: #line 952 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 238: #line 952 "src/main/jay/grammars/xp.jay" + case 239: #line 957 "src/main/jay/grammars/xp.jay" { $yyVal= array(new StringNode($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 239: #line 953 "src/main/jay/grammars/xp.jay" + case 240: #line 958 "src/main/jay/grammars/xp.jay" { $yyVal= array(new StringNode($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 240: #line 957 "src/main/jay/grammars/xp.jay" + case 241: #line 962 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 241: #line 958 "src/main/jay/grammars/xp.jay" + case 242: #line 963 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 242: #line 959 "src/main/jay/grammars/xp.jay" + case 243: #line 964 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 243: #line 960 "src/main/jay/grammars/xp.jay" + case 244: #line 965 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 244: #line 961 "src/main/jay/grammars/xp.jay" + case 245: #line 966 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 245: #line 962 "src/main/jay/grammars/xp.jay" + case 246: #line 967 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 246: #line 963 "src/main/jay/grammars/xp.jay" + case 247: #line 968 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 247: #line 964 "src/main/jay/grammars/xp.jay" + case 248: #line 969 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 248: #line 965 "src/main/jay/grammars/xp.jay" + case 249: #line 970 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 249: #line 966 "src/main/jay/grammars/xp.jay" + case 250: #line 971 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 250: #line 967 "src/main/jay/grammars/xp.jay" + case 251: #line 972 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 251: #line 968 "src/main/jay/grammars/xp.jay" + case 252: #line 973 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 252: #line 972 "src/main/jay/grammars/xp.jay" + case 253: #line 977 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 253: #line 973 "src/main/jay/grammars/xp.jay" + case 254: #line 978 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 254: #line 974 "src/main/jay/grammars/xp.jay" + case 255: #line 979 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 255: #line 975 "src/main/jay/grammars/xp.jay" + case 256: #line 980 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 256: #line 976 "src/main/jay/grammars/xp.jay" + case 257: #line 981 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 257: #line 977 "src/main/jay/grammars/xp.jay" + case 258: #line 982 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 258: #line 978 "src/main/jay/grammars/xp.jay" + case 259: #line 983 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].'='); } break; - case 259: #line 979 "src/main/jay/grammars/xp.jay" + case 260: #line 984 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].'='); } break; - case 260: #line 983 "src/main/jay/grammars/xp.jay" + case 261: #line 988 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 261: #line 984 "src/main/jay/grammars/xp.jay" + case 262: #line 989 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 262: #line 985 "src/main/jay/grammars/xp.jay" + case 263: #line 990 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 263: #line 986 "src/main/jay/grammars/xp.jay" + case 264: #line 991 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 264: #line 987 "src/main/jay/grammars/xp.jay" + case 265: #line 992 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 265: #line 988 "src/main/jay/grammars/xp.jay" + case 266: #line 993 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 266: #line 989 "src/main/jay/grammars/xp.jay" + case 267: #line 994 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 267: #line 990 "src/main/jay/grammars/xp.jay" + case 268: #line 995 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 268: #line 991 "src/main/jay/grammars/xp.jay" + case 269: #line 996 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 269: #line 992 "src/main/jay/grammars/xp.jay" + case 270: #line 997 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 270: #line 993 "src/main/jay/grammars/xp.jay" + case 271: #line 998 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 271: #line 994 "src/main/jay/grammars/xp.jay" + case 272: #line 999 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 272: #line 998 "src/main/jay/grammars/xp.jay" + case 273: #line 1003 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 273: #line 999 "src/main/jay/grammars/xp.jay" + case 274: #line 1004 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 274: #line 1000 "src/main/jay/grammars/xp.jay" + case 275: #line 1005 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 275: #line 1001 "src/main/jay/grammars/xp.jay" + case 276: #line 1006 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 276: #line 1002 "src/main/jay/grammars/xp.jay" + case 277: #line 1007 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 277: #line 1003 "src/main/jay/grammars/xp.jay" + case 278: #line 1008 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 278: #line 1007 "src/main/jay/grammars/xp.jay" + case 279: #line 1012 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 279: #line 1008 "src/main/jay/grammars/xp.jay" + case 280: #line 1013 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 280: #line 1013 "src/main/jay/grammars/xp.jay" + case 281: #line 1018 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 282: #line 1018 "src/main/jay/grammars/xp.jay" + case 283: #line 1023 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[0+$yyTop]); } break; - case 283: #line 1019 "src/main/jay/grammars/xp.jay" + case 284: #line 1024 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop][1]->target= $yyVals[-1+$yyTop]; $yyVal= array($yyVals[0+$yyTop][0], $yyVals[-1+$yyTop]); } break; - case 284: #line 1023 "src/main/jay/grammars/xp.jay" + case 285: #line 1028 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode(NULL)); } break; - case 285: #line 1023 "src/main/jay/grammars/xp.jay" + case 286: #line 1028 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 286: #line 1026 "src/main/jay/grammars/xp.jay" + case 287: #line 1031 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new MemberAccessNode(NULL, $yyVals[0+$yyTop], $yyVals[-1+$yyTop])); } break; - case 287: #line 1029 "src/main/jay/grammars/xp.jay" + case 288: #line 1034 "src/main/jay/grammars/xp.jay" { $yyVals[-2+$yyTop]= $yyLex->create(new MethodCallNode(NULL, $yyVals[-1+$yyTop], NULL, $yyVals[-2+$yyTop])); } break; - case 288: #line 1029 "src/main/jay/grammars/xp.jay" + case 289: #line 1034 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 289: #line 1032 "src/main/jay/grammars/xp.jay" + case 290: #line 1037 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InstanceCallNode(NULL, NULL, FALSE)); } break; - case 290: #line 1032 "src/main/jay/grammars/xp.jay" + case 291: #line 1037 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 291: #line 1038 "src/main/jay/grammars/xp.jay" + case 292: #line 1043 "src/main/jay/grammars/xp.jay" { $yyVal= FALSE; } break; - case 292: #line 1039 "src/main/jay/grammars/xp.jay" + case 293: #line 1044 "src/main/jay/grammars/xp.jay" { $yyVal= TRUE; } break; - case 299: #line 1057 "src/main/jay/grammars/xp.jay" + case 300: #line 1062 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName($yyVals[0+$yyTop]); } break; - case 300: #line 1058 "src/main/jay/grammars/xp.jay" + case 301: #line 1063 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName($yyVals[-3+$yyTop], $yyVals[-1+$yyTop]); } break; - case 301: #line 1062 "src/main/jay/grammars/xp.jay" + case 302: #line 1067 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName($yyVals[-2+$yyTop]->compoundName().'[]'); } break; - case 302: #line 1066 "src/main/jay/grammars/xp.jay" + case 303: #line 1071 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName('[:'.$yyVals[-1+$yyTop]->compoundName().']'); } break; - case 303: #line 1070 "src/main/jay/grammars/xp.jay" + case 304: #line 1075 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 304: #line 1071 "src/main/jay/grammars/xp.jay" + case 305: #line 1076 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 306: #line 1076 "src/main/jay/grammars/xp.jay" + case 307: #line 1081 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName($yyVals[0+$yyTop].'+'); } break; - case 307: #line 1080 "src/main/jay/grammars/xp.jay" + case 308: #line 1085 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 308: #line 1081 "src/main/jay/grammars/xp.jay" + case 309: #line 1086 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 309: #line 1087 "src/main/jay/grammars/xp.jay" + case 310: #line 1092 "src/main/jay/grammars/xp.jay" { $yyVal= 0; } break; - case 310: #line 1088 "src/main/jay/grammars/xp.jay" + case 311: #line 1093 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 311: #line 1092 "src/main/jay/grammars/xp.jay" + case 312: #line 1097 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 312: #line 1093 "src/main/jay/grammars/xp.jay" + case 313: #line 1098 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[-1+$yyTop] | $yyVals[0+$yyTop]; } break; - case 313: #line 1097 "src/main/jay/grammars/xp.jay" + case 314: #line 1102 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PUBLIC; } break; - case 314: #line 1098 "src/main/jay/grammars/xp.jay" + case 315: #line 1103 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PROTECTED; } break; - case 315: #line 1099 "src/main/jay/grammars/xp.jay" + case 316: #line 1104 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PRIVATE; } break; - case 316: #line 1100 "src/main/jay/grammars/xp.jay" + case 317: #line 1105 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PACKAGE; } break; - case 317: #line 1101 "src/main/jay/grammars/xp.jay" + case 318: #line 1106 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_STATIC; } break; - case 318: #line 1102 "src/main/jay/grammars/xp.jay" + case 319: #line 1107 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_ABSTRACT; } break; - case 319: #line 1103 "src/main/jay/grammars/xp.jay" + case 320: #line 1108 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_FINAL; } break; - case 320: #line 1104 "src/main/jay/grammars/xp.jay" + case 321: #line 1109 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_INLINE; } break; -#line 3031 "-" +#line 3047 "-" } $yyTop-= self::$yyLen[$yyN]; diff --git a/src/test/php/net/xp_lang/tests/syntax/php/GeneratorTest.class.php b/src/test/php/net/xp_lang/tests/syntax/php/GeneratorTest.class.php index 9094bf353..40e3c3934 100755 --- a/src/test/php/net/xp_lang/tests/syntax/php/GeneratorTest.class.php +++ b/src/test/php/net/xp_lang/tests/syntax/php/GeneratorTest.class.php @@ -1,8 +1,11 @@ parse('yield "number" => 1;') ); } + + #[@test] + public function yield_from() { + $this->assertEquals( + [new YieldFromNode(new StaticMethodCallNode(new TypeName('self'), 'values', []))], + $this->parse('yield from self::values();') + ); + } } \ No newline at end of file diff --git a/src/test/php/net/xp_lang/tests/syntax/xp/GeneratorTest.class.php b/src/test/php/net/xp_lang/tests/syntax/xp/GeneratorTest.class.php index e44ef9a9c..6bb5e32ff 100755 --- a/src/test/php/net/xp_lang/tests/syntax/xp/GeneratorTest.class.php +++ b/src/test/php/net/xp_lang/tests/syntax/xp/GeneratorTest.class.php @@ -1,8 +1,11 @@ parse('yield "number" : 1;') ); } + + #[@test] + public function yield_from() { + $this->assertEquals( + [new YieldFromNode(new StaticMethodCallNode(new TypeName('self'), 'values', []))], + $this->parse('yield from self::values();') + ); + } } \ No newline at end of file From 9b6335186b53b53facd8a1583ee3d7e40a925c95 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 20 Sep 2015 13:29:38 +0200 Subject: [PATCH 2/9] Part 2: Emit yield from expressions for PHP 5.5 using a shim --- .../php/xp/compiler/ast/Visitor.class.php | 23 +++++++++- .../xp/compiler/emit/php/Emitter.class.php | 10 +++++ .../xp/compiler/emit/php/V54Emitter.class.php | 2 +- .../xp/compiler/emit/php/V55Emitter.class.php | 42 +++++++++++++++++++ .../execution/source/GeneratorTest.class.php | 24 +++++++++++ 5 files changed, 99 insertions(+), 2 deletions(-) diff --git a/src/main/php/xp/compiler/ast/Visitor.class.php b/src/main/php/xp/compiler/ast/Visitor.class.php index d5b243dd4..576696977 100644 --- a/src/main/php/xp/compiler/ast/Visitor.class.php +++ b/src/main/php/xp/compiler/ast/Visitor.class.php @@ -712,7 +712,28 @@ protected function visitBracedExpression(BracedExpressionNode $node) { $node->expression= $this->visitOne($node->expression); return $node; } - + + /** + * Visit a yield statement + * + * @param xp.compiler.ast.Node node + */ + protected function visitYield(YieldNode $node) { + $node->key && $node->key= $this->visitOne($node->key); + $node->value && $node->value= $this->visitOne($node->value); + return $node; + } + + /** + * Visit a yield statement + * + * @param xp.compiler.ast.Node node + */ + protected function visitYieldFrom(YieldFromNode $node) { + $node->expr= $this->visitOne($node->expr); + return $node; + } + /** * Visit a node. Delegates to visit*() methods * diff --git a/src/main/php/xp/compiler/emit/php/Emitter.class.php b/src/main/php/xp/compiler/emit/php/Emitter.class.php index a9e72c2ae..6794ba3e6 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -2439,6 +2439,16 @@ protected function emitYield($b, $yield) { $this->error('V505', 'Yield not supported in '.$this->getClassName()); } + /** + * Emit a yield from node + * + * @param xp.compiler.emit.Buffer b + * @param xp.compiler.ast.YieldFromNode yield + */ + protected function emitYieldFrom($b, $yield) { + $this->error('V505', 'Yield not supported in '.$this->getClassName()); + } + /** * Emit all given nodes * diff --git a/src/main/php/xp/compiler/emit/php/V54Emitter.class.php b/src/main/php/xp/compiler/emit/php/V54Emitter.class.php index 9b00da2f2..df90dcd73 100644 --- a/src/main/php/xp/compiler/emit/php/V54Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/V54Emitter.class.php @@ -91,7 +91,7 @@ protected function emitLambda($b, $lambda) { foreach ($finder->variablesIn((array)$this->scope[0]->routine->body) as $variable) { $finder->including($variable); } - foreach ($this->scope[0]->routine->parameters as $param) { + foreach ((array)$this->scope[0]->routine->parameters as $param) { $finder->including($param['name']); } $finder->excluding('*'); diff --git a/src/main/php/xp/compiler/emit/php/V55Emitter.class.php b/src/main/php/xp/compiler/emit/php/V55Emitter.class.php index 073c722e6..a7c46cffb 100755 --- a/src/main/php/xp/compiler/emit/php/V55Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/V55Emitter.class.php @@ -21,4 +21,46 @@ protected function emitYield($b, $yield) { $this->emitOne($b, $yield->value); } } + + /** + * Emit a yield from node + * + * @param xp.compiler.emit.Buffer b + * @param xp.compiler.ast.YieldFromNode yield + */ + protected function emitYieldFrom($b, $yield) { + static $shim= ' + if ($iter instanceof \\Generator) { + $recv= null; + $send= true; + while ($iter->valid()) { + $next= $iter->current(); + $send ? $iter->send($recv) : $iter->throw($recv); + try { + $recv= (yield $next); + $send= true; + } catch (\\Exception $e) { + $recv= $e; + $send= false; + } + } + } else { + foreach ($iter as $next) { yield $next; } + } + '; + + $iter= $this->tempVar(); + $b->append($iter)->append('='); + $this->emitOne($b, $yield->expr); + $b->append(';'); + + $b->append(strtr($shim, [ + "\n" => '', + ' ' => '', + '$iter' => $iter, + '$recv' => $this->tempVar(), + '$send' => $this->tempVar(), + '$next' => $this->tempVar() + ])); + } } \ No newline at end of file diff --git a/src/test/php/net/xp_lang/tests/execution/source/GeneratorTest.class.php b/src/test/php/net/xp_lang/tests/execution/source/GeneratorTest.class.php index 16f716ba0..61e52d0e8 100755 --- a/src/test/php/net/xp_lang/tests/execution/source/GeneratorTest.class.php +++ b/src/test/php/net/xp_lang/tests/execution/source/GeneratorTest.class.php @@ -36,4 +36,28 @@ public function yield_key_and_value() { iterator_to_array($this->run('yield "number" : 1;')) ); } + + #[@test] + public function yield_from_generator() { + $this->assertEquals( + [0, 1, 2, 3], + iterator_to_array($this->run('yield 0; yield from (() -> { yield 1; yield 2; })(); yield 3;')) + ); + } + + #[@test] + public function yield_from_iterator() { + $this->assertEquals( + [0, 1, 2, 3], + iterator_to_array($this->run('yield 0; yield from new php.ArrayIterator([1, 2]); yield 3;')) + ); + } + + #[@test] + public function yield_from_an_array() { + $this->assertEquals( + [0, 1, 2, 3], + iterator_to_array($this->run('yield 0; yield from [1, 2]; yield 3;')) + ); + } } \ No newline at end of file From cca376bffb1acba3045acee54465a9b9ad6c4761 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 20 Sep 2015 14:21:39 +0200 Subject: [PATCH 3/9] Make generator delegation shim work on HHVM, too This is a terrible hack involving eval(), but the best I could find at the moment. If we found a place for one-time initialization code, we could include differing implementations there. --- .../xp/compiler/emit/php/V55Emitter.class.php | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/main/php/xp/compiler/emit/php/V55Emitter.class.php b/src/main/php/xp/compiler/emit/php/V55Emitter.class.php index a7c46cffb..1b99c430e 100755 --- a/src/main/php/xp/compiler/emit/php/V55Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/V55Emitter.class.php @@ -31,19 +31,23 @@ protected function emitYield($b, $yield) { protected function emitYieldFrom($b, $yield) { static $shim= ' if ($iter instanceof \\Generator) { - $recv= null; - $send= true; - while ($iter->valid()) { - $next= $iter->current(); - $send ? $iter->send($recv) : $iter->throw($recv); - try { - $recv= (yield $next); - $send= true; - } catch (\\Exception $e) { - $recv= $e; - $send= false; + defined(\'HHVM_VERSION\') && $iter->next(); + $send= eval(\'return function() use($iter) { + $recv= null; + $send= true; + while ($iter->valid()) { + $next= $iter->current(); + $send ? $iter->send($recv) : $iter->throw($recv); + try { + $recv= \'.(defined(\'HHVM_VERSION\') ? \'yield $next\' : \'(yield $next)\').\'; + $send= true; + } catch (\\Exception $e) { + $recv= $e; + $send= false; + } } - } + };\'); + foreach ($send() as $next) { yield $next; } } else { foreach ($iter as $next) { yield $next; } } From 0cb68e227df8e2cae194efea9f823e31a686783a Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 20 Sep 2015 14:37:47 +0200 Subject: [PATCH 4/9] Add PHP 7.0 emitter --- .../xp/compiler/emit/php/V70Emitter.class.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100755 src/main/php/xp/compiler/emit/php/V70Emitter.class.php diff --git a/src/main/php/xp/compiler/emit/php/V70Emitter.class.php b/src/main/php/xp/compiler/emit/php/V70Emitter.class.php new file mode 100755 index 000000000..409a24b66 --- /dev/null +++ b/src/main/php/xp/compiler/emit/php/V70Emitter.class.php @@ -0,0 +1,18 @@ +append('yield from '); + $this->emitOne($b, $yield->expr); + } +} \ No newline at end of file From 440b036edbcfb0c21cfdc8ef37f11896e925067d Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 20 Sep 2015 14:42:49 +0200 Subject: [PATCH 5/9] Also make PHP 5.5 emitter default in JIT --- src/main/php/xp/compiler/JitClassLoader.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/php/xp/compiler/JitClassLoader.class.php b/src/main/php/xp/compiler/JitClassLoader.class.php index 66d3b3e67..d50d8ed86 100755 --- a/src/main/php/xp/compiler/JitClassLoader.class.php +++ b/src/main/php/xp/compiler/JitClassLoader.class.php @@ -7,7 +7,7 @@ use xp\compiler\task\CompilationTask; use xp\compiler\diagnostic\NullDiagnosticListener; use xp\compiler\Syntax; -use xp\compiler\emit\php\V54Emitter; +use xp\compiler\emit\php\V55Emitter; use text\parser\generic\ParseException; use lang\ClassNotFoundException; use lang\ClassFormatException; @@ -32,7 +32,7 @@ class JitClassLoader extends \lang\Object implements \lang\IClassLoader { */ public function __construct($path, $debug= false) { $this->files= new FileManager(); - $this->emitter= new V54Emitter(); + $this->emitter= new V55Emitter(); $this->debug= $debug; // Maven conventions From 945a266ff4eefd47ae6b4c97409fd8770a4b8979 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 20 Sep 2015 14:49:43 +0200 Subject: [PATCH 6/9] Choose emitter based on PHP runtime version --- src/main/php/xp/compiler/JitClassLoader.class.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/php/xp/compiler/JitClassLoader.class.php b/src/main/php/xp/compiler/JitClassLoader.class.php index d50d8ed86..753a80c07 100755 --- a/src/main/php/xp/compiler/JitClassLoader.class.php +++ b/src/main/php/xp/compiler/JitClassLoader.class.php @@ -13,17 +13,29 @@ use lang\ClassFormatException; use lang\FormatException; use lang\ElementNotFoundException; +use lang\XPClass; /** * JIT ("Just in time") compiling class loader. Enables the efficient * "edit / save / run" paradigm at development time. */ class JitClassLoader extends \lang\Object implements \lang\IClassLoader { + private static $emitterClass; protected $source= array(); protected $files= null; protected $emitter= null; protected $debug= false; + static function __static() { + if (version_compare(PHP_VERSION, '7.0.0', 'gt')) { + self::$emitterClass= XPClass::forName('xp.compiler.emit.php.V70Emitter'); + } else if (version_compare(PHP_VERSION, '5.5.0', 'gt')) { + self::$emitterClass= XPClass::forName('xp.compiler.emit.php.V55Emitter'); + } else { + self::$emitterClass= XPClass::forName('xp.compiler.emit.php.V54Emitter'); + } + } + /** * Creates a JIT Class loader instances for a given path * @@ -32,7 +44,7 @@ class JitClassLoader extends \lang\Object implements \lang\IClassLoader { */ public function __construct($path, $debug= false) { $this->files= new FileManager(); - $this->emitter= new V55Emitter(); + $this->emitter= self::$emitterClass->newInstance(); $this->debug= $debug; // Maven conventions From 0665979ad2d2e25a8e8f54f69ffaff2f15d23ffd Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 20 Sep 2015 15:37:34 +0200 Subject: [PATCH 7/9] Declare emitYieldFrom() as part of emitter API --- src/main/php/xp/compiler/emit/Emitter.class.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/php/xp/compiler/emit/Emitter.class.php b/src/main/php/xp/compiler/emit/Emitter.class.php index 0eccef8dc..290b48616 100644 --- a/src/main/php/xp/compiler/emit/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/Emitter.class.php @@ -689,7 +689,15 @@ protected abstract function emitSilenceOperator($b, $silenced); * @param xp.compiler.ast.YieldNode yield */ protected abstract function emitYield($b, $yield); - + + /** + * Emit a yield node + * + * @param xp.compiler.emit.Buffer b + * @param xp.compiler.ast.YieldFromNode yield + */ + protected abstract function emitYieldFrom($b, $yield); + /** * Emit a single node * From e0e2163583774bc7918b31bafa77de13a305bc39 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 20 Sep 2015 19:07:22 +0200 Subject: [PATCH 8/9] Remove superfluous import --- src/main/php/xp/compiler/JitClassLoader.class.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/php/xp/compiler/JitClassLoader.class.php b/src/main/php/xp/compiler/JitClassLoader.class.php index 753a80c07..4641bdc14 100755 --- a/src/main/php/xp/compiler/JitClassLoader.class.php +++ b/src/main/php/xp/compiler/JitClassLoader.class.php @@ -7,7 +7,6 @@ use xp\compiler\task\CompilationTask; use xp\compiler\diagnostic\NullDiagnosticListener; use xp\compiler\Syntax; -use xp\compiler\emit\php\V55Emitter; use text\parser\generic\ParseException; use lang\ClassNotFoundException; use lang\ClassFormatException; From 921dc14f9d2e2c0aca96b34904bb7cafea5e41db Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 20 Sep 2015 22:27:45 +0200 Subject: [PATCH 9/9] Add PHP 7 emitter back in --- src/main/php/xp/compiler/emit/php/Emitter.class.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/php/xp/compiler/emit/php/Emitter.class.php b/src/main/php/xp/compiler/emit/php/Emitter.class.php index 5f06ea30f..40c6d935a 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -2460,6 +2460,8 @@ protected function emitTry($b, $try) { V54Emitter::emitTry($b, $try); } }'); + } else if (version_compare(PHP_VERSION, '7.0.0', 'gt')) { + return new V70Emitter(); } else if (version_compare(PHP_VERSION, '5.5.0', 'gt')) { return new V55Emitter(); } else {