From 1a781b39b19c64aac0a97610a77cc93dd41a34d0 Mon Sep 17 00:00:00 2001 From: Uwe Tews Date: Thu, 22 Jan 2015 03:53:01 +0100 Subject: [PATCH] new feature: security can now control access to static methods and properties see also NEW_FEATURES.txt --- NEW_FEATURES.txt | 27 + change_log.txt | 5 +- lexer/smarty_internal_templateparser.y | 18 +- .../smarty_internal_templateparser.php | 4999 ++++++++--------- libs/sysplugins/smarty_security.php | 77 +- 5 files changed, 2469 insertions(+), 2657 deletions(-) diff --git a/NEW_FEATURES.txt b/NEW_FEATURES.txt index fdc387c5..07700c95 100644 --- a/NEW_FEATURES.txt +++ b/NEW_FEATURES.txt @@ -24,6 +24,33 @@ Smarty 3.1.22 The main template is level 1. The nesting level is checked at run time. When the maximum will be exceeded an Exception will be thrown. The default setting is 0 which does disable this check. + - trusted static methods - + The Smarty_Security class has the new property $trusted_static_methods to restrict access to static methods. + It's an nested array of trusted class and method names. + Format: + array ( + 'class_1' => array('method_1', 'method_2'), // allowed methods + 'class_2' => array(), // all methods of class allowed + ) + To disable access for all methods of all classes set $trusted_static_methods = null; + The default value is an empty array() which does enables all methods of all classes, but for backward compatibility + the setting of $static_classes will be checked. + + - trusted static properties - + The Smarty_Security class has the new property $trusted_static_properties to restrict access to static properties. + It's an nested array of trusted class and property names. + Format: + array ( + 'class_1' => array('prop_1', 'prop_2'), // allowed properties listed + 'class_2' => array(), // all properties of class allowed + } + To disable access for all properties of all classes set $trusted_static_properties = null; + The default value is an empty array() which does enables all properties of all classes, but for backward compatibility + the setting of $static_classes will be checked. + + + + Compiled Templates ================== Smarty does now automatically detect a change of the $merge_compiled_includes and $escape_html diff --git a/change_log.txt b/change_log.txt index 5f639595..0fbbbf57 100644 --- a/change_log.txt +++ b/change_log.txt @@ -1,5 +1,8 @@  ===== 3.1.22-dev ===== (xx.xx.2015) - + 22.01.2015 + - new feature security can now control access to static methods and properties + see also NEW_FEATURES.txt + 21.01.2015 - bugfix clearCompiledTemplates(), clearAll() and clear() could try to delete whole drive at wrong path permissions because realpath() fail (forum 25397) - bugfix 'self::' and 'parent::' was interpreted in template syntax as static class diff --git a/lexer/smarty_internal_templateparser.y b/lexer/smarty_internal_templateparser.y index a61065af..a2744959 100644 --- a/lexer/smarty_internal_templateparser.y +++ b/lexer/smarty_internal_templateparser.y @@ -902,7 +902,7 @@ value(res) ::= varindexed(vi) DOUBLECOLON static_class_access(r). { } else { $this->compiler->prefix_code[] = 'compileVariable(vi['var']).vi['smarty_internal_index'].';?>'; } - res = '$_tmp'.self::$prefix_number.'::'.r; + res = '$_tmp'.self::$prefix_number.'::'.r[0].r[1]; } @@ -924,11 +924,11 @@ value(res) ::= NAMESPACE(c). { // static class access value(res) ::= ns1(c)DOUBLECOLON static_class_access(s). { - if (!in_array(strtolower(c), array('self', 'parent')) && (!$this->security || isset($this->smarty->registered_classes[c]) || $this->smarty->security_policy->isTrustedStaticClass(c, $this->compiler))) { + if (!in_array(strtolower(c), array('self', 'parent')) && (!$this->security || $this->smarty->security_policy->isTrustedStaticClassAccess(c, s, $this->compiler))) { if (isset($this->smarty->registered_classes[c])) { - res = $this->smarty->registered_classes[c].'::'.s; + res = $this->smarty->registered_classes[c].'::'.s[0].s[1]; } else { - res = c.'::'.s; + res = c.'::'.s[0].s[1]; } } else { $this->compiler->trigger_template_error ("static class '".c."' is undefined or not allowed by security setting"); @@ -1256,27 +1256,27 @@ modparameter(res) ::= COLON array(mp). { // static class methode call static_class_access(res) ::= method(m). { - res = m; + res = array(m, '', 'method'); } // static class methode call with object chainig static_class_access(res) ::= method(m) objectchain(oc). { - res = m.oc; + res = array(m, oc, 'method'); } // static class constant static_class_access(res) ::= ID(v). { - res = v; + res = array(v, ''); } // static class variables static_class_access(res) ::= DOLLAR ID(v) arrayindex(a). { - res = '$'.v.a; + res = array('$'.v, a, 'property'); } // static class variables with object chain static_class_access(res) ::= DOLLAR ID(v) arrayindex(a) objectchain(oc). { - res = '$'.v.a.oc; + res = array('$'.v, a.oc, 'property'); } diff --git a/libs/sysplugins/smarty_internal_templateparser.php b/libs/sysplugins/smarty_internal_templateparser.php index b2fd6d34..7cae844a 100644 --- a/libs/sysplugins/smarty_internal_templateparser.php +++ b/libs/sysplugins/smarty_internal_templateparser.php @@ -71,24 +71,23 @@ class TP_yyStackEntry ** number for the token at this stack level */ public $minor; /* The user-supplied minor token value. This ** is the value of the token */ -} -; +}; + #line 13 "../smarty/lexer/smarty_internal_templateparser.y" /** - * Smarty Internal Plugin Templateparser - * - * This is the template parser. - * It is generated from the smarty_internal_templateparser.y file - * - * @package Smarty - * @subpackage Compiler - * @author Uwe Tews - */ +* Smarty Internal Plugin Templateparser +* +* This is the template parser. +* It is generated from the smarty_internal_templateparser.y file +* @package Smarty +* @subpackage Compiler +* @author Uwe Tews +*/ class Smarty_Internal_Templateparser { - #line 26 "../smarty/lexer/smarty_internal_templateparser.y" +#line 26 "../smarty/lexer/smarty_internal_templateparser.y" const Err1 = "Security error: Call to private object member not allowed"; const Err2 = "Security error: Call to dynamic object member not allowed"; @@ -258,1049 +257,1049 @@ class Smarty_Internal_Templateparser return '$_smarty_tpl->tpl_vars[' . $variable . ']->value'; } - const TP_VERT = 1; - const TP_COLON = 2; - const TP_RDEL = 3; - const TP_COMMENT = 4; - const TP_PHPSTARTTAG = 5; - const TP_PHPENDTAG = 6; - const TP_PHPENDSCRIPT = 7; - const TP_ASPSTARTTAG = 8; - const TP_ASPENDTAG = 9; - const TP_XMLTAG = 10; - const TP_TEXT = 11; - const TP_STRIPON = 12; - const TP_STRIPOFF = 13; - const TP_BLOCKSOURCE = 14; - const TP_LITERALSTART = 15; - const TP_LITERALEND = 16; - const TP_LITERAL = 17; - const TP_LDEL = 18; - const TP_DOLLAR = 19; - const TP_ID = 20; - const TP_EQUAL = 21; - const TP_PTR = 22; - const TP_LDELIF = 23; - const TP_LDELFOR = 24; - const TP_SEMICOLON = 25; - const TP_INCDEC = 26; - const TP_TO = 27; - const TP_STEP = 28; - const TP_LDELFOREACH = 29; - const TP_SPACE = 30; - const TP_AS = 31; - const TP_APTR = 32; - const TP_LDELSETFILTER = 33; - const TP_SMARTYBLOCKCHILDPARENT = 34; - const TP_LDELSLASH = 35; - const TP_ATTR = 36; - const TP_INTEGER = 37; - const TP_COMMA = 38; - const TP_OPENP = 39; - const TP_CLOSEP = 40; - const TP_MATH = 41; - const TP_UNIMATH = 42; - const TP_ANDSYM = 43; - const TP_ISIN = 44; - const TP_ISDIVBY = 45; - const TP_ISNOTDIVBY = 46; - const TP_ISEVEN = 47; - const TP_ISNOTEVEN = 48; - const TP_ISEVENBY = 49; - const TP_ISNOTEVENBY = 50; - const TP_ISODD = 51; - const TP_ISNOTODD = 52; - const TP_ISODDBY = 53; - const TP_ISNOTODDBY = 54; - const TP_INSTANCEOF = 55; - const TP_QMARK = 56; - const TP_NOT = 57; - const TP_TYPECAST = 58; - const TP_HEX = 59; - const TP_DOT = 60; - const TP_SINGLEQUOTESTRING = 61; - const TP_DOUBLECOLON = 62; - const TP_NAMESPACE = 63; - const TP_AT = 64; - const TP_HATCH = 65; - const TP_OPENB = 66; - const TP_CLOSEB = 67; - const TP_EQUALS = 68; - const TP_NOTEQUALS = 69; - const TP_GREATERTHAN = 70; - const TP_LESSTHAN = 71; - const TP_GREATEREQUAL = 72; - const TP_LESSEQUAL = 73; - const TP_IDENTITY = 74; - const TP_NONEIDENTITY = 75; - const TP_MOD = 76; - const TP_LAND = 77; - const TP_LOR = 78; - const TP_LXOR = 79; - const TP_QUOTE = 80; - const TP_BACKTICK = 81; - const TP_DOLLARID = 82; + const TP_VERT = 1; + const TP_COLON = 2; + const TP_RDEL = 3; + const TP_COMMENT = 4; + const TP_PHPSTARTTAG = 5; + const TP_PHPENDTAG = 6; + const TP_PHPENDSCRIPT = 7; + const TP_ASPSTARTTAG = 8; + const TP_ASPENDTAG = 9; + const TP_XMLTAG = 10; + const TP_TEXT = 11; + const TP_STRIPON = 12; + const TP_STRIPOFF = 13; + const TP_BLOCKSOURCE = 14; + const TP_LITERALSTART = 15; + const TP_LITERALEND = 16; + const TP_LITERAL = 17; + const TP_LDEL = 18; + const TP_DOLLAR = 19; + const TP_ID = 20; + const TP_EQUAL = 21; + const TP_PTR = 22; + const TP_LDELIF = 23; + const TP_LDELFOR = 24; + const TP_SEMICOLON = 25; + const TP_INCDEC = 26; + const TP_TO = 27; + const TP_STEP = 28; + const TP_LDELFOREACH = 29; + const TP_SPACE = 30; + const TP_AS = 31; + const TP_APTR = 32; + const TP_LDELSETFILTER = 33; + const TP_SMARTYBLOCKCHILDPARENT = 34; + const TP_LDELSLASH = 35; + const TP_ATTR = 36; + const TP_INTEGER = 37; + const TP_COMMA = 38; + const TP_OPENP = 39; + const TP_CLOSEP = 40; + const TP_MATH = 41; + const TP_UNIMATH = 42; + const TP_ANDSYM = 43; + const TP_ISIN = 44; + const TP_ISDIVBY = 45; + const TP_ISNOTDIVBY = 46; + const TP_ISEVEN = 47; + const TP_ISNOTEVEN = 48; + const TP_ISEVENBY = 49; + const TP_ISNOTEVENBY = 50; + const TP_ISODD = 51; + const TP_ISNOTODD = 52; + const TP_ISODDBY = 53; + const TP_ISNOTODDBY = 54; + const TP_INSTANCEOF = 55; + const TP_QMARK = 56; + const TP_NOT = 57; + const TP_TYPECAST = 58; + const TP_HEX = 59; + const TP_DOT = 60; + const TP_SINGLEQUOTESTRING = 61; + const TP_DOUBLECOLON = 62; + const TP_NAMESPACE = 63; + const TP_AT = 64; + const TP_HATCH = 65; + const TP_OPENB = 66; + const TP_CLOSEB = 67; + const TP_EQUALS = 68; + const TP_NOTEQUALS = 69; + const TP_GREATERTHAN = 70; + const TP_LESSTHAN = 71; + const TP_GREATEREQUAL = 72; + const TP_LESSEQUAL = 73; + const TP_IDENTITY = 74; + const TP_NONEIDENTITY = 75; + const TP_MOD = 76; + const TP_LAND = 77; + const TP_LOR = 78; + const TP_LXOR = 79; + const TP_QUOTE = 80; + const TP_BACKTICK = 81; + const TP_DOLLARID = 82; const YY_NO_ACTION = 568; const YY_ACCEPT_ACTION = 567; const YY_ERROR_ACTION = 566; const YY_SZ_ACTTAB = 2456; - static public $yy_action = array( - 221, 31, 327, 263, 196, 309, 305, 301, 302, 303, - 304, 310, 311, 317, 318, 319, 202, 25, 23, 10, - 321, 32, 158, 131, 5, 107, 202, 315, 314, 28, - 143, 221, 206, 429, 255, 17, 252, 195, 122, 328, - 49, 51, 50, 45, 26, 19, 347, 343, 38, 13, - 344, 345, 39, 34, 221, 567, 95, 265, 238, 306, - 429, 256, 139, 119, 481, 206, 429, 278, 346, 352, - 353, 359, 360, 361, 358, 357, 354, 355, 356, 294, - 279, 37, 329, 28, 105, 248, 32, 481, 11, 17, - 286, 14, 276, 483, 49, 51, 50, 45, 26, 19, - 347, 343, 38, 13, 344, 345, 39, 34, 221, 93, - 221, 323, 386, 29, 128, 178, 483, 298, 481, 192, - 326, 278, 346, 352, 353, 359, 360, 361, 358, 357, - 354, 355, 356, 349, 279, 338, 221, 28, 423, 28, - 147, 481, 11, 17, 286, 17, 308, 483, 49, 51, - 50, 45, 26, 19, 347, 343, 38, 13, 344, 345, - 39, 34, 221, 93, 207, 28, 221, 31, 426, 261, - 483, 17, 36, 133, 290, 278, 346, 352, 353, 359, - 360, 361, 358, 357, 354, 355, 356, 231, 241, 104, - 160, 291, 221, 320, 429, 426, 307, 238, 306, 299, - 147, 426, 49, 51, 50, 45, 26, 19, 347, 343, - 38, 13, 344, 345, 39, 34, 221, 206, 267, 190, - 11, 429, 286, 20, 109, 336, 137, 429, 274, 278, - 346, 352, 353, 359, 360, 361, 358, 357, 354, 355, - 356, 285, 279, 16, 102, 165, 221, 206, 287, 11, - 481, 286, 14, 21, 299, 483, 49, 51, 50, 45, - 26, 19, 347, 343, 38, 13, 344, 345, 39, 34, - 221, 93, 206, 481, 6, 28, 201, 326, 483, 193, - 11, 17, 286, 278, 346, 352, 353, 359, 360, 361, - 358, 357, 354, 355, 356, 235, 106, 166, 199, 326, - 175, 258, 232, 218, 122, 233, 299, 206, 203, 299, - 49, 51, 50, 45, 26, 19, 347, 343, 38, 13, - 344, 345, 39, 34, 206, 221, 235, 205, 28, 31, - 11, 362, 237, 221, 17, 391, 262, 278, 346, 352, - 353, 359, 360, 361, 358, 357, 354, 355, 356, 197, - 105, 279, 212, 172, 493, 2, 221, 44, 8, 94, - 493, 283, 299, 184, 483, 49, 51, 50, 45, 26, - 19, 347, 343, 38, 13, 344, 345, 39, 34, 221, - 205, 264, 180, 482, 333, 4, 11, 483, 219, 141, - 242, 299, 278, 346, 352, 353, 359, 360, 361, 358, - 357, 354, 355, 356, 285, 250, 482, 183, 129, 24, - 240, 247, 149, 258, 277, 295, 299, 40, 158, 49, - 51, 50, 45, 26, 19, 347, 343, 38, 13, 344, - 345, 39, 34, 221, 205, 204, 167, 11, 221, 286, - 134, 11, 179, 245, 285, 299, 278, 346, 352, 353, - 359, 360, 361, 358, 357, 354, 355, 356, 139, 198, - 142, 191, 164, 205, 285, 313, 11, 312, 251, 27, - 221, 348, 132, 49, 51, 50, 45, 26, 19, 347, - 343, 38, 13, 344, 345, 39, 34, 221, 231, 206, - 187, 260, 158, 103, 7, 258, 254, 121, 157, 299, - 278, 346, 352, 353, 359, 360, 361, 358, 357, 354, - 355, 356, 285, 294, 294, 163, 316, 228, 115, 22, - 173, 194, 296, 169, 299, 17, 331, 49, 51, 50, - 45, 26, 19, 347, 343, 38, 13, 344, 345, 39, - 34, 221, 189, 108, 171, 182, 140, 6, 123, 340, - 230, 101, 97, 299, 278, 346, 352, 353, 359, 360, - 361, 358, 357, 354, 355, 356, 285, 294, 294, 159, - 161, 41, 281, 242, 253, 282, 144, 268, 299, 299, - 113, 49, 51, 50, 45, 26, 19, 347, 343, 38, - 13, 344, 345, 39, 34, 221, 294, 272, 181, 120, - 42, 297, 200, 30, 284, 221, 100, 299, 278, 346, - 352, 353, 359, 360, 361, 358, 357, 354, 355, 356, - 285, 332, 294, 275, 300, 298, 168, 170, 177, 12, - 269, 285, 44, 273, 270, 49, 51, 50, 45, 26, - 19, 347, 343, 38, 13, 344, 345, 39, 34, 221, - 259, 331, 205, 331, 287, 331, 331, 331, 98, 112, - 118, 331, 278, 346, 352, 353, 359, 360, 361, 358, - 357, 354, 355, 356, 294, 294, 294, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 249, 49, - 51, 50, 45, 26, 19, 347, 343, 38, 13, 344, - 345, 39, 34, 221, 35, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 278, 346, 352, 353, - 359, 360, 361, 358, 357, 354, 355, 356, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 158, 49, 51, 50, 45, 26, 19, 347, - 343, 38, 13, 344, 345, 39, 34, 221, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 278, 346, 352, 353, 359, 360, 361, 358, 357, 354, - 355, 356, 139, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 49, 51, 50, - 45, 26, 19, 347, 343, 38, 13, 344, 345, 39, - 34, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 158, 43, 331, 278, 346, 352, 353, 359, 360, - 361, 358, 357, 354, 355, 356, 331, 331, 331, 49, - 51, 50, 45, 26, 19, 347, 343, 38, 13, 344, - 345, 39, 34, 331, 331, 331, 331, 331, 331, 212, - 331, 230, 331, 331, 331, 8, 278, 346, 352, 353, - 359, 360, 361, 358, 357, 354, 355, 356, 331, 331, - 331, 337, 331, 331, 331, 10, 126, 91, 9, 331, - 5, 107, 331, 5, 107, 11, 143, 286, 146, 143, - 255, 322, 252, 255, 229, 252, 33, 28, 331, 48, - 330, 341, 331, 17, 239, 351, 331, 331, 154, 331, - 331, 331, 138, 331, 47, 46, 280, 234, 292, 146, - 227, 350, 105, 1, 216, 225, 288, 293, 331, 351, - 331, 246, 331, 10, 130, 213, 351, 96, 5, 107, - 324, 18, 339, 331, 143, 239, 331, 331, 255, 156, - 252, 331, 229, 138, 33, 331, 331, 48, 331, 331, - 331, 331, 266, 331, 331, 216, 225, 288, 293, 331, - 351, 331, 47, 46, 280, 234, 292, 331, 227, 331, - 105, 1, 271, 331, 331, 331, 427, 337, 331, 331, - 331, 10, 130, 224, 9, 96, 5, 107, 331, 5, - 107, 331, 143, 331, 236, 143, 255, 331, 252, 255, - 229, 252, 33, 427, 331, 48, 331, 331, 331, 427, - 331, 239, 481, 331, 331, 151, 331, 331, 331, 138, - 47, 46, 280, 234, 292, 331, 227, 331, 105, 1, - 331, 216, 225, 288, 293, 481, 351, 331, 331, 10, - 130, 215, 331, 96, 5, 107, 325, 18, 339, 331, - 143, 239, 331, 331, 255, 152, 252, 331, 229, 138, - 33, 331, 331, 48, 331, 331, 331, 331, 331, 331, - 331, 216, 225, 288, 293, 331, 351, 331, 47, 46, - 280, 234, 292, 331, 227, 331, 105, 1, 221, 331, - 396, 331, 11, 331, 286, 331, 331, 10, 122, 224, - 331, 96, 5, 107, 28, 331, 243, 239, 143, 257, - 17, 150, 255, 331, 252, 138, 229, 28, 15, 331, - 331, 48, 331, 17, 331, 331, 481, 216, 225, 288, - 293, 331, 351, 331, 331, 331, 47, 46, 280, 234, - 292, 331, 227, 331, 105, 1, 331, 331, 331, 481, - 331, 11, 331, 286, 331, 10, 130, 208, 331, 96, - 5, 107, 331, 28, 331, 244, 143, 239, 331, 17, - 255, 148, 252, 331, 229, 138, 33, 331, 331, 48, - 331, 331, 331, 331, 331, 331, 331, 216, 225, 288, - 293, 331, 351, 331, 47, 46, 280, 234, 292, 331, - 227, 331, 105, 1, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 10, 136, 224, 331, 96, 5, 107, - 331, 331, 331, 331, 143, 239, 331, 331, 255, 155, - 252, 331, 229, 138, 3, 331, 331, 48, 331, 331, - 331, 331, 331, 331, 331, 216, 225, 288, 293, 331, - 351, 331, 47, 46, 280, 234, 292, 331, 227, 331, - 105, 1, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 10, 130, 209, 331, 96, 5, 107, 331, 331, - 331, 331, 143, 239, 331, 331, 255, 153, 252, 331, - 222, 138, 33, 331, 331, 48, 331, 331, 331, 331, - 331, 331, 331, 216, 225, 288, 293, 331, 351, 331, - 47, 46, 280, 234, 292, 331, 227, 331, 105, 1, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 10, - 124, 224, 331, 96, 5, 107, 331, 331, 331, 331, - 143, 331, 331, 331, 255, 331, 252, 331, 229, 331, - 33, 196, 174, 48, 331, 331, 331, 331, 331, 331, - 331, 299, 331, 331, 25, 23, 331, 331, 47, 46, - 280, 234, 292, 331, 227, 331, 105, 1, 331, 206, - 331, 331, 331, 331, 331, 331, 331, 10, 122, 224, - 331, 96, 5, 107, 331, 331, 331, 331, 143, 331, - 331, 331, 255, 331, 252, 331, 229, 331, 15, 331, - 331, 48, 331, 331, 331, 471, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 47, 46, 280, 234, - 292, 331, 227, 331, 105, 331, 331, 471, 331, 471, - 471, 331, 471, 471, 196, 186, 331, 331, 471, 96, - 471, 481, 471, 331, 299, 331, 331, 25, 23, 331, - 239, 331, 331, 331, 125, 331, 331, 87, 138, 331, - 331, 331, 206, 331, 481, 331, 289, 342, 331, 471, - 214, 225, 288, 293, 331, 351, 331, 331, 331, 331, - 239, 196, 162, 471, 145, 220, 335, 54, 116, 135, - 331, 299, 331, 331, 25, 23, 289, 342, 331, 331, - 214, 225, 288, 293, 239, 351, 331, 331, 145, 206, - 331, 72, 138, 331, 331, 331, 331, 331, 331, 331, - 289, 342, 331, 331, 214, 225, 288, 293, 331, 351, - 239, 99, 176, 331, 145, 331, 217, 72, 138, 331, - 331, 299, 331, 331, 25, 23, 289, 342, 331, 331, - 214, 225, 288, 293, 331, 351, 331, 239, 331, 206, - 331, 145, 223, 331, 72, 138, 331, 331, 331, 331, - 331, 331, 331, 289, 342, 331, 331, 214, 225, 288, - 293, 331, 351, 331, 239, 331, 331, 331, 125, 226, - 331, 87, 138, 331, 331, 331, 331, 331, 331, 331, - 289, 342, 331, 331, 214, 225, 288, 293, 239, 351, - 331, 331, 145, 331, 331, 62, 116, 254, 331, 331, - 334, 331, 331, 331, 289, 342, 331, 331, 214, 225, - 288, 293, 331, 351, 239, 331, 331, 331, 145, 331, - 331, 69, 138, 331, 331, 239, 331, 331, 331, 145, - 289, 342, 77, 138, 210, 225, 288, 293, 331, 351, - 331, 289, 342, 331, 331, 214, 225, 288, 293, 331, - 351, 331, 239, 196, 185, 331, 145, 331, 331, 75, - 138, 331, 331, 299, 331, 331, 25, 23, 289, 342, - 331, 331, 214, 225, 288, 293, 239, 351, 331, 331, - 145, 206, 331, 64, 138, 331, 331, 331, 331, 331, - 331, 331, 289, 342, 331, 331, 214, 225, 288, 293, - 331, 351, 239, 331, 331, 331, 145, 331, 331, 67, - 138, 331, 331, 239, 331, 331, 331, 145, 289, 342, - 61, 138, 214, 225, 288, 293, 331, 351, 331, 289, - 342, 331, 331, 214, 225, 288, 293, 331, 351, 331, - 239, 196, 188, 331, 92, 331, 331, 56, 117, 331, - 331, 299, 331, 331, 25, 23, 289, 342, 331, 331, - 214, 225, 288, 293, 239, 351, 331, 331, 145, 206, - 331, 71, 138, 331, 331, 331, 331, 331, 331, 331, - 289, 342, 331, 331, 214, 225, 288, 293, 331, 351, - 239, 331, 331, 331, 145, 331, 331, 85, 138, 331, - 331, 239, 331, 331, 331, 145, 289, 342, 86, 138, - 214, 225, 288, 293, 331, 351, 331, 289, 342, 331, - 331, 214, 225, 288, 293, 331, 351, 331, 239, 331, - 331, 331, 145, 331, 331, 82, 138, 331, 331, 331, - 331, 331, 331, 331, 289, 342, 331, 331, 214, 225, - 288, 293, 239, 351, 331, 331, 114, 331, 331, 84, - 138, 331, 331, 331, 331, 331, 331, 331, 289, 342, - 331, 331, 214, 225, 288, 293, 331, 351, 239, 331, - 331, 331, 145, 331, 331, 60, 138, 331, 331, 239, - 331, 331, 331, 145, 289, 342, 78, 138, 214, 225, - 288, 293, 331, 351, 331, 289, 342, 331, 331, 214, - 225, 288, 293, 331, 351, 331, 239, 331, 331, 331, - 145, 331, 331, 63, 138, 331, 331, 331, 331, 331, - 331, 331, 289, 342, 331, 331, 214, 225, 288, 293, - 239, 351, 331, 331, 145, 331, 331, 81, 138, 331, - 331, 331, 331, 331, 331, 331, 289, 342, 331, 331, - 214, 225, 288, 293, 331, 351, 239, 331, 331, 331, - 127, 331, 331, 57, 138, 331, 331, 239, 331, 331, - 331, 145, 289, 342, 79, 138, 214, 225, 288, 293, - 331, 351, 331, 289, 342, 331, 331, 214, 225, 288, - 293, 331, 351, 331, 239, 331, 331, 331, 145, 331, - 331, 83, 138, 331, 331, 331, 331, 331, 331, 331, - 289, 342, 331, 331, 214, 225, 288, 293, 239, 351, - 331, 331, 145, 331, 331, 65, 138, 331, 331, 331, - 331, 331, 331, 331, 289, 342, 331, 331, 214, 225, - 288, 293, 331, 351, 239, 331, 331, 331, 110, 331, - 331, 59, 138, 331, 331, 239, 331, 331, 331, 145, - 289, 342, 76, 138, 214, 225, 288, 293, 331, 351, - 331, 289, 342, 331, 331, 214, 225, 288, 293, 331, - 351, 331, 239, 331, 331, 331, 111, 331, 331, 74, - 138, 331, 331, 331, 331, 331, 331, 331, 289, 342, - 331, 331, 214, 225, 288, 293, 239, 351, 331, 331, - 145, 331, 331, 88, 138, 331, 331, 331, 331, 331, - 331, 331, 289, 342, 331, 331, 214, 225, 288, 293, - 331, 351, 239, 331, 331, 331, 145, 331, 331, 53, - 138, 331, 331, 239, 331, 331, 331, 145, 289, 342, - 58, 138, 214, 225, 288, 293, 331, 351, 331, 289, - 342, 331, 331, 214, 225, 288, 293, 331, 351, 331, - 239, 331, 331, 331, 145, 331, 331, 89, 138, 331, - 331, 331, 331, 331, 331, 331, 289, 342, 331, 331, - 214, 225, 288, 293, 239, 351, 331, 331, 92, 331, - 331, 52, 117, 331, 331, 331, 331, 331, 331, 331, - 289, 342, 331, 331, 211, 225, 288, 293, 331, 351, - 239, 331, 331, 331, 145, 331, 331, 68, 138, 331, - 331, 239, 331, 331, 331, 145, 289, 342, 62, 138, - 214, 225, 288, 293, 331, 351, 331, 289, 342, 331, - 331, 214, 225, 288, 293, 331, 351, 331, 239, 331, - 331, 331, 145, 331, 331, 70, 138, 331, 331, 331, - 331, 331, 331, 331, 289, 342, 331, 331, 214, 225, - 288, 293, 239, 351, 331, 331, 145, 331, 331, 73, - 138, 331, 331, 331, 331, 331, 331, 331, 289, 342, - 331, 331, 214, 225, 288, 293, 331, 351, 239, 331, - 331, 331, 145, 331, 331, 80, 138, 331, 331, 239, - 331, 331, 331, 145, 289, 342, 90, 138, 214, 225, - 288, 293, 331, 351, 331, 289, 342, 331, 331, 214, - 225, 288, 293, 331, 351, 331, 239, 331, 331, 331, - 145, 331, 331, 55, 138, 331, 331, 331, 331, 331, - 331, 331, 289, 342, 331, 331, 214, 225, 288, 293, - 239, 351, 331, 331, 145, 331, 331, 66, 138, 331, - 331, 331, 331, 331, 331, 331, 289, 342, 331, 331, - 214, 225, 288, 293, 331, 351, +static public $yy_action = array( + 221, 31, 327, 263, 196, 309, 305, 301, 302, 303, + 304, 310, 311, 317, 318, 319, 202, 25, 23, 10, + 321, 32, 158, 131, 5, 107, 202, 315, 314, 28, + 143, 221, 206, 429, 255, 17, 252, 195, 122, 328, + 49, 51, 50, 45, 26, 19, 347, 343, 38, 13, + 344, 345, 39, 34, 221, 567, 95, 265, 238, 306, + 429, 256, 139, 119, 481, 206, 429, 278, 346, 352, + 353, 359, 360, 361, 358, 357, 354, 355, 356, 294, + 279, 37, 329, 28, 105, 248, 32, 481, 11, 17, + 286, 14, 276, 483, 49, 51, 50, 45, 26, 19, + 347, 343, 38, 13, 344, 345, 39, 34, 221, 93, + 221, 323, 386, 29, 128, 178, 483, 298, 481, 192, + 326, 278, 346, 352, 353, 359, 360, 361, 358, 357, + 354, 355, 356, 349, 279, 338, 221, 28, 423, 28, + 147, 481, 11, 17, 286, 17, 308, 483, 49, 51, + 50, 45, 26, 19, 347, 343, 38, 13, 344, 345, + 39, 34, 221, 93, 207, 28, 221, 31, 426, 261, + 483, 17, 36, 133, 290, 278, 346, 352, 353, 359, + 360, 361, 358, 357, 354, 355, 356, 231, 241, 104, + 160, 291, 221, 320, 429, 426, 307, 238, 306, 299, + 147, 426, 49, 51, 50, 45, 26, 19, 347, 343, + 38, 13, 344, 345, 39, 34, 221, 206, 267, 190, + 11, 429, 286, 20, 109, 336, 137, 429, 274, 278, + 346, 352, 353, 359, 360, 361, 358, 357, 354, 355, + 356, 285, 279, 16, 102, 165, 221, 206, 287, 11, + 481, 286, 14, 21, 299, 483, 49, 51, 50, 45, + 26, 19, 347, 343, 38, 13, 344, 345, 39, 34, + 221, 93, 206, 481, 6, 28, 201, 326, 483, 193, + 11, 17, 286, 278, 346, 352, 353, 359, 360, 361, + 358, 357, 354, 355, 356, 235, 106, 166, 199, 326, + 175, 258, 232, 218, 122, 233, 299, 206, 203, 299, + 49, 51, 50, 45, 26, 19, 347, 343, 38, 13, + 344, 345, 39, 34, 206, 221, 235, 205, 28, 31, + 11, 362, 237, 221, 17, 391, 262, 278, 346, 352, + 353, 359, 360, 361, 358, 357, 354, 355, 356, 197, + 105, 279, 212, 172, 493, 2, 221, 44, 8, 94, + 493, 283, 299, 184, 483, 49, 51, 50, 45, 26, + 19, 347, 343, 38, 13, 344, 345, 39, 34, 221, + 205, 264, 180, 482, 333, 4, 11, 483, 219, 141, + 242, 299, 278, 346, 352, 353, 359, 360, 361, 358, + 357, 354, 355, 356, 285, 250, 482, 183, 129, 24, + 240, 247, 149, 258, 277, 295, 299, 40, 158, 49, + 51, 50, 45, 26, 19, 347, 343, 38, 13, 344, + 345, 39, 34, 221, 205, 204, 167, 11, 221, 286, + 134, 11, 179, 245, 285, 299, 278, 346, 352, 353, + 359, 360, 361, 358, 357, 354, 355, 356, 139, 198, + 142, 191, 164, 205, 285, 313, 11, 312, 251, 27, + 221, 348, 132, 49, 51, 50, 45, 26, 19, 347, + 343, 38, 13, 344, 345, 39, 34, 221, 231, 206, + 187, 260, 158, 103, 7, 258, 254, 121, 157, 299, + 278, 346, 352, 353, 359, 360, 361, 358, 357, 354, + 355, 356, 285, 294, 294, 163, 316, 228, 115, 22, + 173, 194, 296, 169, 299, 17, 331, 49, 51, 50, + 45, 26, 19, 347, 343, 38, 13, 344, 345, 39, + 34, 221, 189, 108, 171, 182, 140, 6, 123, 340, + 230, 101, 97, 299, 278, 346, 352, 353, 359, 360, + 361, 358, 357, 354, 355, 356, 285, 294, 294, 159, + 161, 41, 281, 242, 253, 282, 144, 268, 299, 299, + 113, 49, 51, 50, 45, 26, 19, 347, 343, 38, + 13, 344, 345, 39, 34, 221, 294, 272, 181, 120, + 42, 297, 200, 30, 284, 221, 100, 299, 278, 346, + 352, 353, 359, 360, 361, 358, 357, 354, 355, 356, + 285, 332, 294, 275, 300, 298, 168, 170, 177, 12, + 269, 285, 44, 273, 270, 49, 51, 50, 45, 26, + 19, 347, 343, 38, 13, 344, 345, 39, 34, 221, + 259, 331, 205, 331, 287, 331, 331, 331, 98, 112, + 118, 331, 278, 346, 352, 353, 359, 360, 361, 358, + 357, 354, 355, 356, 294, 294, 294, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 249, 49, + 51, 50, 45, 26, 19, 347, 343, 38, 13, 344, + 345, 39, 34, 221, 35, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 278, 346, 352, 353, + 359, 360, 361, 358, 357, 354, 355, 356, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 158, 49, 51, 50, 45, 26, 19, 347, + 343, 38, 13, 344, 345, 39, 34, 221, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 278, 346, 352, 353, 359, 360, 361, 358, 357, 354, + 355, 356, 139, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 49, 51, 50, + 45, 26, 19, 347, 343, 38, 13, 344, 345, 39, + 34, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 158, 43, 331, 278, 346, 352, 353, 359, 360, + 361, 358, 357, 354, 355, 356, 331, 331, 331, 49, + 51, 50, 45, 26, 19, 347, 343, 38, 13, 344, + 345, 39, 34, 331, 331, 331, 331, 331, 331, 212, + 331, 230, 331, 331, 331, 8, 278, 346, 352, 353, + 359, 360, 361, 358, 357, 354, 355, 356, 331, 331, + 331, 337, 331, 331, 331, 10, 126, 91, 9, 331, + 5, 107, 331, 5, 107, 11, 143, 286, 146, 143, + 255, 322, 252, 255, 229, 252, 33, 28, 331, 48, + 330, 341, 331, 17, 239, 351, 331, 331, 154, 331, + 331, 331, 138, 331, 47, 46, 280, 234, 292, 146, + 227, 350, 105, 1, 216, 225, 288, 293, 331, 351, + 331, 246, 331, 10, 130, 213, 351, 96, 5, 107, + 324, 18, 339, 331, 143, 239, 331, 331, 255, 156, + 252, 331, 229, 138, 33, 331, 331, 48, 331, 331, + 331, 331, 266, 331, 331, 216, 225, 288, 293, 331, + 351, 331, 47, 46, 280, 234, 292, 331, 227, 331, + 105, 1, 271, 331, 331, 331, 427, 337, 331, 331, + 331, 10, 130, 224, 9, 96, 5, 107, 331, 5, + 107, 331, 143, 331, 236, 143, 255, 331, 252, 255, + 229, 252, 33, 427, 331, 48, 331, 331, 331, 427, + 331, 239, 481, 331, 331, 151, 331, 331, 331, 138, + 47, 46, 280, 234, 292, 331, 227, 331, 105, 1, + 331, 216, 225, 288, 293, 481, 351, 331, 331, 10, + 130, 215, 331, 96, 5, 107, 325, 18, 339, 331, + 143, 239, 331, 331, 255, 152, 252, 331, 229, 138, + 33, 331, 331, 48, 331, 331, 331, 331, 331, 331, + 331, 216, 225, 288, 293, 331, 351, 331, 47, 46, + 280, 234, 292, 331, 227, 331, 105, 1, 221, 331, + 396, 331, 11, 331, 286, 331, 331, 10, 122, 224, + 331, 96, 5, 107, 28, 331, 243, 239, 143, 257, + 17, 150, 255, 331, 252, 138, 229, 28, 15, 331, + 331, 48, 331, 17, 331, 331, 481, 216, 225, 288, + 293, 331, 351, 331, 331, 331, 47, 46, 280, 234, + 292, 331, 227, 331, 105, 1, 331, 331, 331, 481, + 331, 11, 331, 286, 331, 10, 130, 208, 331, 96, + 5, 107, 331, 28, 331, 244, 143, 239, 331, 17, + 255, 148, 252, 331, 229, 138, 33, 331, 331, 48, + 331, 331, 331, 331, 331, 331, 331, 216, 225, 288, + 293, 331, 351, 331, 47, 46, 280, 234, 292, 331, + 227, 331, 105, 1, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 10, 136, 224, 331, 96, 5, 107, + 331, 331, 331, 331, 143, 239, 331, 331, 255, 155, + 252, 331, 229, 138, 3, 331, 331, 48, 331, 331, + 331, 331, 331, 331, 331, 216, 225, 288, 293, 331, + 351, 331, 47, 46, 280, 234, 292, 331, 227, 331, + 105, 1, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 10, 130, 209, 331, 96, 5, 107, 331, 331, + 331, 331, 143, 239, 331, 331, 255, 153, 252, 331, + 222, 138, 33, 331, 331, 48, 331, 331, 331, 331, + 331, 331, 331, 216, 225, 288, 293, 331, 351, 331, + 47, 46, 280, 234, 292, 331, 227, 331, 105, 1, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 10, + 124, 224, 331, 96, 5, 107, 331, 331, 331, 331, + 143, 331, 331, 331, 255, 331, 252, 331, 229, 331, + 33, 196, 174, 48, 331, 331, 331, 331, 331, 331, + 331, 299, 331, 331, 25, 23, 331, 331, 47, 46, + 280, 234, 292, 331, 227, 331, 105, 1, 331, 206, + 331, 331, 331, 331, 331, 331, 331, 10, 122, 224, + 331, 96, 5, 107, 331, 331, 331, 331, 143, 331, + 331, 331, 255, 331, 252, 331, 229, 331, 15, 331, + 331, 48, 331, 331, 331, 471, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 47, 46, 280, 234, + 292, 331, 227, 331, 105, 331, 331, 471, 331, 471, + 471, 331, 471, 471, 196, 186, 331, 331, 471, 96, + 471, 481, 471, 331, 299, 331, 331, 25, 23, 331, + 239, 331, 331, 331, 125, 331, 331, 87, 138, 331, + 331, 331, 206, 331, 481, 331, 289, 342, 331, 471, + 214, 225, 288, 293, 331, 351, 331, 331, 331, 331, + 239, 196, 162, 471, 145, 220, 335, 54, 116, 135, + 331, 299, 331, 331, 25, 23, 289, 342, 331, 331, + 214, 225, 288, 293, 239, 351, 331, 331, 145, 206, + 331, 72, 138, 331, 331, 331, 331, 331, 331, 331, + 289, 342, 331, 331, 214, 225, 288, 293, 331, 351, + 239, 99, 176, 331, 145, 331, 217, 72, 138, 331, + 331, 299, 331, 331, 25, 23, 289, 342, 331, 331, + 214, 225, 288, 293, 331, 351, 331, 239, 331, 206, + 331, 145, 223, 331, 72, 138, 331, 331, 331, 331, + 331, 331, 331, 289, 342, 331, 331, 214, 225, 288, + 293, 331, 351, 331, 239, 331, 331, 331, 125, 226, + 331, 87, 138, 331, 331, 331, 331, 331, 331, 331, + 289, 342, 331, 331, 214, 225, 288, 293, 239, 351, + 331, 331, 145, 331, 331, 62, 116, 254, 331, 331, + 334, 331, 331, 331, 289, 342, 331, 331, 214, 225, + 288, 293, 331, 351, 239, 331, 331, 331, 145, 331, + 331, 69, 138, 331, 331, 239, 331, 331, 331, 145, + 289, 342, 77, 138, 210, 225, 288, 293, 331, 351, + 331, 289, 342, 331, 331, 214, 225, 288, 293, 331, + 351, 331, 239, 196, 185, 331, 145, 331, 331, 75, + 138, 331, 331, 299, 331, 331, 25, 23, 289, 342, + 331, 331, 214, 225, 288, 293, 239, 351, 331, 331, + 145, 206, 331, 64, 138, 331, 331, 331, 331, 331, + 331, 331, 289, 342, 331, 331, 214, 225, 288, 293, + 331, 351, 239, 331, 331, 331, 145, 331, 331, 67, + 138, 331, 331, 239, 331, 331, 331, 145, 289, 342, + 61, 138, 214, 225, 288, 293, 331, 351, 331, 289, + 342, 331, 331, 214, 225, 288, 293, 331, 351, 331, + 239, 196, 188, 331, 92, 331, 331, 56, 117, 331, + 331, 299, 331, 331, 25, 23, 289, 342, 331, 331, + 214, 225, 288, 293, 239, 351, 331, 331, 145, 206, + 331, 71, 138, 331, 331, 331, 331, 331, 331, 331, + 289, 342, 331, 331, 214, 225, 288, 293, 331, 351, + 239, 331, 331, 331, 145, 331, 331, 85, 138, 331, + 331, 239, 331, 331, 331, 145, 289, 342, 86, 138, + 214, 225, 288, 293, 331, 351, 331, 289, 342, 331, + 331, 214, 225, 288, 293, 331, 351, 331, 239, 331, + 331, 331, 145, 331, 331, 82, 138, 331, 331, 331, + 331, 331, 331, 331, 289, 342, 331, 331, 214, 225, + 288, 293, 239, 351, 331, 331, 114, 331, 331, 84, + 138, 331, 331, 331, 331, 331, 331, 331, 289, 342, + 331, 331, 214, 225, 288, 293, 331, 351, 239, 331, + 331, 331, 145, 331, 331, 60, 138, 331, 331, 239, + 331, 331, 331, 145, 289, 342, 78, 138, 214, 225, + 288, 293, 331, 351, 331, 289, 342, 331, 331, 214, + 225, 288, 293, 331, 351, 331, 239, 331, 331, 331, + 145, 331, 331, 63, 138, 331, 331, 331, 331, 331, + 331, 331, 289, 342, 331, 331, 214, 225, 288, 293, + 239, 351, 331, 331, 145, 331, 331, 81, 138, 331, + 331, 331, 331, 331, 331, 331, 289, 342, 331, 331, + 214, 225, 288, 293, 331, 351, 239, 331, 331, 331, + 127, 331, 331, 57, 138, 331, 331, 239, 331, 331, + 331, 145, 289, 342, 79, 138, 214, 225, 288, 293, + 331, 351, 331, 289, 342, 331, 331, 214, 225, 288, + 293, 331, 351, 331, 239, 331, 331, 331, 145, 331, + 331, 83, 138, 331, 331, 331, 331, 331, 331, 331, + 289, 342, 331, 331, 214, 225, 288, 293, 239, 351, + 331, 331, 145, 331, 331, 65, 138, 331, 331, 331, + 331, 331, 331, 331, 289, 342, 331, 331, 214, 225, + 288, 293, 331, 351, 239, 331, 331, 331, 110, 331, + 331, 59, 138, 331, 331, 239, 331, 331, 331, 145, + 289, 342, 76, 138, 214, 225, 288, 293, 331, 351, + 331, 289, 342, 331, 331, 214, 225, 288, 293, 331, + 351, 331, 239, 331, 331, 331, 111, 331, 331, 74, + 138, 331, 331, 331, 331, 331, 331, 331, 289, 342, + 331, 331, 214, 225, 288, 293, 239, 351, 331, 331, + 145, 331, 331, 88, 138, 331, 331, 331, 331, 331, + 331, 331, 289, 342, 331, 331, 214, 225, 288, 293, + 331, 351, 239, 331, 331, 331, 145, 331, 331, 53, + 138, 331, 331, 239, 331, 331, 331, 145, 289, 342, + 58, 138, 214, 225, 288, 293, 331, 351, 331, 289, + 342, 331, 331, 214, 225, 288, 293, 331, 351, 331, + 239, 331, 331, 331, 145, 331, 331, 89, 138, 331, + 331, 331, 331, 331, 331, 331, 289, 342, 331, 331, + 214, 225, 288, 293, 239, 351, 331, 331, 92, 331, + 331, 52, 117, 331, 331, 331, 331, 331, 331, 331, + 289, 342, 331, 331, 211, 225, 288, 293, 331, 351, + 239, 331, 331, 331, 145, 331, 331, 68, 138, 331, + 331, 239, 331, 331, 331, 145, 289, 342, 62, 138, + 214, 225, 288, 293, 331, 351, 331, 289, 342, 331, + 331, 214, 225, 288, 293, 331, 351, 331, 239, 331, + 331, 331, 145, 331, 331, 70, 138, 331, 331, 331, + 331, 331, 331, 331, 289, 342, 331, 331, 214, 225, + 288, 293, 239, 351, 331, 331, 145, 331, 331, 73, + 138, 331, 331, 331, 331, 331, 331, 331, 289, 342, + 331, 331, 214, 225, 288, 293, 331, 351, 239, 331, + 331, 331, 145, 331, 331, 80, 138, 331, 331, 239, + 331, 331, 331, 145, 289, 342, 90, 138, 214, 225, + 288, 293, 331, 351, 331, 289, 342, 331, 331, 214, + 225, 288, 293, 331, 351, 331, 239, 331, 331, 331, + 145, 331, 331, 55, 138, 331, 331, 331, 331, 331, + 331, 331, 289, 342, 331, 331, 214, 225, 288, 293, + 239, 351, 331, 331, 145, 331, 331, 66, 138, 331, + 331, 331, 331, 331, 331, 331, 289, 342, 331, 331, + 214, 225, 288, 293, 331, 351, ); static public $yy_lookahead = array( - 1, 38, 3, 40, 92, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 105, 106, 18, - 3, 21, 22, 19, 23, 24, 15, 16, 17, 30, - 29, 1, 120, 3, 33, 36, 35, 92, 19, 20, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 1, 84, 85, 86, 87, 88, - 30, 31, 62, 99, 39, 120, 36, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 115, - 26, 28, 63, 30, 65, 60, 21, 62, 18, 36, - 20, 21, 67, 39, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 1, 55, - 1, 3, 3, 18, 19, 20, 62, 114, 39, 116, - 117, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 111, 26, 81, 1, 30, 3, 30, - 118, 62, 18, 36, 20, 36, 3, 39, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 1, 55, 3, 30, 1, 38, 3, 40, - 62, 36, 18, 19, 20, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 87, 64, 92, - 93, 37, 1, 111, 3, 30, 86, 87, 88, 102, - 118, 36, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 1, 120, 3, 92, - 18, 30, 20, 21, 124, 125, 100, 36, 26, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 115, 26, 32, 92, 93, 1, 120, 121, 18, - 39, 20, 21, 18, 102, 39, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 1, 55, 120, 62, 39, 30, 116, 117, 62, 92, - 18, 36, 20, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 64, 92, 93, 116, 117, - 93, 95, 96, 97, 19, 20, 102, 120, 20, 102, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 120, 1, 64, 120, 30, 38, - 18, 40, 20, 1, 36, 3, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 25, - 65, 26, 60, 93, 60, 38, 1, 2, 66, 20, - 66, 20, 102, 113, 39, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 1, - 120, 3, 93, 39, 67, 39, 18, 62, 20, 19, - 2, 102, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 115, 64, 62, 93, 62, 21, - 19, 20, 20, 95, 96, 20, 102, 21, 22, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 1, 120, 3, 93, 18, 1, 20, - 19, 18, 113, 20, 115, 102, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 62, 25, - 39, 92, 113, 120, 115, 88, 18, 90, 20, 32, - 1, 117, 38, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 1, 87, 120, - 93, 22, 22, 113, 39, 95, 96, 99, 99, 102, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 115, 115, 115, 93, 16, 31, 89, 30, - 113, 101, 20, 65, 102, 36, 125, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 1, 101, 101, 93, 65, 19, 39, 19, 3, - 60, 99, 99, 102, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 115, 115, 115, 93, - 93, 27, 37, 2, 20, 37, 20, 20, 102, 102, - 99, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 1, 115, 67, 93, 19, - 2, 20, 20, 56, 20, 1, 99, 102, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 115, 81, 115, 40, 102, 114, 113, 113, 113, 98, - 118, 115, 2, 30, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 1, - 98, 126, 120, 126, 121, 126, 126, 126, 99, 99, - 99, 126, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 115, 115, 115, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 1, 2, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 22, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 1, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 62, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 22, 21, 126, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 126, 126, 126, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 126, 126, 126, 126, 126, 126, 60, - 126, 60, 126, 126, 126, 66, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 126, 126, - 126, 11, 126, 126, 126, 18, 19, 20, 18, 126, - 23, 24, 126, 23, 24, 18, 29, 20, 95, 29, - 33, 34, 35, 33, 37, 35, 39, 30, 126, 42, - 107, 108, 126, 36, 87, 112, 126, 126, 91, 126, - 126, 126, 95, 126, 57, 58, 59, 60, 61, 95, - 63, 104, 65, 66, 107, 108, 109, 110, 126, 112, - 126, 107, 126, 18, 19, 20, 112, 80, 23, 24, - 80, 81, 82, 126, 29, 87, 126, 126, 33, 91, - 35, 126, 37, 95, 39, 126, 126, 42, 126, 126, - 126, 126, 104, 126, 126, 107, 108, 109, 110, 126, - 112, 126, 57, 58, 59, 60, 61, 126, 63, 126, - 65, 66, 67, 126, 126, 126, 3, 11, 126, 126, - 126, 18, 19, 20, 18, 80, 23, 24, 126, 23, - 24, 126, 29, 126, 21, 29, 33, 126, 35, 33, - 37, 35, 39, 30, 126, 42, 126, 126, 126, 36, - 126, 87, 39, 126, 126, 91, 126, 126, 126, 95, - 57, 58, 59, 60, 61, 126, 63, 126, 65, 66, - 126, 107, 108, 109, 110, 62, 112, 126, 126, 18, - 19, 20, 126, 80, 23, 24, 80, 81, 82, 126, - 29, 87, 126, 126, 33, 91, 35, 126, 37, 95, - 39, 126, 126, 42, 126, 126, 126, 126, 126, 126, - 126, 107, 108, 109, 110, 126, 112, 126, 57, 58, - 59, 60, 61, 126, 63, 126, 65, 66, 1, 126, - 3, 126, 18, 126, 20, 126, 126, 18, 19, 20, - 126, 80, 23, 24, 30, 126, 32, 87, 29, 22, - 36, 91, 33, 126, 35, 95, 37, 30, 39, 126, - 126, 42, 126, 36, 126, 126, 39, 107, 108, 109, - 110, 126, 112, 126, 126, 126, 57, 58, 59, 60, - 61, 126, 63, 126, 65, 66, 126, 126, 126, 62, - 126, 18, 126, 20, 126, 18, 19, 20, 126, 80, - 23, 24, 126, 30, 126, 32, 29, 87, 126, 36, - 33, 91, 35, 126, 37, 95, 39, 126, 126, 42, - 126, 126, 126, 126, 126, 126, 126, 107, 108, 109, - 110, 126, 112, 126, 57, 58, 59, 60, 61, 126, - 63, 126, 65, 66, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 18, 19, 20, 126, 80, 23, 24, - 126, 126, 126, 126, 29, 87, 126, 126, 33, 91, - 35, 126, 37, 95, 39, 126, 126, 42, 126, 126, - 126, 126, 126, 126, 126, 107, 108, 109, 110, 126, - 112, 126, 57, 58, 59, 60, 61, 126, 63, 126, - 65, 66, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 18, 19, 20, 126, 80, 23, 24, 126, 126, - 126, 126, 29, 87, 126, 126, 33, 91, 35, 126, - 37, 95, 39, 126, 126, 42, 126, 126, 126, 126, - 126, 126, 126, 107, 108, 109, 110, 126, 112, 126, - 57, 58, 59, 60, 61, 126, 63, 126, 65, 66, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 18, - 19, 20, 126, 80, 23, 24, 126, 126, 126, 126, - 29, 126, 126, 126, 33, 126, 35, 126, 37, 126, - 39, 92, 93, 42, 126, 126, 126, 126, 126, 126, - 126, 102, 126, 126, 105, 106, 126, 126, 57, 58, - 59, 60, 61, 126, 63, 126, 65, 66, 126, 120, - 126, 126, 126, 126, 126, 126, 126, 18, 19, 20, - 126, 80, 23, 24, 126, 126, 126, 126, 29, 126, - 126, 126, 33, 126, 35, 126, 37, 126, 39, 126, - 126, 42, 126, 126, 126, 3, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 57, 58, 59, 60, - 61, 126, 63, 126, 65, 126, 126, 25, 126, 27, - 28, 126, 30, 31, 92, 93, 126, 126, 36, 80, - 38, 39, 40, 126, 102, 126, 126, 105, 106, 126, - 87, 126, 126, 126, 91, 126, 126, 94, 95, 126, - 126, 126, 120, 126, 62, 126, 103, 104, 126, 67, - 107, 108, 109, 110, 126, 112, 126, 126, 126, 126, - 87, 92, 93, 81, 91, 122, 123, 94, 95, 96, - 126, 102, 126, 126, 105, 106, 103, 104, 126, 126, - 107, 108, 109, 110, 87, 112, 126, 126, 91, 120, - 126, 94, 95, 126, 126, 126, 126, 126, 126, 126, - 103, 104, 126, 126, 107, 108, 109, 110, 126, 112, - 87, 92, 93, 126, 91, 126, 119, 94, 95, 126, - 126, 102, 126, 126, 105, 106, 103, 104, 126, 126, - 107, 108, 109, 110, 126, 112, 126, 87, 126, 120, - 126, 91, 119, 126, 94, 95, 126, 126, 126, 126, - 126, 126, 126, 103, 104, 126, 126, 107, 108, 109, - 110, 126, 112, 126, 87, 126, 126, 126, 91, 119, - 126, 94, 95, 126, 126, 126, 126, 126, 126, 126, - 103, 104, 126, 126, 107, 108, 109, 110, 87, 112, - 126, 126, 91, 126, 126, 94, 95, 96, 126, 126, - 123, 126, 126, 126, 103, 104, 126, 126, 107, 108, - 109, 110, 126, 112, 87, 126, 126, 126, 91, 126, - 126, 94, 95, 126, 126, 87, 126, 126, 126, 91, - 103, 104, 94, 95, 107, 108, 109, 110, 126, 112, - 126, 103, 104, 126, 126, 107, 108, 109, 110, 126, - 112, 126, 87, 92, 93, 126, 91, 126, 126, 94, - 95, 126, 126, 102, 126, 126, 105, 106, 103, 104, - 126, 126, 107, 108, 109, 110, 87, 112, 126, 126, - 91, 120, 126, 94, 95, 126, 126, 126, 126, 126, - 126, 126, 103, 104, 126, 126, 107, 108, 109, 110, - 126, 112, 87, 126, 126, 126, 91, 126, 126, 94, - 95, 126, 126, 87, 126, 126, 126, 91, 103, 104, - 94, 95, 107, 108, 109, 110, 126, 112, 126, 103, - 104, 126, 126, 107, 108, 109, 110, 126, 112, 126, - 87, 92, 93, 126, 91, 126, 126, 94, 95, 126, - 126, 102, 126, 126, 105, 106, 103, 104, 126, 126, - 107, 108, 109, 110, 87, 112, 126, 126, 91, 120, - 126, 94, 95, 126, 126, 126, 126, 126, 126, 126, - 103, 104, 126, 126, 107, 108, 109, 110, 126, 112, - 87, 126, 126, 126, 91, 126, 126, 94, 95, 126, - 126, 87, 126, 126, 126, 91, 103, 104, 94, 95, - 107, 108, 109, 110, 126, 112, 126, 103, 104, 126, - 126, 107, 108, 109, 110, 126, 112, 126, 87, 126, - 126, 126, 91, 126, 126, 94, 95, 126, 126, 126, - 126, 126, 126, 126, 103, 104, 126, 126, 107, 108, - 109, 110, 87, 112, 126, 126, 91, 126, 126, 94, - 95, 126, 126, 126, 126, 126, 126, 126, 103, 104, - 126, 126, 107, 108, 109, 110, 126, 112, 87, 126, - 126, 126, 91, 126, 126, 94, 95, 126, 126, 87, - 126, 126, 126, 91, 103, 104, 94, 95, 107, 108, - 109, 110, 126, 112, 126, 103, 104, 126, 126, 107, - 108, 109, 110, 126, 112, 126, 87, 126, 126, 126, - 91, 126, 126, 94, 95, 126, 126, 126, 126, 126, - 126, 126, 103, 104, 126, 126, 107, 108, 109, 110, - 87, 112, 126, 126, 91, 126, 126, 94, 95, 126, - 126, 126, 126, 126, 126, 126, 103, 104, 126, 126, - 107, 108, 109, 110, 126, 112, 87, 126, 126, 126, - 91, 126, 126, 94, 95, 126, 126, 87, 126, 126, - 126, 91, 103, 104, 94, 95, 107, 108, 109, 110, - 126, 112, 126, 103, 104, 126, 126, 107, 108, 109, - 110, 126, 112, 126, 87, 126, 126, 126, 91, 126, - 126, 94, 95, 126, 126, 126, 126, 126, 126, 126, - 103, 104, 126, 126, 107, 108, 109, 110, 87, 112, - 126, 126, 91, 126, 126, 94, 95, 126, 126, 126, - 126, 126, 126, 126, 103, 104, 126, 126, 107, 108, - 109, 110, 126, 112, 87, 126, 126, 126, 91, 126, - 126, 94, 95, 126, 126, 87, 126, 126, 126, 91, - 103, 104, 94, 95, 107, 108, 109, 110, 126, 112, - 126, 103, 104, 126, 126, 107, 108, 109, 110, 126, - 112, 126, 87, 126, 126, 126, 91, 126, 126, 94, - 95, 126, 126, 126, 126, 126, 126, 126, 103, 104, - 126, 126, 107, 108, 109, 110, 87, 112, 126, 126, - 91, 126, 126, 94, 95, 126, 126, 126, 126, 126, - 126, 126, 103, 104, 126, 126, 107, 108, 109, 110, - 126, 112, 87, 126, 126, 126, 91, 126, 126, 94, - 95, 126, 126, 87, 126, 126, 126, 91, 103, 104, - 94, 95, 107, 108, 109, 110, 126, 112, 126, 103, - 104, 126, 126, 107, 108, 109, 110, 126, 112, 126, - 87, 126, 126, 126, 91, 126, 126, 94, 95, 126, - 126, 126, 126, 126, 126, 126, 103, 104, 126, 126, - 107, 108, 109, 110, 87, 112, 126, 126, 91, 126, - 126, 94, 95, 126, 126, 126, 126, 126, 126, 126, - 103, 104, 126, 126, 107, 108, 109, 110, 126, 112, - 87, 126, 126, 126, 91, 126, 126, 94, 95, 126, - 126, 87, 126, 126, 126, 91, 103, 104, 94, 95, - 107, 108, 109, 110, 126, 112, 126, 103, 104, 126, - 126, 107, 108, 109, 110, 126, 112, 126, 87, 126, - 126, 126, 91, 126, 126, 94, 95, 126, 126, 126, - 126, 126, 126, 126, 103, 104, 126, 126, 107, 108, - 109, 110, 87, 112, 126, 126, 91, 126, 126, 94, - 95, 126, 126, 126, 126, 126, 126, 126, 103, 104, - 126, 126, 107, 108, 109, 110, 126, 112, 87, 126, - 126, 126, 91, 126, 126, 94, 95, 126, 126, 87, - 126, 126, 126, 91, 103, 104, 94, 95, 107, 108, - 109, 110, 126, 112, 126, 103, 104, 126, 126, 107, - 108, 109, 110, 126, 112, 126, 87, 126, 126, 126, - 91, 126, 126, 94, 95, 126, 126, 126, 126, 126, - 126, 126, 103, 104, 126, 126, 107, 108, 109, 110, - 87, 112, 126, 126, 91, 126, 126, 94, 95, 126, - 126, 126, 126, 126, 126, 126, 103, 104, 126, 126, - 107, 108, 109, 110, 126, 112, - ); - const YY_SHIFT_USE_DFLT = - 38; + 1, 38, 3, 40, 92, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 105, 106, 18, + 3, 21, 22, 19, 23, 24, 15, 16, 17, 30, + 29, 1, 120, 3, 33, 36, 35, 92, 19, 20, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 1, 84, 85, 86, 87, 88, + 30, 31, 62, 99, 39, 120, 36, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 115, + 26, 28, 63, 30, 65, 60, 21, 62, 18, 36, + 20, 21, 67, 39, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 1, 55, + 1, 3, 3, 18, 19, 20, 62, 114, 39, 116, + 117, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 111, 26, 81, 1, 30, 3, 30, + 118, 62, 18, 36, 20, 36, 3, 39, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 1, 55, 3, 30, 1, 38, 3, 40, + 62, 36, 18, 19, 20, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 87, 64, 92, + 93, 37, 1, 111, 3, 30, 86, 87, 88, 102, + 118, 36, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 1, 120, 3, 92, + 18, 30, 20, 21, 124, 125, 100, 36, 26, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 115, 26, 32, 92, 93, 1, 120, 121, 18, + 39, 20, 21, 18, 102, 39, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 1, 55, 120, 62, 39, 30, 116, 117, 62, 92, + 18, 36, 20, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 64, 92, 93, 116, 117, + 93, 95, 96, 97, 19, 20, 102, 120, 20, 102, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 120, 1, 64, 120, 30, 38, + 18, 40, 20, 1, 36, 3, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 25, + 65, 26, 60, 93, 60, 38, 1, 2, 66, 20, + 66, 20, 102, 113, 39, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 1, + 120, 3, 93, 39, 67, 39, 18, 62, 20, 19, + 2, 102, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 115, 64, 62, 93, 62, 21, + 19, 20, 20, 95, 96, 20, 102, 21, 22, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 1, 120, 3, 93, 18, 1, 20, + 19, 18, 113, 20, 115, 102, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 62, 25, + 39, 92, 113, 120, 115, 88, 18, 90, 20, 32, + 1, 117, 38, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 1, 87, 120, + 93, 22, 22, 113, 39, 95, 96, 99, 99, 102, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 115, 115, 115, 93, 16, 31, 89, 30, + 113, 101, 20, 65, 102, 36, 125, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 1, 101, 101, 93, 65, 19, 39, 19, 3, + 60, 99, 99, 102, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 115, 115, 115, 93, + 93, 27, 37, 2, 20, 37, 20, 20, 102, 102, + 99, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 1, 115, 67, 93, 19, + 2, 20, 20, 56, 20, 1, 99, 102, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 115, 81, 115, 40, 102, 114, 113, 113, 113, 98, + 118, 115, 2, 30, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 1, + 98, 126, 120, 126, 121, 126, 126, 126, 99, 99, + 99, 126, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 115, 115, 115, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 1, 2, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 22, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 1, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 62, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 22, 21, 126, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 126, 126, 126, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 126, 126, 126, 126, 126, 126, 60, + 126, 60, 126, 126, 126, 66, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 126, 126, + 126, 11, 126, 126, 126, 18, 19, 20, 18, 126, + 23, 24, 126, 23, 24, 18, 29, 20, 95, 29, + 33, 34, 35, 33, 37, 35, 39, 30, 126, 42, + 107, 108, 126, 36, 87, 112, 126, 126, 91, 126, + 126, 126, 95, 126, 57, 58, 59, 60, 61, 95, + 63, 104, 65, 66, 107, 108, 109, 110, 126, 112, + 126, 107, 126, 18, 19, 20, 112, 80, 23, 24, + 80, 81, 82, 126, 29, 87, 126, 126, 33, 91, + 35, 126, 37, 95, 39, 126, 126, 42, 126, 126, + 126, 126, 104, 126, 126, 107, 108, 109, 110, 126, + 112, 126, 57, 58, 59, 60, 61, 126, 63, 126, + 65, 66, 67, 126, 126, 126, 3, 11, 126, 126, + 126, 18, 19, 20, 18, 80, 23, 24, 126, 23, + 24, 126, 29, 126, 21, 29, 33, 126, 35, 33, + 37, 35, 39, 30, 126, 42, 126, 126, 126, 36, + 126, 87, 39, 126, 126, 91, 126, 126, 126, 95, + 57, 58, 59, 60, 61, 126, 63, 126, 65, 66, + 126, 107, 108, 109, 110, 62, 112, 126, 126, 18, + 19, 20, 126, 80, 23, 24, 80, 81, 82, 126, + 29, 87, 126, 126, 33, 91, 35, 126, 37, 95, + 39, 126, 126, 42, 126, 126, 126, 126, 126, 126, + 126, 107, 108, 109, 110, 126, 112, 126, 57, 58, + 59, 60, 61, 126, 63, 126, 65, 66, 1, 126, + 3, 126, 18, 126, 20, 126, 126, 18, 19, 20, + 126, 80, 23, 24, 30, 126, 32, 87, 29, 22, + 36, 91, 33, 126, 35, 95, 37, 30, 39, 126, + 126, 42, 126, 36, 126, 126, 39, 107, 108, 109, + 110, 126, 112, 126, 126, 126, 57, 58, 59, 60, + 61, 126, 63, 126, 65, 66, 126, 126, 126, 62, + 126, 18, 126, 20, 126, 18, 19, 20, 126, 80, + 23, 24, 126, 30, 126, 32, 29, 87, 126, 36, + 33, 91, 35, 126, 37, 95, 39, 126, 126, 42, + 126, 126, 126, 126, 126, 126, 126, 107, 108, 109, + 110, 126, 112, 126, 57, 58, 59, 60, 61, 126, + 63, 126, 65, 66, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 18, 19, 20, 126, 80, 23, 24, + 126, 126, 126, 126, 29, 87, 126, 126, 33, 91, + 35, 126, 37, 95, 39, 126, 126, 42, 126, 126, + 126, 126, 126, 126, 126, 107, 108, 109, 110, 126, + 112, 126, 57, 58, 59, 60, 61, 126, 63, 126, + 65, 66, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 18, 19, 20, 126, 80, 23, 24, 126, 126, + 126, 126, 29, 87, 126, 126, 33, 91, 35, 126, + 37, 95, 39, 126, 126, 42, 126, 126, 126, 126, + 126, 126, 126, 107, 108, 109, 110, 126, 112, 126, + 57, 58, 59, 60, 61, 126, 63, 126, 65, 66, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 18, + 19, 20, 126, 80, 23, 24, 126, 126, 126, 126, + 29, 126, 126, 126, 33, 126, 35, 126, 37, 126, + 39, 92, 93, 42, 126, 126, 126, 126, 126, 126, + 126, 102, 126, 126, 105, 106, 126, 126, 57, 58, + 59, 60, 61, 126, 63, 126, 65, 66, 126, 120, + 126, 126, 126, 126, 126, 126, 126, 18, 19, 20, + 126, 80, 23, 24, 126, 126, 126, 126, 29, 126, + 126, 126, 33, 126, 35, 126, 37, 126, 39, 126, + 126, 42, 126, 126, 126, 3, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 57, 58, 59, 60, + 61, 126, 63, 126, 65, 126, 126, 25, 126, 27, + 28, 126, 30, 31, 92, 93, 126, 126, 36, 80, + 38, 39, 40, 126, 102, 126, 126, 105, 106, 126, + 87, 126, 126, 126, 91, 126, 126, 94, 95, 126, + 126, 126, 120, 126, 62, 126, 103, 104, 126, 67, + 107, 108, 109, 110, 126, 112, 126, 126, 126, 126, + 87, 92, 93, 81, 91, 122, 123, 94, 95, 96, + 126, 102, 126, 126, 105, 106, 103, 104, 126, 126, + 107, 108, 109, 110, 87, 112, 126, 126, 91, 120, + 126, 94, 95, 126, 126, 126, 126, 126, 126, 126, + 103, 104, 126, 126, 107, 108, 109, 110, 126, 112, + 87, 92, 93, 126, 91, 126, 119, 94, 95, 126, + 126, 102, 126, 126, 105, 106, 103, 104, 126, 126, + 107, 108, 109, 110, 126, 112, 126, 87, 126, 120, + 126, 91, 119, 126, 94, 95, 126, 126, 126, 126, + 126, 126, 126, 103, 104, 126, 126, 107, 108, 109, + 110, 126, 112, 126, 87, 126, 126, 126, 91, 119, + 126, 94, 95, 126, 126, 126, 126, 126, 126, 126, + 103, 104, 126, 126, 107, 108, 109, 110, 87, 112, + 126, 126, 91, 126, 126, 94, 95, 96, 126, 126, + 123, 126, 126, 126, 103, 104, 126, 126, 107, 108, + 109, 110, 126, 112, 87, 126, 126, 126, 91, 126, + 126, 94, 95, 126, 126, 87, 126, 126, 126, 91, + 103, 104, 94, 95, 107, 108, 109, 110, 126, 112, + 126, 103, 104, 126, 126, 107, 108, 109, 110, 126, + 112, 126, 87, 92, 93, 126, 91, 126, 126, 94, + 95, 126, 126, 102, 126, 126, 105, 106, 103, 104, + 126, 126, 107, 108, 109, 110, 87, 112, 126, 126, + 91, 120, 126, 94, 95, 126, 126, 126, 126, 126, + 126, 126, 103, 104, 126, 126, 107, 108, 109, 110, + 126, 112, 87, 126, 126, 126, 91, 126, 126, 94, + 95, 126, 126, 87, 126, 126, 126, 91, 103, 104, + 94, 95, 107, 108, 109, 110, 126, 112, 126, 103, + 104, 126, 126, 107, 108, 109, 110, 126, 112, 126, + 87, 92, 93, 126, 91, 126, 126, 94, 95, 126, + 126, 102, 126, 126, 105, 106, 103, 104, 126, 126, + 107, 108, 109, 110, 87, 112, 126, 126, 91, 120, + 126, 94, 95, 126, 126, 126, 126, 126, 126, 126, + 103, 104, 126, 126, 107, 108, 109, 110, 126, 112, + 87, 126, 126, 126, 91, 126, 126, 94, 95, 126, + 126, 87, 126, 126, 126, 91, 103, 104, 94, 95, + 107, 108, 109, 110, 126, 112, 126, 103, 104, 126, + 126, 107, 108, 109, 110, 126, 112, 126, 87, 126, + 126, 126, 91, 126, 126, 94, 95, 126, 126, 126, + 126, 126, 126, 126, 103, 104, 126, 126, 107, 108, + 109, 110, 87, 112, 126, 126, 91, 126, 126, 94, + 95, 126, 126, 126, 126, 126, 126, 126, 103, 104, + 126, 126, 107, 108, 109, 110, 126, 112, 87, 126, + 126, 126, 91, 126, 126, 94, 95, 126, 126, 87, + 126, 126, 126, 91, 103, 104, 94, 95, 107, 108, + 109, 110, 126, 112, 126, 103, 104, 126, 126, 107, + 108, 109, 110, 126, 112, 126, 87, 126, 126, 126, + 91, 126, 126, 94, 95, 126, 126, 126, 126, 126, + 126, 126, 103, 104, 126, 126, 107, 108, 109, 110, + 87, 112, 126, 126, 91, 126, 126, 94, 95, 126, + 126, 126, 126, 126, 126, 126, 103, 104, 126, 126, + 107, 108, 109, 110, 126, 112, 87, 126, 126, 126, + 91, 126, 126, 94, 95, 126, 126, 87, 126, 126, + 126, 91, 103, 104, 94, 95, 107, 108, 109, 110, + 126, 112, 126, 103, 104, 126, 126, 107, 108, 109, + 110, 126, 112, 126, 87, 126, 126, 126, 91, 126, + 126, 94, 95, 126, 126, 126, 126, 126, 126, 126, + 103, 104, 126, 126, 107, 108, 109, 110, 87, 112, + 126, 126, 91, 126, 126, 94, 95, 126, 126, 126, + 126, 126, 126, 126, 103, 104, 126, 126, 107, 108, + 109, 110, 126, 112, 87, 126, 126, 126, 91, 126, + 126, 94, 95, 126, 126, 87, 126, 126, 126, 91, + 103, 104, 94, 95, 107, 108, 109, 110, 126, 112, + 126, 103, 104, 126, 126, 107, 108, 109, 110, 126, + 112, 126, 87, 126, 126, 126, 91, 126, 126, 94, + 95, 126, 126, 126, 126, 126, 126, 126, 103, 104, + 126, 126, 107, 108, 109, 110, 87, 112, 126, 126, + 91, 126, 126, 94, 95, 126, 126, 126, 126, 126, + 126, 126, 103, 104, 126, 126, 107, 108, 109, 110, + 126, 112, 87, 126, 126, 126, 91, 126, 126, 94, + 95, 126, 126, 87, 126, 126, 126, 91, 103, 104, + 94, 95, 107, 108, 109, 110, 126, 112, 126, 103, + 104, 126, 126, 107, 108, 109, 110, 126, 112, 126, + 87, 126, 126, 126, 91, 126, 126, 94, 95, 126, + 126, 126, 126, 126, 126, 126, 103, 104, 126, 126, + 107, 108, 109, 110, 87, 112, 126, 126, 91, 126, + 126, 94, 95, 126, 126, 126, 126, 126, 126, 126, + 103, 104, 126, 126, 107, 108, 109, 110, 126, 112, + 87, 126, 126, 126, 91, 126, 126, 94, 95, 126, + 126, 87, 126, 126, 126, 91, 103, 104, 94, 95, + 107, 108, 109, 110, 126, 112, 126, 103, 104, 126, + 126, 107, 108, 109, 110, 126, 112, 126, 87, 126, + 126, 126, 91, 126, 126, 94, 95, 126, 126, 126, + 126, 126, 126, 126, 103, 104, 126, 126, 107, 108, + 109, 110, 87, 112, 126, 126, 91, 126, 126, 94, + 95, 126, 126, 126, 126, 126, 126, 126, 103, 104, + 126, 126, 107, 108, 109, 110, 126, 112, 87, 126, + 126, 126, 91, 126, 126, 94, 95, 126, 126, 87, + 126, 126, 126, 91, 103, 104, 94, 95, 107, 108, + 109, 110, 126, 112, 126, 103, 104, 126, 126, 107, + 108, 109, 110, 126, 112, 126, 87, 126, 126, 126, + 91, 126, 126, 94, 95, 126, 126, 126, 126, 126, + 126, 126, 103, 104, 126, 126, 107, 108, 109, 110, + 87, 112, 126, 126, 91, 126, 126, 94, 95, 126, + 126, 126, 126, 126, 126, 126, 103, 104, 126, 126, + 107, 108, 109, 110, 126, 112, +); + const YY_SHIFT_USE_DFLT = -38; const YY_SHIFT_MAX = 260; static public $yy_shift_ofst = array( - 1, 1041, 1041, 1215, 983, 1215, 983, 983, 925, 867, - 867, 983, 983, 983, 983, 983, 983, 983, 983, 983, - 983, 983, 1273, 983, 983, 983, 983, 983, 1273, 983, - 1331, 983, 983, 983, 983, 983, 983, 983, 983, 983, - 983, 983, 1157, 983, 1099, 1099, 1389, 1389, 1389, 1389, - 1389, 1389, - 1, 53, 107, 107, 107, 107, 107, 486, - 432, 594, 648, 702, 324, 161, 215, 378, 269, 540, - 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, - 756, 756, 756, 756, 756, 756, 756, 756, 756, 798, - 798, 1107, 109, 19, 245, 1, 870, 1153, 1094, 135, - 877, 877, 135, 799, 245, 285, 245, 421, 355, 986, - 30, 165, 231, 202, 191, 11, 0, 396, 70, 262, - 419, 419, 419, 419, 448, 437, 368, 332, 312, 391, - 423, 419, 421, 419, 419, 298, 423, 298, 720, 391, - 419, 419, 421, 489, 469, 604, 470, 470, 604, 604, - 604, 604, 604, 604, 604, 604, - 38, 124, 95, 298, - 298, 298, 298, 298, 292, 298, 298, 298, 292, 294, - 292, 298, 298, 292, 298, 298, 298, 292, 235, 292, - 298, 298, 294, 298, 292, 298, 298, 298, 298, 630, - 604, 604, 470, 604, 630, 604, 604, 603, 603, 470, - 455, 470, 500, - 38, - 38, - 38, - 38, - 38, 1432, 993, - 54, 108, 154, 25, 216, 211, 325, 291, 434, 388, - 317, 341, 801, - 37, 79, 346, 129, 344, 529, 490, - 535, 546, 544, 480, 538, 581, 557, 455, 143, 17, - 582, 395, 502, 527, 580, 571, 458, 508, 554, 547, - 584, 598, 556, 530, 583, 288, 370, 339, 65, 4, - 392, - ); - const YY_REDUCE_USE_DFLT = - 89; + 1, 1041, 1041, 1215, 983, 1215, 983, 983, 925, 867, + 867, 983, 983, 983, 983, 983, 983, 983, 983, 983, + 983, 983, 1273, 983, 983, 983, 983, 983, 1273, 983, + 1331, 983, 983, 983, 983, 983, 983, 983, 983, 983, + 983, 983, 1157, 983, 1099, 1099, 1389, 1389, 1389, 1389, + 1389, 1389, -1, 53, 107, 107, 107, 107, 107, 486, + 432, 594, 648, 702, 324, 161, 215, 378, 269, 540, + 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, + 756, 756, 756, 756, 756, 756, 756, 756, 756, 798, + 798, 1107, 109, 19, 245, 1, 870, 1153, 1094, 135, + 877, 877, 135, 799, 245, 285, 245, 421, 355, 986, + 30, 165, 231, 202, 191, 11, 0, 396, 70, 262, + 419, 419, 419, 419, 448, 437, 368, 332, 312, 391, + 423, 419, 421, 419, 419, 298, 423, 298, 720, 391, + 419, 419, 421, 489, 469, 604, 470, 470, 604, 604, + 604, 604, 604, 604, 604, 604, -38, 124, 95, 298, + 298, 298, 298, 298, 292, 298, 298, 298, 292, 294, + 292, 298, 298, 292, 298, 298, 298, 292, 235, 292, + 298, 298, 294, 298, 292, 298, 298, 298, 298, 630, + 604, 604, 470, 604, 630, 604, 604, 603, 603, 470, + 455, 470, 500, -38, -38, -38, -38, -38, 1432, 993, + 54, 108, 154, 25, 216, 211, 325, 291, 434, 388, + 317, 341, 801, -37, 79, 346, 129, 344, 529, 490, + 535, 546, 544, 480, 538, 581, 557, 455, 143, 17, + 582, 395, 502, 527, 580, 571, 458, 508, 554, 547, + 584, 598, 556, 530, 583, 288, 370, 339, 65, 4, + 392, +); + const YY_REDUCE_USE_DFLT = -89; const YY_REDUCE_MAX = 207; static public $yy_reduce_ofst = array( - - 29, 1393, 1527, 1551, 1473, 1423, 1500, 1447, 2193, 2167, - 1703, 1665, 1639, 1588, 1727, 1676, 1615, 2055, 1577, 1967, - 1940, 1991, 2017, 2028, 1929, 1903, 1791, 1764, 1815, 1841, - 1879, 1852, 2079, 2204, 2255, 2292, 2343, 2319, 2281, 2231, - 2116, 2105, 2143, 1753, 868, 827, 984, 944, 1040, 1100, - 1216, 1158, 1469, 1279, 1699, 1611, 1469, 1372, 1419, - 88, - - 88, - 88, - 88, - 88, - 88, - 88, - 88, - 88, - 88, - 88, - - 88, - 88, - 88, - 88, - 88, - 88, - 88, - 88, - 88, - 88, - - 88, - 88, - 88, - 88, - 88, - 88, - 88, - 88, - 88, - 88, - - 88, 97, 152, 803, 204, 110, 100, 451, 505, 314, - 397, 289, 207, 3, 260, 834, 343, 206, 127, 401, - - 55, - 55, 329, 126, - 55, 377, 182, 182, 329, 329, - 452, 349, - 36, 453, - 36, - 55, - 36, - 55, 398, 22, - - 36, 481, 318, 399, 561, 477, 560, 422, 182, 82, - 507, 559, 400, 476, 369, - 55, 182, 160, - 55, 187, - - 55, - 55, - 55, - 55, - 55, - 55, - 55, 516, 512, 522, - 522, 522, 522, 522, 511, 522, 522, 522, 511, 513, - 511, 522, 522, 511, 522, 522, 522, 511, 515, 511, - 522, 522, 514, 522, 511, 522, 522, 522, 522, 533, - 532, 532, 354, 532, 533, 532, 532, 552, 531, 354, - 380, 354, 429, 442, 407, 441, 420, 250, - ); + -29, 1393, 1527, 1551, 1473, 1423, 1500, 1447, 2193, 2167, + 1703, 1665, 1639, 1588, 1727, 1676, 1615, 2055, 1577, 1967, + 1940, 1991, 2017, 2028, 1929, 1903, 1791, 1764, 1815, 1841, + 1879, 1852, 2079, 2204, 2255, 2292, 2343, 2319, 2281, 2231, + 2116, 2105, 2143, 1753, 868, 827, 984, 944, 1040, 1100, + 1216, 1158, 1469, 1279, 1699, 1611, 1469, 1372, 1419, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, + -88, 97, 152, 803, 204, 110, 100, 451, 505, 314, + 397, 289, 207, 3, 260, 834, 343, 206, 127, 401, + -55, -55, 329, 126, -55, 377, 182, 182, 329, 329, + 452, 349, -36, 453, -36, -55, -36, -55, 398, 22, + -36, 481, 318, 399, 561, 477, 560, 422, 182, 82, + 507, 559, 400, 476, 369, -55, 182, 160, -55, 187, + -55, -55, -55, -55, -55, -55, -55, 516, 512, 522, + 522, 522, 522, 522, 511, 522, 522, 522, 511, 513, + 511, 522, 522, 511, 522, 522, 522, 511, 515, 511, + 522, 522, 514, 522, 511, 522, 522, 522, 522, 533, + 532, 532, 354, 532, 533, 532, 532, 552, 531, 354, + 380, 354, 429, 442, 407, 441, 420, 250, +); static public $yyExpectedTokens = array( - array(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 23, 24, 29, 33, 35,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 67, 80,), - array(18, 19, 20, 23, 24, 29, 33, 34, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 34, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 80,), - array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 80,), - array(1, 3, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 28, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 31, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 3, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 2, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 25, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 3, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 3, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 3, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 81,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,), - array(1, 3, 22, 30, 36, 39, 62,), - array(1, 3, 30, 36,), - array(19, 20, 63, 65,), - array(1, 30, 36,), - array(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 23, 24, 29, 33, 35,), - array(11, 18, 23, 24, 29, 33, 35, 80, 81, 82,), - array(18, 20, 30, 32, 36,), - array(18, 20, 30, 32, 36,), - array(1, 3, 30, 36,), - array(18, 20, 30, 36,), - array(18, 20, 30, 36,), - array(1, 3, 30, 36,), - array(22, 60, 66,), - array(1, 30, 36,), - array(19, 20, 65,), - array(1, 30, 36,), - array(19, 39,), - array(1, 2,), - array(11, 18, 23, 24, 29, 33, 35, 80, 81, 82,), - array(1, 3, 30, 31, 36,), - array(1, 3, 30, 36,), - array(18, 20, 21, 64,), - array(18, 20, 21, 26,), - array(1, 3, 30, 36,), - array(15, 16, 17,), - array(21, 22, 62,), - array(21, 22, 62,), - array(18, 20, 21,), - array(18, 20, 64,), - array(18, 20,), - array(18, 20,), - array(18, 20,), - array(18, 20,), - array(18, 20,), - array(1, 32,), - array(18, 20,), - array(1, 3,), - array(18, 20,), - array(19, 20,), - array(18, 20,), - array(18, 20,), - array(19, 39,), - array(18, 20,), - array(18, 20,), - array(30, 36,), - array(18, 20,), - array(30, 36,), - array(22, 62,), - array(19, 20,), - array(18, 20,), - array(18, 20,), - array(19, 39,), - array(30, 36,), - array(1, 22,), - array(1,), - array(22,), - array(22,), - array(1,), - array(1,), - array(1,), - array(1,), - array(1,), - array(1,), - array(1,), - array(1,), - array(), - array(18, 20, 64,), - array(18, 19, 20,), - array(30, 36,), - array(30, 36,), - array(30, 36,), - array(30, 36,), - array(30, 36,), - array(60, 66,), - array(30, 36,), - array(30, 36,), - array(30, 36,), - array(60, 66,), - array(60, 66,), - array(60, 66,), - array(30, 36,), - array(30, 36,), - array(60, 66,), - array(30, 36,), - array(30, 36,), - array(30, 36,), - array(60, 66,), - array(18, 39,), - array(60, 66,), - array(30, 36,), - array(30, 36,), - array(60, 66,), - array(30, 36,), - array(60, 66,), - array(30, 36,), - array(30, 36,), - array(30, 36,), - array(30, 36,), - array(2,), - array(1,), - array(1,), - array(22,), - array(1,), - array(2,), - array(1,), - array(1,), - array(30,), - array(30,), - array(22,), - array(39,), - array(22,), - array(16,), - array(), - array(), - array(), - array(), - array(), - array(3, 25, 27, 28, 30, 31, 36, 38, 39, 40, 62, 67, 81,), - array(3, 21, 30, 36, 39, 62,), - array(26, 39, 55, 62, 81,), - array(3, 26, 39, 55, 62,), - array(18, 19, 20, 37,), - array(39, 60, 62, 67,), - array(26, 39, 55, 62,), - array(32, 39, 62,), - array(26, 39, 62,), - array(38, 40,), - array(25, 38,), - array(2, 21,), - array(38, 67,), - array(20, 64,), - array(21, 60,), - array(38, 40,), - array(39, 62,), - array(39, 62,), - array(38, 40,), - array(39, 62,), - array(19,), - array(60,), - array(37,), - array(3,), - array(27,), - array(65,), - array(37,), - array(20,), - array(20,), - array(39,), - array(3,), - array(3,), - array(20,), - array(20,), - array(20,), - array(19,), - array(19,), - array(2,), - array(65,), - array(39,), - array(20,), - array(56,), - array(20,), - array(2,), - array(20,), - array(67,), - array(40,), - array(20,), - array(19,), - array(20,), - array(21,), - array(19,), - array(20,), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - array(), - ); + array(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 23, 24, 29, 33, 35, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 67, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 34, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 34, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 66, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 80, ), + array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 63, 65, 80, ), + array(1, 3, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 28, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 31, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 3, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 2, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 25, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 3, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 3, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 3, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 81, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, ), + array(1, 3, 22, 30, 36, 39, 62, ), + array(1, 3, 30, 36, ), + array(19, 20, 63, 65, ), + array(1, 30, 36, ), + array(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 23, 24, 29, 33, 35, ), + array(11, 18, 23, 24, 29, 33, 35, 80, 81, 82, ), + array(18, 20, 30, 32, 36, ), + array(18, 20, 30, 32, 36, ), + array(1, 3, 30, 36, ), + array(18, 20, 30, 36, ), + array(18, 20, 30, 36, ), + array(1, 3, 30, 36, ), + array(22, 60, 66, ), + array(1, 30, 36, ), + array(19, 20, 65, ), + array(1, 30, 36, ), + array(19, 39, ), + array(1, 2, ), + array(11, 18, 23, 24, 29, 33, 35, 80, 81, 82, ), + array(1, 3, 30, 31, 36, ), + array(1, 3, 30, 36, ), + array(18, 20, 21, 64, ), + array(18, 20, 21, 26, ), + array(1, 3, 30, 36, ), + array(15, 16, 17, ), + array(21, 22, 62, ), + array(21, 22, 62, ), + array(18, 20, 21, ), + array(18, 20, 64, ), + array(18, 20, ), + array(18, 20, ), + array(18, 20, ), + array(18, 20, ), + array(18, 20, ), + array(1, 32, ), + array(18, 20, ), + array(1, 3, ), + array(18, 20, ), + array(19, 20, ), + array(18, 20, ), + array(18, 20, ), + array(19, 39, ), + array(18, 20, ), + array(18, 20, ), + array(30, 36, ), + array(18, 20, ), + array(30, 36, ), + array(22, 62, ), + array(19, 20, ), + array(18, 20, ), + array(18, 20, ), + array(19, 39, ), + array(30, 36, ), + array(1, 22, ), + array(1, ), + array(22, ), + array(22, ), + array(1, ), + array(1, ), + array(1, ), + array(1, ), + array(1, ), + array(1, ), + array(1, ), + array(1, ), + array(), + array(18, 20, 64, ), + array(18, 19, 20, ), + array(30, 36, ), + array(30, 36, ), + array(30, 36, ), + array(30, 36, ), + array(30, 36, ), + array(60, 66, ), + array(30, 36, ), + array(30, 36, ), + array(30, 36, ), + array(60, 66, ), + array(60, 66, ), + array(60, 66, ), + array(30, 36, ), + array(30, 36, ), + array(60, 66, ), + array(30, 36, ), + array(30, 36, ), + array(30, 36, ), + array(60, 66, ), + array(18, 39, ), + array(60, 66, ), + array(30, 36, ), + array(30, 36, ), + array(60, 66, ), + array(30, 36, ), + array(60, 66, ), + array(30, 36, ), + array(30, 36, ), + array(30, 36, ), + array(30, 36, ), + array(2, ), + array(1, ), + array(1, ), + array(22, ), + array(1, ), + array(2, ), + array(1, ), + array(1, ), + array(30, ), + array(30, ), + array(22, ), + array(39, ), + array(22, ), + array(16, ), + array(), + array(), + array(), + array(), + array(), + array(3, 25, 27, 28, 30, 31, 36, 38, 39, 40, 62, 67, 81, ), + array(3, 21, 30, 36, 39, 62, ), + array(26, 39, 55, 62, 81, ), + array(3, 26, 39, 55, 62, ), + array(18, 19, 20, 37, ), + array(39, 60, 62, 67, ), + array(26, 39, 55, 62, ), + array(32, 39, 62, ), + array(26, 39, 62, ), + array(38, 40, ), + array(25, 38, ), + array(2, 21, ), + array(38, 67, ), + array(20, 64, ), + array(21, 60, ), + array(38, 40, ), + array(39, 62, ), + array(39, 62, ), + array(38, 40, ), + array(39, 62, ), + array(19, ), + array(60, ), + array(37, ), + array(3, ), + array(27, ), + array(65, ), + array(37, ), + array(20, ), + array(20, ), + array(39, ), + array(3, ), + array(3, ), + array(20, ), + array(20, ), + array(20, ), + array(19, ), + array(19, ), + array(2, ), + array(65, ), + array(39, ), + array(20, ), + array(56, ), + array(20, ), + array(2, ), + array(20, ), + array(67, ), + array(40, ), + array(20, ), + array(19, ), + array(20, ), + array(21, ), + array(19, ), + array(20, ), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), + array(), +); static public $yy_default = array( - 366, 549, 566, 566, 520, 566, 520, 520, 566, 566, - 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, - 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, - 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, - 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, - 566, 566, 566, 423, 400, 423, 423, 392, 423, 428, - 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, - 456, 433, 519, 457, 425, 551, 447, 453, 518, 405, - 452, 444, 448, 449, 428, 430, 550, 552, 434, 459, - 460, 471, 436, 566, 423, 363, 566, 423, 423, 443, - 423, 423, 478, 532, 423, 566, 423, 566, 414, 566, - 436, 436, 493, 566, 436, 566, 484, 484, 493, 493, - 566, 493, 566, 566, 566, 436, 566, 436, 566, 566, - 566, 566, 566, 566, 566, 402, 566, 423, 484, 566, - 566, 566, 566, 423, 417, 436, 484, 529, 439, 419, - 462, 463, 464, 441, 446, 440, 527, 494, 566, 409, - 395, 403, 394, 404, 511, 388, 398, 399, 490, 489, - 488, 412, 397, 512, 407, 387, 390, 510, 493, 491, - 413, 410, 487, 389, 513, 408, 393, 411, 401, 521, - 415, 418, 533, 420, 522, 478, 443, 565, 565, 507, - 493, 530, 383, 526, 493, 526, 526, 493, 438, 471, - 461, 461, 566, 471, 461, 471, 461, 566, 566, 505, - 566, 566, 467, 566, 471, 566, 566, 479, 566, 467, - 469, 566, 431, 566, 566, 566, 566, 505, 566, 566, - 566, 566, 566, 566, 566, 505, 566, 531, 566, 473, - 566, 505, 566, 566, 566, 566, 566, 566, 566, 566, - 566, 516, 501, 515, 506, 364, 528, 498, 424, 514, - 473, 502, 500, 564, 406, 435, 499, 432, 534, 465, - 466, 468, 470, 524, 523, 504, 505, 525, 472, 437, - 496, 497, 474, 475, 503, 495, 438, 485, 492, 422, - 421, 371, 372, 373, 374, 370, 369, 365, 367, 368, - 375, 376, 382, 384, 385, 381, 380, 377, 378, 379, - 476, 477, 416, 560, 553, 554, 508, 561, 481, 482, - 483, 555, 558, 546, 548, 547, 556, 563, 557, 559, - 562, 458, 442, 451, 454, 455, 535, 450, 509, 480, - 445, 486, 536, 537, 543, 544, 545, 542, 541, 538, - 539, 540, 517, - ); + 366, 549, 566, 566, 520, 566, 520, 520, 566, 566, + 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, + 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, + 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, + 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, + 566, 566, 566, 423, 400, 423, 423, 392, 423, 428, + 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, + 456, 433, 519, 457, 425, 551, 447, 453, 518, 405, + 452, 444, 448, 449, 428, 430, 550, 552, 434, 459, + 460, 471, 436, 566, 423, 363, 566, 423, 423, 443, + 423, 423, 478, 532, 423, 566, 423, 566, 414, 566, + 436, 436, 493, 566, 436, 566, 484, 484, 493, 493, + 566, 493, 566, 566, 566, 436, 566, 436, 566, 566, + 566, 566, 566, 566, 566, 402, 566, 423, 484, 566, + 566, 566, 566, 423, 417, 436, 484, 529, 439, 419, + 462, 463, 464, 441, 446, 440, 527, 494, 566, 409, + 395, 403, 394, 404, 511, 388, 398, 399, 490, 489, + 488, 412, 397, 512, 407, 387, 390, 510, 493, 491, + 413, 410, 487, 389, 513, 408, 393, 411, 401, 521, + 415, 418, 533, 420, 522, 478, 443, 565, 565, 507, + 493, 530, 383, 526, 493, 526, 526, 493, 438, 471, + 461, 461, 566, 471, 461, 471, 461, 566, 566, 505, + 566, 566, 467, 566, 471, 566, 566, 479, 566, 467, + 469, 566, 431, 566, 566, 566, 566, 505, 566, 566, + 566, 566, 566, 566, 566, 505, 566, 531, 566, 473, + 566, 505, 566, 566, 566, 566, 566, 566, 566, 566, + 566, 516, 501, 515, 506, 364, 528, 498, 424, 514, + 473, 502, 500, 564, 406, 435, 499, 432, 534, 465, + 466, 468, 470, 524, 523, 504, 505, 525, 472, 437, + 496, 497, 474, 475, 503, 495, 438, 485, 492, 422, + 421, 371, 372, 373, 374, 370, 369, 365, 367, 368, + 375, 376, 382, 384, 385, 381, 380, 377, 378, 379, + 476, 477, 416, 560, 553, 554, 508, 561, 481, 482, + 483, 555, 558, 546, 548, 547, 556, 563, 557, 559, + 562, 458, 442, 451, 454, 455, 535, 450, 509, 480, + 445, 486, 536, 537, 543, 544, 545, 542, 541, 538, + 539, 540, 517, +); const YYNOCODE = 127; const YYSTACKDEPTH = 500; const YYNSTATE = 363; @@ -1308,8 +1307,8 @@ class Smarty_Internal_Templateparser const YYERRORSYMBOL = 83; const YYERRSYMDT = 'yy0'; const YYFALLBACK = 0; - public static $yyFallback = array(); - + public static $yyFallback = array( + ); public function Trace($TraceFILE, $zTracePrompt) { if (!$TraceFILE) { @@ -1334,244 +1333,244 @@ class Smarty_Internal_Templateparser public $yystack = array(); /* The parser's stack */ public $yyTokenName = array( - '$', 'VERT', 'COLON', 'RDEL', - 'COMMENT', 'PHPSTARTTAG', 'PHPENDTAG', 'PHPENDSCRIPT', - 'ASPSTARTTAG', 'ASPENDTAG', 'XMLTAG', 'TEXT', - 'STRIPON', 'STRIPOFF', 'BLOCKSOURCE', 'LITERALSTART', - 'LITERALEND', 'LITERAL', 'LDEL', 'DOLLAR', - 'ID', 'EQUAL', 'PTR', 'LDELIF', - 'LDELFOR', 'SEMICOLON', 'INCDEC', 'TO', - 'STEP', 'LDELFOREACH', 'SPACE', 'AS', - 'APTR', 'LDELSETFILTER', 'SMARTYBLOCKCHILDPARENT', 'LDELSLASH', - 'ATTR', 'INTEGER', 'COMMA', 'OPENP', - 'CLOSEP', 'MATH', 'UNIMATH', 'ANDSYM', - 'ISIN', 'ISDIVBY', 'ISNOTDIVBY', 'ISEVEN', - 'ISNOTEVEN', 'ISEVENBY', 'ISNOTEVENBY', 'ISODD', - 'ISNOTODD', 'ISODDBY', 'ISNOTODDBY', 'INSTANCEOF', - 'QMARK', 'NOT', 'TYPECAST', 'HEX', - 'DOT', 'SINGLEQUOTESTRING', 'DOUBLECOLON', 'NAMESPACE', - 'AT', 'HATCH', 'OPENB', 'CLOSEB', - 'EQUALS', 'NOTEQUALS', 'GREATERTHAN', 'LESSTHAN', - 'GREATEREQUAL', 'LESSEQUAL', 'IDENTITY', 'NONEIDENTITY', - 'MOD', 'LAND', 'LOR', 'LXOR', - 'QUOTE', 'BACKTICK', 'DOLLARID', 'error', - 'start', 'template', 'template_element', 'smartytag', - 'literal', 'literal_elements', 'literal_element', 'value', - 'modifierlist', 'attributes', 'expr', 'varindexed', - 'statement', 'statements', 'optspace', 'varvar', - 'foraction', 'modparameters', 'attribute', 'ternary', - 'array', 'ifcond', 'lop', 'variable', - 'ns1', 'function', 'doublequoted_with_quotes', 'static_class_access', - 'object', 'arrayindex', 'indexdef', 'varvarele', - 'objectchain', 'objectelement', 'method', 'params', - 'modifier', 'modparameter', 'arrayelements', 'arrayelement', - 'doublequoted', 'doublequotedcontent', + '$', 'VERT', 'COLON', 'RDEL', + 'COMMENT', 'PHPSTARTTAG', 'PHPENDTAG', 'PHPENDSCRIPT', + 'ASPSTARTTAG', 'ASPENDTAG', 'XMLTAG', 'TEXT', + 'STRIPON', 'STRIPOFF', 'BLOCKSOURCE', 'LITERALSTART', + 'LITERALEND', 'LITERAL', 'LDEL', 'DOLLAR', + 'ID', 'EQUAL', 'PTR', 'LDELIF', + 'LDELFOR', 'SEMICOLON', 'INCDEC', 'TO', + 'STEP', 'LDELFOREACH', 'SPACE', 'AS', + 'APTR', 'LDELSETFILTER', 'SMARTYBLOCKCHILDPARENT', 'LDELSLASH', + 'ATTR', 'INTEGER', 'COMMA', 'OPENP', + 'CLOSEP', 'MATH', 'UNIMATH', 'ANDSYM', + 'ISIN', 'ISDIVBY', 'ISNOTDIVBY', 'ISEVEN', + 'ISNOTEVEN', 'ISEVENBY', 'ISNOTEVENBY', 'ISODD', + 'ISNOTODD', 'ISODDBY', 'ISNOTODDBY', 'INSTANCEOF', + 'QMARK', 'NOT', 'TYPECAST', 'HEX', + 'DOT', 'SINGLEQUOTESTRING', 'DOUBLECOLON', 'NAMESPACE', + 'AT', 'HATCH', 'OPENB', 'CLOSEB', + 'EQUALS', 'NOTEQUALS', 'GREATERTHAN', 'LESSTHAN', + 'GREATEREQUAL', 'LESSEQUAL', 'IDENTITY', 'NONEIDENTITY', + 'MOD', 'LAND', 'LOR', 'LXOR', + 'QUOTE', 'BACKTICK', 'DOLLARID', 'error', + 'start', 'template', 'template_element', 'smartytag', + 'literal', 'literal_elements', 'literal_element', 'value', + 'modifierlist', 'attributes', 'expr', 'varindexed', + 'statement', 'statements', 'optspace', 'varvar', + 'foraction', 'modparameters', 'attribute', 'ternary', + 'array', 'ifcond', 'lop', 'variable', + 'ns1', 'function', 'doublequoted_with_quotes', 'static_class_access', + 'object', 'arrayindex', 'indexdef', 'varvarele', + 'objectchain', 'objectelement', 'method', 'params', + 'modifier', 'modparameter', 'arrayelements', 'arrayelement', + 'doublequoted', 'doublequotedcontent', ); public static $yyRuleName = array( - "start ::= template", - "template ::= template_element", - "template ::= template template_element", - "template ::=", - "template_element ::= smartytag RDEL", - "template_element ::= COMMENT", - "template_element ::= literal", - "template_element ::= PHPSTARTTAG", - "template_element ::= PHPENDTAG", - "template_element ::= PHPENDSCRIPT", - "template_element ::= ASPSTARTTAG", - "template_element ::= ASPENDTAG", - "template_element ::= XMLTAG", - "template_element ::= TEXT", - "template_element ::= STRIPON", - "template_element ::= STRIPOFF", - "template_element ::= BLOCKSOURCE", - "literal ::= LITERALSTART LITERALEND", - "literal ::= LITERALSTART literal_elements LITERALEND", - "literal_elements ::= literal_elements literal_element", - "literal_elements ::=", - "literal_element ::= literal", - "literal_element ::= LITERAL", - "smartytag ::= LDEL value", - "smartytag ::= LDEL value modifierlist attributes", - "smartytag ::= LDEL value attributes", - "smartytag ::= LDEL expr modifierlist attributes", - "smartytag ::= LDEL expr attributes", - "smartytag ::= LDEL DOLLAR ID EQUAL value", - "smartytag ::= LDEL DOLLAR ID EQUAL expr", - "smartytag ::= LDEL DOLLAR ID EQUAL expr attributes", - "smartytag ::= LDEL varindexed EQUAL expr attributes", - "smartytag ::= LDEL ID attributes", - "smartytag ::= LDEL ID", - "smartytag ::= LDEL ID modifierlist attributes", - "smartytag ::= LDEL ID PTR ID attributes", - "smartytag ::= LDEL ID PTR ID modifierlist attributes", - "smartytag ::= LDELIF expr", - "smartytag ::= LDELIF expr attributes", - "smartytag ::= LDELIF statement", - "smartytag ::= LDELIF statement attributes", - "smartytag ::= LDELFOR statements SEMICOLON optspace expr SEMICOLON optspace DOLLAR varvar foraction attributes", - "foraction ::= EQUAL expr", - "foraction ::= INCDEC", - "smartytag ::= LDELFOR statement TO expr attributes", - "smartytag ::= LDELFOR statement TO expr STEP expr attributes", - "smartytag ::= LDELFOREACH attributes", - "smartytag ::= LDELFOREACH SPACE value AS DOLLAR varvar attributes", - "smartytag ::= LDELFOREACH SPACE value AS DOLLAR varvar APTR DOLLAR varvar attributes", - "smartytag ::= LDELFOREACH SPACE expr AS DOLLAR varvar attributes", - "smartytag ::= LDELFOREACH SPACE expr AS DOLLAR varvar APTR DOLLAR varvar attributes", - "smartytag ::= LDELSETFILTER ID modparameters", - "smartytag ::= LDELSETFILTER ID modparameters modifierlist", - "smartytag ::= LDEL SMARTYBLOCKCHILDPARENT", - "smartytag ::= LDELSLASH ID", - "smartytag ::= LDELSLASH ID modifierlist", - "smartytag ::= LDELSLASH ID PTR ID", - "smartytag ::= LDELSLASH ID PTR ID modifierlist", - "attributes ::= attributes attribute", - "attributes ::= attribute", - "attributes ::=", - "attribute ::= SPACE ID EQUAL ID", - "attribute ::= ATTR expr", - "attribute ::= ATTR value", - "attribute ::= SPACE ID", - "attribute ::= SPACE expr", - "attribute ::= SPACE value", - "attribute ::= SPACE INTEGER EQUAL expr", - "statements ::= statement", - "statements ::= statements COMMA statement", - "statement ::= DOLLAR varvar EQUAL expr", - "statement ::= varindexed EQUAL expr", - "statement ::= OPENP statement CLOSEP", - "expr ::= value", - "expr ::= ternary", - "expr ::= DOLLAR ID COLON ID", - "expr ::= expr MATH value", - "expr ::= expr UNIMATH value", - "expr ::= expr ANDSYM value", - "expr ::= array", - "expr ::= expr modifierlist", - "expr ::= expr ifcond expr", - "expr ::= expr ISIN array", - "expr ::= expr ISIN value", - "expr ::= expr lop expr", - "expr ::= expr ISDIVBY expr", - "expr ::= expr ISNOTDIVBY expr", - "expr ::= expr ISEVEN", - "expr ::= expr ISNOTEVEN", - "expr ::= expr ISEVENBY expr", - "expr ::= expr ISNOTEVENBY expr", - "expr ::= expr ISODD", - "expr ::= expr ISNOTODD", - "expr ::= expr ISODDBY expr", - "expr ::= expr ISNOTODDBY expr", - "expr ::= variable INSTANCEOF ns1", - "ternary ::= OPENP expr CLOSEP QMARK DOLLAR ID COLON expr", - "ternary ::= OPENP expr CLOSEP QMARK expr COLON expr", - "value ::= variable", - "value ::= UNIMATH value", - "value ::= NOT value", - "value ::= TYPECAST value", - "value ::= variable INCDEC", - "value ::= HEX", - "value ::= INTEGER", - "value ::= INTEGER DOT INTEGER", - "value ::= INTEGER DOT", - "value ::= DOT INTEGER", - "value ::= ID", - "value ::= function", - "value ::= OPENP expr CLOSEP", - "value ::= SINGLEQUOTESTRING", - "value ::= doublequoted_with_quotes", - "value ::= varindexed DOUBLECOLON static_class_access", - "value ::= smartytag RDEL", - "value ::= value modifierlist", - "value ::= NAMESPACE", - "value ::= ns1 DOUBLECOLON static_class_access", - "ns1 ::= ID", - "ns1 ::= NAMESPACE", - "ns1 ::= variable", - "variable ::= varindexed", - "variable ::= DOLLAR varvar AT ID", - "variable ::= object", - "variable ::= HATCH ID HATCH", - "variable ::= HATCH ID HATCH arrayindex", - "variable ::= HATCH variable HATCH", - "variable ::= HATCH variable HATCH arrayindex", - "varindexed ::= DOLLAR varvar arrayindex", - "arrayindex ::= arrayindex indexdef", - "arrayindex ::=", - "indexdef ::= DOT DOLLAR varvar", - "indexdef ::= DOT DOLLAR varvar AT ID", - "indexdef ::= DOT ID", - "indexdef ::= DOT INTEGER", - "indexdef ::= DOT LDEL expr RDEL", - "indexdef ::= OPENB ID CLOSEB", - "indexdef ::= OPENB ID DOT ID CLOSEB", - "indexdef ::= OPENB expr CLOSEB", - "indexdef ::= OPENB CLOSEB", - "varvar ::= varvarele", - "varvar ::= varvar varvarele", - "varvarele ::= ID", - "varvarele ::= LDEL expr RDEL", - "object ::= varindexed objectchain", - "objectchain ::= objectelement", - "objectchain ::= objectchain objectelement", - "objectelement ::= PTR ID arrayindex", - "objectelement ::= PTR DOLLAR varvar arrayindex", - "objectelement ::= PTR LDEL expr RDEL arrayindex", - "objectelement ::= PTR ID LDEL expr RDEL arrayindex", - "objectelement ::= PTR method", - "function ::= ns1 OPENP params CLOSEP", - "method ::= ID OPENP params CLOSEP", - "method ::= DOLLAR ID OPENP params CLOSEP", - "params ::= params COMMA expr", - "params ::= expr", - "params ::=", - "modifierlist ::= modifierlist modifier modparameters", - "modifierlist ::= modifier modparameters", - "modifier ::= VERT AT ID", - "modifier ::= VERT ID", - "modparameters ::= modparameters modparameter", - "modparameters ::=", - "modparameter ::= COLON value", - "modparameter ::= COLON array", - "static_class_access ::= method", - "static_class_access ::= method objectchain", - "static_class_access ::= ID", - "static_class_access ::= DOLLAR ID arrayindex", - "static_class_access ::= DOLLAR ID arrayindex objectchain", - "ifcond ::= EQUALS", - "ifcond ::= NOTEQUALS", - "ifcond ::= GREATERTHAN", - "ifcond ::= LESSTHAN", - "ifcond ::= GREATEREQUAL", - "ifcond ::= LESSEQUAL", - "ifcond ::= IDENTITY", - "ifcond ::= NONEIDENTITY", - "ifcond ::= MOD", - "lop ::= LAND", - "lop ::= LOR", - "lop ::= LXOR", - "array ::= OPENB arrayelements CLOSEB", - "arrayelements ::= arrayelement", - "arrayelements ::= arrayelements COMMA arrayelement", - "arrayelements ::=", - "arrayelement ::= value APTR expr", - "arrayelement ::= ID APTR expr", - "arrayelement ::= expr", - "doublequoted_with_quotes ::= QUOTE QUOTE", - "doublequoted_with_quotes ::= QUOTE doublequoted QUOTE", - "doublequoted ::= doublequoted doublequotedcontent", - "doublequoted ::= doublequotedcontent", - "doublequotedcontent ::= BACKTICK variable BACKTICK", - "doublequotedcontent ::= BACKTICK expr BACKTICK", - "doublequotedcontent ::= DOLLARID", - "doublequotedcontent ::= LDEL variable RDEL", - "doublequotedcontent ::= LDEL expr RDEL", - "doublequotedcontent ::= smartytag RDEL", - "doublequotedcontent ::= TEXT", - "optspace ::= SPACE", - "optspace ::=", + "start ::= template", + "template ::= template_element", + "template ::= template template_element", + "template ::=", + "template_element ::= smartytag RDEL", + "template_element ::= COMMENT", + "template_element ::= literal", + "template_element ::= PHPSTARTTAG", + "template_element ::= PHPENDTAG", + "template_element ::= PHPENDSCRIPT", + "template_element ::= ASPSTARTTAG", + "template_element ::= ASPENDTAG", + "template_element ::= XMLTAG", + "template_element ::= TEXT", + "template_element ::= STRIPON", + "template_element ::= STRIPOFF", + "template_element ::= BLOCKSOURCE", + "literal ::= LITERALSTART LITERALEND", + "literal ::= LITERALSTART literal_elements LITERALEND", + "literal_elements ::= literal_elements literal_element", + "literal_elements ::=", + "literal_element ::= literal", + "literal_element ::= LITERAL", + "smartytag ::= LDEL value", + "smartytag ::= LDEL value modifierlist attributes", + "smartytag ::= LDEL value attributes", + "smartytag ::= LDEL expr modifierlist attributes", + "smartytag ::= LDEL expr attributes", + "smartytag ::= LDEL DOLLAR ID EQUAL value", + "smartytag ::= LDEL DOLLAR ID EQUAL expr", + "smartytag ::= LDEL DOLLAR ID EQUAL expr attributes", + "smartytag ::= LDEL varindexed EQUAL expr attributes", + "smartytag ::= LDEL ID attributes", + "smartytag ::= LDEL ID", + "smartytag ::= LDEL ID modifierlist attributes", + "smartytag ::= LDEL ID PTR ID attributes", + "smartytag ::= LDEL ID PTR ID modifierlist attributes", + "smartytag ::= LDELIF expr", + "smartytag ::= LDELIF expr attributes", + "smartytag ::= LDELIF statement", + "smartytag ::= LDELIF statement attributes", + "smartytag ::= LDELFOR statements SEMICOLON optspace expr SEMICOLON optspace DOLLAR varvar foraction attributes", + "foraction ::= EQUAL expr", + "foraction ::= INCDEC", + "smartytag ::= LDELFOR statement TO expr attributes", + "smartytag ::= LDELFOR statement TO expr STEP expr attributes", + "smartytag ::= LDELFOREACH attributes", + "smartytag ::= LDELFOREACH SPACE value AS DOLLAR varvar attributes", + "smartytag ::= LDELFOREACH SPACE value AS DOLLAR varvar APTR DOLLAR varvar attributes", + "smartytag ::= LDELFOREACH SPACE expr AS DOLLAR varvar attributes", + "smartytag ::= LDELFOREACH SPACE expr AS DOLLAR varvar APTR DOLLAR varvar attributes", + "smartytag ::= LDELSETFILTER ID modparameters", + "smartytag ::= LDELSETFILTER ID modparameters modifierlist", + "smartytag ::= LDEL SMARTYBLOCKCHILDPARENT", + "smartytag ::= LDELSLASH ID", + "smartytag ::= LDELSLASH ID modifierlist", + "smartytag ::= LDELSLASH ID PTR ID", + "smartytag ::= LDELSLASH ID PTR ID modifierlist", + "attributes ::= attributes attribute", + "attributes ::= attribute", + "attributes ::=", + "attribute ::= SPACE ID EQUAL ID", + "attribute ::= ATTR expr", + "attribute ::= ATTR value", + "attribute ::= SPACE ID", + "attribute ::= SPACE expr", + "attribute ::= SPACE value", + "attribute ::= SPACE INTEGER EQUAL expr", + "statements ::= statement", + "statements ::= statements COMMA statement", + "statement ::= DOLLAR varvar EQUAL expr", + "statement ::= varindexed EQUAL expr", + "statement ::= OPENP statement CLOSEP", + "expr ::= value", + "expr ::= ternary", + "expr ::= DOLLAR ID COLON ID", + "expr ::= expr MATH value", + "expr ::= expr UNIMATH value", + "expr ::= expr ANDSYM value", + "expr ::= array", + "expr ::= expr modifierlist", + "expr ::= expr ifcond expr", + "expr ::= expr ISIN array", + "expr ::= expr ISIN value", + "expr ::= expr lop expr", + "expr ::= expr ISDIVBY expr", + "expr ::= expr ISNOTDIVBY expr", + "expr ::= expr ISEVEN", + "expr ::= expr ISNOTEVEN", + "expr ::= expr ISEVENBY expr", + "expr ::= expr ISNOTEVENBY expr", + "expr ::= expr ISODD", + "expr ::= expr ISNOTODD", + "expr ::= expr ISODDBY expr", + "expr ::= expr ISNOTODDBY expr", + "expr ::= variable INSTANCEOF ns1", + "ternary ::= OPENP expr CLOSEP QMARK DOLLAR ID COLON expr", + "ternary ::= OPENP expr CLOSEP QMARK expr COLON expr", + "value ::= variable", + "value ::= UNIMATH value", + "value ::= NOT value", + "value ::= TYPECAST value", + "value ::= variable INCDEC", + "value ::= HEX", + "value ::= INTEGER", + "value ::= INTEGER DOT INTEGER", + "value ::= INTEGER DOT", + "value ::= DOT INTEGER", + "value ::= ID", + "value ::= function", + "value ::= OPENP expr CLOSEP", + "value ::= SINGLEQUOTESTRING", + "value ::= doublequoted_with_quotes", + "value ::= varindexed DOUBLECOLON static_class_access", + "value ::= smartytag RDEL", + "value ::= value modifierlist", + "value ::= NAMESPACE", + "value ::= ns1 DOUBLECOLON static_class_access", + "ns1 ::= ID", + "ns1 ::= NAMESPACE", + "ns1 ::= variable", + "variable ::= varindexed", + "variable ::= DOLLAR varvar AT ID", + "variable ::= object", + "variable ::= HATCH ID HATCH", + "variable ::= HATCH ID HATCH arrayindex", + "variable ::= HATCH variable HATCH", + "variable ::= HATCH variable HATCH arrayindex", + "varindexed ::= DOLLAR varvar arrayindex", + "arrayindex ::= arrayindex indexdef", + "arrayindex ::=", + "indexdef ::= DOT DOLLAR varvar", + "indexdef ::= DOT DOLLAR varvar AT ID", + "indexdef ::= DOT ID", + "indexdef ::= DOT INTEGER", + "indexdef ::= DOT LDEL expr RDEL", + "indexdef ::= OPENB ID CLOSEB", + "indexdef ::= OPENB ID DOT ID CLOSEB", + "indexdef ::= OPENB expr CLOSEB", + "indexdef ::= OPENB CLOSEB", + "varvar ::= varvarele", + "varvar ::= varvar varvarele", + "varvarele ::= ID", + "varvarele ::= LDEL expr RDEL", + "object ::= varindexed objectchain", + "objectchain ::= objectelement", + "objectchain ::= objectchain objectelement", + "objectelement ::= PTR ID arrayindex", + "objectelement ::= PTR DOLLAR varvar arrayindex", + "objectelement ::= PTR LDEL expr RDEL arrayindex", + "objectelement ::= PTR ID LDEL expr RDEL arrayindex", + "objectelement ::= PTR method", + "function ::= ns1 OPENP params CLOSEP", + "method ::= ID OPENP params CLOSEP", + "method ::= DOLLAR ID OPENP params CLOSEP", + "params ::= params COMMA expr", + "params ::= expr", + "params ::=", + "modifierlist ::= modifierlist modifier modparameters", + "modifierlist ::= modifier modparameters", + "modifier ::= VERT AT ID", + "modifier ::= VERT ID", + "modparameters ::= modparameters modparameter", + "modparameters ::=", + "modparameter ::= COLON value", + "modparameter ::= COLON array", + "static_class_access ::= method", + "static_class_access ::= method objectchain", + "static_class_access ::= ID", + "static_class_access ::= DOLLAR ID arrayindex", + "static_class_access ::= DOLLAR ID arrayindex objectchain", + "ifcond ::= EQUALS", + "ifcond ::= NOTEQUALS", + "ifcond ::= GREATERTHAN", + "ifcond ::= LESSTHAN", + "ifcond ::= GREATEREQUAL", + "ifcond ::= LESSEQUAL", + "ifcond ::= IDENTITY", + "ifcond ::= NONEIDENTITY", + "ifcond ::= MOD", + "lop ::= LAND", + "lop ::= LOR", + "lop ::= LXOR", + "array ::= OPENB arrayelements CLOSEB", + "arrayelements ::= arrayelement", + "arrayelements ::= arrayelements COMMA arrayelement", + "arrayelements ::=", + "arrayelement ::= value APTR expr", + "arrayelement ::= ID APTR expr", + "arrayelement ::= expr", + "doublequoted_with_quotes ::= QUOTE QUOTE", + "doublequoted_with_quotes ::= QUOTE doublequoted QUOTE", + "doublequoted ::= doublequoted doublequotedcontent", + "doublequoted ::= doublequotedcontent", + "doublequotedcontent ::= BACKTICK variable BACKTICK", + "doublequotedcontent ::= BACKTICK expr BACKTICK", + "doublequotedcontent ::= DOLLARID", + "doublequotedcontent ::= LDEL variable RDEL", + "doublequotedcontent ::= LDEL expr RDEL", + "doublequotedcontent ::= smartytag RDEL", + "doublequotedcontent ::= TEXT", + "optspace ::= SPACE", + "optspace ::=", ); public function tokenName($tokenType) @@ -1589,8 +1588,7 @@ class Smarty_Internal_Templateparser public static function yy_destructor($yymajor, $yypminor) { switch ($yymajor) { - default: - break; /* If no destructor action specified: do nothing */ + default: break; /* If no destructor action specified: do nothing */ } } @@ -1602,12 +1600,12 @@ class Smarty_Internal_Templateparser $yytos = array_pop($this->yystack); if ($this->yyTraceFILE && $this->yyidx >= 0) { fwrite($this->yyTraceFILE, - $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] . - "\n"); + $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] . + "\n"); } $yymajor = $yytos->major; self::yy_destructor($yymajor, $yytos->minor); - $this->yyidx --; + $this->yyidx--; return $yymajor; } @@ -1637,7 +1635,7 @@ class Smarty_Internal_Templateparser // reduce action $done = 0; do { - if ($done ++ == 100) { + if ($done++ == 100) { $this->yyidx = $yyidx; $this->yystack = $stack; // too much recursion prevents proper detection @@ -1650,9 +1648,9 @@ class Smarty_Internal_Templateparser $this->yystack[$this->yyidx]->stateno, self::$yyRuleInfo[$yyruleno][0]); if (isset(self::$yyExpectedTokens[$nextstate])) { - $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]); - if (in_array($token, - self::$yyExpectedTokens[$nextstate], true)) { + $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]); + if (in_array($token, + self::$yyExpectedTokens[$nextstate], true)) { $this->yyidx = $yyidx; $this->yystack = $stack; @@ -1661,7 +1659,7 @@ class Smarty_Internal_Templateparser } if ($nextstate < self::YYNSTATE) { // we need to shift a non-terminal - $this->yyidx ++; + $this->yyidx++; $x = new TP_yyStackEntry; $x->stateno = $nextstate; $x->major = self::$yyRuleInfo[$yyruleno][0]; @@ -1686,8 +1684,8 @@ class Smarty_Internal_Templateparser } break; } while (true); - $this->yyidx = $yyidx; - $this->yystack = $stack; + $this->yyidx = $yyidx; + $this->yystack = $stack; return array_unique($expected); } @@ -1709,7 +1707,7 @@ class Smarty_Internal_Templateparser // reduce action $done = 0; do { - if ($done ++ == 100) { + if ($done++ == 100) { $this->yyidx = $yyidx; $this->yystack = $stack; // too much recursion prevents proper detection @@ -1722,8 +1720,7 @@ class Smarty_Internal_Templateparser $this->yystack[$this->yyidx]->stateno, self::$yyRuleInfo[$yyruleno][0]); if (isset(self::$yyExpectedTokens[$nextstate]) && - in_array($token, self::$yyExpectedTokens[$nextstate], true) - ) { + in_array($token, self::$yyExpectedTokens[$nextstate], true)) { $this->yyidx = $yyidx; $this->yystack = $stack; @@ -1731,7 +1728,7 @@ class Smarty_Internal_Templateparser } if ($nextstate < self::YYNSTATE) { // we need to shift a non-terminal - $this->yyidx ++; + $this->yyidx++; $x = new TP_yyStackEntry; $x->stateno = $nextstate; $x->major = self::$yyRuleInfo[$yyruleno][0]; @@ -1766,7 +1763,7 @@ class Smarty_Internal_Templateparser return true; } - public function yy_find_shift_action($iLookAhead) + public function yy_find_shift_action($iLookAhead) { $stateno = $this->yystack[$this->yyidx]->stateno; @@ -1784,15 +1781,13 @@ class Smarty_Internal_Templateparser } $i += $iLookAhead; if ($i < 0 || $i >= self::YY_SZ_ACTTAB || - self::$yy_lookahead[$i] != $iLookAhead - ) { + self::$yy_lookahead[$i] != $iLookAhead) { if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) - && ($iFallback = self::$yyFallback[$iLookAhead]) != 0 - ) { + && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) { if ($this->yyTraceFILE) { fwrite($this->yyTraceFILE, $this->yyTracePrompt . "FALLBACK " . - $this->yyTokenName[$iLookAhead] . " => " . - $this->yyTokenName[$iFallback] . "\n"); + $this->yyTokenName[$iLookAhead] . " => " . + $this->yyTokenName[$iFallback] . "\n"); } return $this->yy_find_shift_action($iFallback); @@ -1820,8 +1815,7 @@ class Smarty_Internal_Templateparser } $i += $iLookAhead; if ($i < 0 || $i >= self::YY_SZ_ACTTAB || - self::$yy_lookahead[$i] != $iLookAhead - ) { + self::$yy_lookahead[$i] != $iLookAhead) { return self::$yy_default[$stateno]; } else { return self::$yy_action[$i]; @@ -1830,19 +1824,19 @@ class Smarty_Internal_Templateparser public function yy_shift($yyNewState, $yyMajor, $yypMinor) { - $this->yyidx ++; + $this->yyidx++; if ($this->yyidx >= self::YYSTACKDEPTH) { - $this->yyidx --; + $this->yyidx--; if ($this->yyTraceFILE) { fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt); } while ($this->yyidx >= 0) { $this->yy_pop_parser_stack(); } - #line 213 "../smarty/lexer/smarty_internal_templateparser.y" +#line 213 "../smarty/lexer/smarty_internal_templateparser.y" - $this->internalError = true; - $this->compiler->trigger_template_error("Stack overflow in template parser"); + $this->internalError = true; + $this->compiler->trigger_template_error("Stack overflow in template parser"); return; } @@ -1853,259 +1847,258 @@ class Smarty_Internal_Templateparser array_push($this->yystack, $yytos); if ($this->yyTraceFILE && $this->yyidx > 0) { fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt, - $yyNewState); + $yyNewState); fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt); - for ($i = 1; $i <= $this->yyidx; $i ++) { + for ($i = 1; $i <= $this->yyidx; $i++) { fprintf($this->yyTraceFILE, " %s", - $this->yyTokenName[$this->yystack[$i]->major]); + $this->yyTokenName[$this->yystack[$i]->major]); } - fwrite($this->yyTraceFILE, "\n"); + fwrite($this->yyTraceFILE,"\n"); } } public static $yyRuleInfo = array( - array(0 => 84, 1 => 1), - array(0 => 85, 1 => 1), - array(0 => 85, 1 => 2), - array(0 => 85, 1 => 0), - array(0 => 86, 1 => 2), - array(0 => 86, 1 => 1), - array(0 => 86, 1 => 1), - array(0 => 86, 1 => 1), - array(0 => 86, 1 => 1), - array(0 => 86, 1 => 1), - array(0 => 86, 1 => 1), - array(0 => 86, 1 => 1), - array(0 => 86, 1 => 1), - array(0 => 86, 1 => 1), - array(0 => 86, 1 => 1), - array(0 => 86, 1 => 1), - array(0 => 86, 1 => 1), - array(0 => 88, 1 => 2), - array(0 => 88, 1 => 3), - array(0 => 89, 1 => 2), - array(0 => 89, 1 => 0), - array(0 => 90, 1 => 1), - array(0 => 90, 1 => 1), - array(0 => 87, 1 => 2), - array(0 => 87, 1 => 4), - array(0 => 87, 1 => 3), - array(0 => 87, 1 => 4), - array(0 => 87, 1 => 3), - array(0 => 87, 1 => 5), - array(0 => 87, 1 => 5), - array(0 => 87, 1 => 6), - array(0 => 87, 1 => 5), - array(0 => 87, 1 => 3), - array(0 => 87, 1 => 2), - array(0 => 87, 1 => 4), - array(0 => 87, 1 => 5), - array(0 => 87, 1 => 6), - array(0 => 87, 1 => 2), - array(0 => 87, 1 => 3), - array(0 => 87, 1 => 2), - array(0 => 87, 1 => 3), - array(0 => 87, 1 => 11), - array(0 => 100, 1 => 2), - array(0 => 100, 1 => 1), - array(0 => 87, 1 => 5), - array(0 => 87, 1 => 7), - array(0 => 87, 1 => 2), - array(0 => 87, 1 => 7), - array(0 => 87, 1 => 10), - array(0 => 87, 1 => 7), - array(0 => 87, 1 => 10), - array(0 => 87, 1 => 3), - array(0 => 87, 1 => 4), - array(0 => 87, 1 => 2), - array(0 => 87, 1 => 2), - array(0 => 87, 1 => 3), - array(0 => 87, 1 => 4), - array(0 => 87, 1 => 5), - array(0 => 93, 1 => 2), - array(0 => 93, 1 => 1), - array(0 => 93, 1 => 0), - array(0 => 102, 1 => 4), - array(0 => 102, 1 => 2), - array(0 => 102, 1 => 2), - array(0 => 102, 1 => 2), - array(0 => 102, 1 => 2), - array(0 => 102, 1 => 2), - array(0 => 102, 1 => 4), - array(0 => 97, 1 => 1), - array(0 => 97, 1 => 3), - array(0 => 96, 1 => 4), - array(0 => 96, 1 => 3), - array(0 => 96, 1 => 3), - array(0 => 94, 1 => 1), - array(0 => 94, 1 => 1), - array(0 => 94, 1 => 4), - array(0 => 94, 1 => 3), - array(0 => 94, 1 => 3), - array(0 => 94, 1 => 3), - array(0 => 94, 1 => 1), - array(0 => 94, 1 => 2), - array(0 => 94, 1 => 3), - array(0 => 94, 1 => 3), - array(0 => 94, 1 => 3), - array(0 => 94, 1 => 3), - array(0 => 94, 1 => 3), - array(0 => 94, 1 => 3), - array(0 => 94, 1 => 2), - array(0 => 94, 1 => 2), - array(0 => 94, 1 => 3), - array(0 => 94, 1 => 3), - array(0 => 94, 1 => 2), - array(0 => 94, 1 => 2), - array(0 => 94, 1 => 3), - array(0 => 94, 1 => 3), - array(0 => 94, 1 => 3), - array(0 => 103, 1 => 8), - array(0 => 103, 1 => 7), - array(0 => 91, 1 => 1), - array(0 => 91, 1 => 2), - array(0 => 91, 1 => 2), - array(0 => 91, 1 => 2), - array(0 => 91, 1 => 2), - array(0 => 91, 1 => 1), - array(0 => 91, 1 => 1), - array(0 => 91, 1 => 3), - array(0 => 91, 1 => 2), - array(0 => 91, 1 => 2), - array(0 => 91, 1 => 1), - array(0 => 91, 1 => 1), - array(0 => 91, 1 => 3), - array(0 => 91, 1 => 1), - array(0 => 91, 1 => 1), - array(0 => 91, 1 => 3), - array(0 => 91, 1 => 2), - array(0 => 91, 1 => 2), - array(0 => 91, 1 => 1), - array(0 => 91, 1 => 3), - array(0 => 108, 1 => 1), - array(0 => 108, 1 => 1), - array(0 => 108, 1 => 1), - array(0 => 107, 1 => 1), - array(0 => 107, 1 => 4), - array(0 => 107, 1 => 1), - array(0 => 107, 1 => 3), - array(0 => 107, 1 => 4), - array(0 => 107, 1 => 3), - array(0 => 107, 1 => 4), - array(0 => 95, 1 => 3), - array(0 => 113, 1 => 2), - array(0 => 113, 1 => 0), - array(0 => 114, 1 => 3), - array(0 => 114, 1 => 5), - array(0 => 114, 1 => 2), - array(0 => 114, 1 => 2), - array(0 => 114, 1 => 4), - array(0 => 114, 1 => 3), - array(0 => 114, 1 => 5), - array(0 => 114, 1 => 3), - array(0 => 114, 1 => 2), - array(0 => 99, 1 => 1), - array(0 => 99, 1 => 2), - array(0 => 115, 1 => 1), - array(0 => 115, 1 => 3), - array(0 => 112, 1 => 2), - array(0 => 116, 1 => 1), - array(0 => 116, 1 => 2), - array(0 => 117, 1 => 3), - array(0 => 117, 1 => 4), - array(0 => 117, 1 => 5), - array(0 => 117, 1 => 6), - array(0 => 117, 1 => 2), - array(0 => 109, 1 => 4), - array(0 => 118, 1 => 4), - array(0 => 118, 1 => 5), - array(0 => 119, 1 => 3), - array(0 => 119, 1 => 1), - array(0 => 119, 1 => 0), - array(0 => 92, 1 => 3), - array(0 => 92, 1 => 2), - array(0 => 120, 1 => 3), - array(0 => 120, 1 => 2), - array(0 => 101, 1 => 2), - array(0 => 101, 1 => 0), - array(0 => 121, 1 => 2), - array(0 => 121, 1 => 2), - array(0 => 111, 1 => 1), - array(0 => 111, 1 => 2), - array(0 => 111, 1 => 1), - array(0 => 111, 1 => 3), - array(0 => 111, 1 => 4), - array(0 => 105, 1 => 1), - array(0 => 105, 1 => 1), - array(0 => 105, 1 => 1), - array(0 => 105, 1 => 1), - array(0 => 105, 1 => 1), - array(0 => 105, 1 => 1), - array(0 => 105, 1 => 1), - array(0 => 105, 1 => 1), - array(0 => 105, 1 => 1), - array(0 => 106, 1 => 1), - array(0 => 106, 1 => 1), - array(0 => 106, 1 => 1), - array(0 => 104, 1 => 3), - array(0 => 122, 1 => 1), - array(0 => 122, 1 => 3), - array(0 => 122, 1 => 0), - array(0 => 123, 1 => 3), - array(0 => 123, 1 => 3), - array(0 => 123, 1 => 1), - array(0 => 110, 1 => 2), - array(0 => 110, 1 => 3), - array(0 => 124, 1 => 2), - array(0 => 124, 1 => 1), - array(0 => 125, 1 => 3), - array(0 => 125, 1 => 3), - array(0 => 125, 1 => 1), - array(0 => 125, 1 => 3), - array(0 => 125, 1 => 3), - array(0 => 125, 1 => 2), - array(0 => 125, 1 => 1), - array(0 => 98, 1 => 1), - array(0 => 98, 1 => 0), + array( 0 => 84, 1 => 1 ), + array( 0 => 85, 1 => 1 ), + array( 0 => 85, 1 => 2 ), + array( 0 => 85, 1 => 0 ), + array( 0 => 86, 1 => 2 ), + array( 0 => 86, 1 => 1 ), + array( 0 => 86, 1 => 1 ), + array( 0 => 86, 1 => 1 ), + array( 0 => 86, 1 => 1 ), + array( 0 => 86, 1 => 1 ), + array( 0 => 86, 1 => 1 ), + array( 0 => 86, 1 => 1 ), + array( 0 => 86, 1 => 1 ), + array( 0 => 86, 1 => 1 ), + array( 0 => 86, 1 => 1 ), + array( 0 => 86, 1 => 1 ), + array( 0 => 86, 1 => 1 ), + array( 0 => 88, 1 => 2 ), + array( 0 => 88, 1 => 3 ), + array( 0 => 89, 1 => 2 ), + array( 0 => 89, 1 => 0 ), + array( 0 => 90, 1 => 1 ), + array( 0 => 90, 1 => 1 ), + array( 0 => 87, 1 => 2 ), + array( 0 => 87, 1 => 4 ), + array( 0 => 87, 1 => 3 ), + array( 0 => 87, 1 => 4 ), + array( 0 => 87, 1 => 3 ), + array( 0 => 87, 1 => 5 ), + array( 0 => 87, 1 => 5 ), + array( 0 => 87, 1 => 6 ), + array( 0 => 87, 1 => 5 ), + array( 0 => 87, 1 => 3 ), + array( 0 => 87, 1 => 2 ), + array( 0 => 87, 1 => 4 ), + array( 0 => 87, 1 => 5 ), + array( 0 => 87, 1 => 6 ), + array( 0 => 87, 1 => 2 ), + array( 0 => 87, 1 => 3 ), + array( 0 => 87, 1 => 2 ), + array( 0 => 87, 1 => 3 ), + array( 0 => 87, 1 => 11 ), + array( 0 => 100, 1 => 2 ), + array( 0 => 100, 1 => 1 ), + array( 0 => 87, 1 => 5 ), + array( 0 => 87, 1 => 7 ), + array( 0 => 87, 1 => 2 ), + array( 0 => 87, 1 => 7 ), + array( 0 => 87, 1 => 10 ), + array( 0 => 87, 1 => 7 ), + array( 0 => 87, 1 => 10 ), + array( 0 => 87, 1 => 3 ), + array( 0 => 87, 1 => 4 ), + array( 0 => 87, 1 => 2 ), + array( 0 => 87, 1 => 2 ), + array( 0 => 87, 1 => 3 ), + array( 0 => 87, 1 => 4 ), + array( 0 => 87, 1 => 5 ), + array( 0 => 93, 1 => 2 ), + array( 0 => 93, 1 => 1 ), + array( 0 => 93, 1 => 0 ), + array( 0 => 102, 1 => 4 ), + array( 0 => 102, 1 => 2 ), + array( 0 => 102, 1 => 2 ), + array( 0 => 102, 1 => 2 ), + array( 0 => 102, 1 => 2 ), + array( 0 => 102, 1 => 2 ), + array( 0 => 102, 1 => 4 ), + array( 0 => 97, 1 => 1 ), + array( 0 => 97, 1 => 3 ), + array( 0 => 96, 1 => 4 ), + array( 0 => 96, 1 => 3 ), + array( 0 => 96, 1 => 3 ), + array( 0 => 94, 1 => 1 ), + array( 0 => 94, 1 => 1 ), + array( 0 => 94, 1 => 4 ), + array( 0 => 94, 1 => 3 ), + array( 0 => 94, 1 => 3 ), + array( 0 => 94, 1 => 3 ), + array( 0 => 94, 1 => 1 ), + array( 0 => 94, 1 => 2 ), + array( 0 => 94, 1 => 3 ), + array( 0 => 94, 1 => 3 ), + array( 0 => 94, 1 => 3 ), + array( 0 => 94, 1 => 3 ), + array( 0 => 94, 1 => 3 ), + array( 0 => 94, 1 => 3 ), + array( 0 => 94, 1 => 2 ), + array( 0 => 94, 1 => 2 ), + array( 0 => 94, 1 => 3 ), + array( 0 => 94, 1 => 3 ), + array( 0 => 94, 1 => 2 ), + array( 0 => 94, 1 => 2 ), + array( 0 => 94, 1 => 3 ), + array( 0 => 94, 1 => 3 ), + array( 0 => 94, 1 => 3 ), + array( 0 => 103, 1 => 8 ), + array( 0 => 103, 1 => 7 ), + array( 0 => 91, 1 => 1 ), + array( 0 => 91, 1 => 2 ), + array( 0 => 91, 1 => 2 ), + array( 0 => 91, 1 => 2 ), + array( 0 => 91, 1 => 2 ), + array( 0 => 91, 1 => 1 ), + array( 0 => 91, 1 => 1 ), + array( 0 => 91, 1 => 3 ), + array( 0 => 91, 1 => 2 ), + array( 0 => 91, 1 => 2 ), + array( 0 => 91, 1 => 1 ), + array( 0 => 91, 1 => 1 ), + array( 0 => 91, 1 => 3 ), + array( 0 => 91, 1 => 1 ), + array( 0 => 91, 1 => 1 ), + array( 0 => 91, 1 => 3 ), + array( 0 => 91, 1 => 2 ), + array( 0 => 91, 1 => 2 ), + array( 0 => 91, 1 => 1 ), + array( 0 => 91, 1 => 3 ), + array( 0 => 108, 1 => 1 ), + array( 0 => 108, 1 => 1 ), + array( 0 => 108, 1 => 1 ), + array( 0 => 107, 1 => 1 ), + array( 0 => 107, 1 => 4 ), + array( 0 => 107, 1 => 1 ), + array( 0 => 107, 1 => 3 ), + array( 0 => 107, 1 => 4 ), + array( 0 => 107, 1 => 3 ), + array( 0 => 107, 1 => 4 ), + array( 0 => 95, 1 => 3 ), + array( 0 => 113, 1 => 2 ), + array( 0 => 113, 1 => 0 ), + array( 0 => 114, 1 => 3 ), + array( 0 => 114, 1 => 5 ), + array( 0 => 114, 1 => 2 ), + array( 0 => 114, 1 => 2 ), + array( 0 => 114, 1 => 4 ), + array( 0 => 114, 1 => 3 ), + array( 0 => 114, 1 => 5 ), + array( 0 => 114, 1 => 3 ), + array( 0 => 114, 1 => 2 ), + array( 0 => 99, 1 => 1 ), + array( 0 => 99, 1 => 2 ), + array( 0 => 115, 1 => 1 ), + array( 0 => 115, 1 => 3 ), + array( 0 => 112, 1 => 2 ), + array( 0 => 116, 1 => 1 ), + array( 0 => 116, 1 => 2 ), + array( 0 => 117, 1 => 3 ), + array( 0 => 117, 1 => 4 ), + array( 0 => 117, 1 => 5 ), + array( 0 => 117, 1 => 6 ), + array( 0 => 117, 1 => 2 ), + array( 0 => 109, 1 => 4 ), + array( 0 => 118, 1 => 4 ), + array( 0 => 118, 1 => 5 ), + array( 0 => 119, 1 => 3 ), + array( 0 => 119, 1 => 1 ), + array( 0 => 119, 1 => 0 ), + array( 0 => 92, 1 => 3 ), + array( 0 => 92, 1 => 2 ), + array( 0 => 120, 1 => 3 ), + array( 0 => 120, 1 => 2 ), + array( 0 => 101, 1 => 2 ), + array( 0 => 101, 1 => 0 ), + array( 0 => 121, 1 => 2 ), + array( 0 => 121, 1 => 2 ), + array( 0 => 111, 1 => 1 ), + array( 0 => 111, 1 => 2 ), + array( 0 => 111, 1 => 1 ), + array( 0 => 111, 1 => 3 ), + array( 0 => 111, 1 => 4 ), + array( 0 => 105, 1 => 1 ), + array( 0 => 105, 1 => 1 ), + array( 0 => 105, 1 => 1 ), + array( 0 => 105, 1 => 1 ), + array( 0 => 105, 1 => 1 ), + array( 0 => 105, 1 => 1 ), + array( 0 => 105, 1 => 1 ), + array( 0 => 105, 1 => 1 ), + array( 0 => 105, 1 => 1 ), + array( 0 => 106, 1 => 1 ), + array( 0 => 106, 1 => 1 ), + array( 0 => 106, 1 => 1 ), + array( 0 => 104, 1 => 3 ), + array( 0 => 122, 1 => 1 ), + array( 0 => 122, 1 => 3 ), + array( 0 => 122, 1 => 0 ), + array( 0 => 123, 1 => 3 ), + array( 0 => 123, 1 => 3 ), + array( 0 => 123, 1 => 1 ), + array( 0 => 110, 1 => 2 ), + array( 0 => 110, 1 => 3 ), + array( 0 => 124, 1 => 2 ), + array( 0 => 124, 1 => 1 ), + array( 0 => 125, 1 => 3 ), + array( 0 => 125, 1 => 3 ), + array( 0 => 125, 1 => 1 ), + array( 0 => 125, 1 => 3 ), + array( 0 => 125, 1 => 3 ), + array( 0 => 125, 1 => 2 ), + array( 0 => 125, 1 => 1 ), + array( 0 => 98, 1 => 1 ), + array( 0 => 98, 1 => 0 ), ); public static $yyReduceMap = array( - 0 => 0, - 1 => 1, - 2 => 2, - 4 => 4, - 5 => 5, - 6 => 6, - 7 => 7, - 8 => 8, - 9 => 9, - 10 => 10, - 11 => 11, - 12 => 12, - 13 => 13, - 14 => 14, - 15 => 15, - 16 => 16, - 17 => 17, - 20 => 17, + 0 => 0, + 1 => 1, + 2 => 2, + 4 => 4, + 5 => 5, + 6 => 6, + 7 => 7, + 8 => 8, + 9 => 9, + 10 => 10, + 11 => 11, + 12 => 12, + 13 => 13, + 14 => 14, + 15 => 15, + 16 => 16, + 17 => 17, + 20 => 17, 202 => 17, - 18 => 18, - 72 => 18, - 19 => 19, - 99 => 19, + 18 => 18, + 72 => 18, + 19 => 19, + 99 => 19, 101 => 19, 102 => 19, 129 => 19, - 167 => 19, - 21 => 21, - 22 => 21, - 43 => 21, - 65 => 21, - 66 => 21, - 73 => 21, - 74 => 21, - 79 => 21, - 98 => 21, + 21 => 21, + 22 => 21, + 43 => 21, + 65 => 21, + 66 => 21, + 73 => 21, + 74 => 21, + 79 => 21, + 98 => 21, 103 => 21, 104 => 21, 109 => 21, @@ -2117,86 +2110,84 @@ class Smarty_Internal_Templateparser 120 => 21, 123 => 21, 140 => 21, - 166 => 21, - 168 => 21, 184 => 21, 189 => 21, 201 => 21, - 23 => 23, - 24 => 24, - 25 => 25, - 27 => 25, - 26 => 26, - 28 => 28, - 29 => 28, - 30 => 30, - 31 => 31, - 32 => 32, - 33 => 33, - 34 => 34, - 35 => 35, - 36 => 36, - 37 => 37, - 38 => 38, - 40 => 38, - 39 => 39, - 41 => 41, - 42 => 42, - 44 => 44, - 45 => 45, - 46 => 46, - 47 => 47, - 49 => 47, - 48 => 48, - 50 => 48, - 51 => 51, - 52 => 52, - 53 => 53, - 54 => 54, - 55 => 55, - 56 => 56, - 57 => 57, - 58 => 58, - 59 => 59, - 68 => 59, + 23 => 23, + 24 => 24, + 25 => 25, + 27 => 25, + 26 => 26, + 28 => 28, + 29 => 28, + 30 => 30, + 31 => 31, + 32 => 32, + 33 => 33, + 34 => 34, + 35 => 35, + 36 => 36, + 37 => 37, + 38 => 38, + 40 => 38, + 39 => 39, + 41 => 41, + 42 => 42, + 44 => 44, + 45 => 45, + 46 => 46, + 47 => 47, + 49 => 47, + 48 => 48, + 50 => 48, + 51 => 51, + 52 => 52, + 53 => 53, + 54 => 54, + 55 => 55, + 56 => 56, + 57 => 57, + 58 => 58, + 59 => 59, + 68 => 59, 156 => 59, 160 => 59, 164 => 59, 165 => 59, - 60 => 60, + 60 => 60, 157 => 60, 163 => 60, - 61 => 61, - 62 => 62, - 63 => 62, - 64 => 64, - 67 => 67, - 69 => 69, - 70 => 70, - 71 => 70, - 75 => 75, - 76 => 76, - 77 => 76, - 78 => 76, - 80 => 80, + 61 => 61, + 62 => 62, + 63 => 62, + 64 => 64, + 67 => 67, + 69 => 69, + 70 => 70, + 71 => 70, + 75 => 75, + 76 => 76, + 77 => 76, + 78 => 76, + 80 => 80, 115 => 80, - 81 => 81, - 84 => 81, - 82 => 82, - 83 => 83, - 85 => 85, - 86 => 86, - 87 => 87, - 92 => 87, - 88 => 88, - 91 => 88, - 89 => 89, - 94 => 89, - 90 => 90, - 93 => 90, - 95 => 95, - 96 => 96, - 97 => 97, + 81 => 81, + 84 => 81, + 82 => 82, + 83 => 83, + 85 => 85, + 86 => 86, + 87 => 87, + 92 => 87, + 88 => 88, + 91 => 88, + 89 => 89, + 94 => 89, + 90 => 90, + 93 => 90, + 95 => 95, + 96 => 96, + 97 => 97, 100 => 100, 105 => 105, 106 => 106, @@ -2243,6 +2234,9 @@ class Smarty_Internal_Templateparser 159 => 159, 161 => 161, 162 => 162, + 166 => 166, + 167 => 167, + 168 => 168, 169 => 169, 170 => 170, 171 => 171, @@ -2273,1096 +2267,817 @@ class Smarty_Internal_Templateparser 199 => 199, 200 => 200, ); - - #line 224 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r0() - { - $this->_retvalue = $this->root_buffer->to_smarty_php(); +#line 224 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r0(){ + $this->_retvalue = $this->root_buffer->to_smarty_php(); } - - #line 232 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r1() - { - if ($this->yystack[$this->yyidx + 0]->minor != null) { - $this->current_buffer->append_subtree($this->yystack[$this->yyidx + 0]->minor); - } +#line 232 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r1(){ + if ($this->yystack[$this->yyidx + 0]->minor != null) { + $this->current_buffer->append_subtree($this->yystack[$this->yyidx + 0]->minor); } - - #line 239 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r2() - { - if ($this->yystack[$this->yyidx + 0]->minor != null) { - // because of possible code injection - $this->current_buffer->append_subtree($this->yystack[$this->yyidx + 0]->minor); - } } - - #line 253 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r4() - { - if ($this->compiler->has_code) { - $tmp = ''; - foreach ($this->compiler->prefix_code as $code) { - $tmp .= $code; - } - $this->compiler->prefix_code = array(); - $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp . $this->yystack[$this->yyidx + - 1]->minor, true)); +#line 239 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r2(){ + if ($this->yystack[$this->yyidx + 0]->minor != null) { + // because of possible code injection + $this->current_buffer->append_subtree($this->yystack[$this->yyidx + 0]->minor); + } + } +#line 253 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r4(){ + if ($this->compiler->has_code) { + $tmp =''; foreach ($this->compiler->prefix_code as $code) {$tmp.=$code;} $this->compiler->prefix_code=array(); + $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp.$this->yystack[$this->yyidx + -1]->minor,true)); + } else { + $this->_retvalue = null; + } + $this->compiler->has_variable_string = false; + $this->block_nesting_level = count($this->compiler->_tag_stack); + } +#line 265 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r5(){ + $this->_retvalue = null; + } +#line 270 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r6(){ + $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); + } +#line 275 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r7(){ + if (strpos($this->yystack[$this->yyidx + 0]->minor, 'lex->is_phpScript = true; + } + if ($this->php_handling == Smarty::PHP_PASSTHRU) { + if ($this->lex->is_phpScript) { + $s = addcslashes($this->yystack[$this->yyidx + 0]->minor, "'"); + $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $s); } else { - $this->_retvalue = null; + $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); } - $this->compiler->has_variable_string = false; - $this->block_nesting_level = count($this->compiler->_tag_stack); - } - - #line 265 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r5() - { + } elseif ($this->php_handling == Smarty::PHP_QUOTE) { + $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, htmlspecialchars($this->yystack[$this->yyidx + 0]->minor, ENT_QUOTES)); + } elseif ($this->php_handling == Smarty::PHP_ALLOW) { + if (!($this->smarty instanceof SmartyBC)) { + $this->compiler->trigger_template_error (self::Err3); + } + $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode('php_handling == Smarty::PHP_REMOVE) { $this->_retvalue = null; } - - #line 270 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r6() - { + } +#line 299 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r8(){ + if ($this->is_xml) { + $this->compiler->tag_nocache = true; + $this->is_xml = false; + $save = $this->template->has_nocache_code; + $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode("';?>\n", $this->compiler, true)); + $this->template->has_nocache_code = $save; + } elseif ($this->php_handling == Smarty::PHP_PASSTHRU) { $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); + } elseif ($this->php_handling == Smarty::PHP_QUOTE) { + $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, htmlspecialchars('?>', ENT_QUOTES)); + } elseif ($this->php_handling == Smarty::PHP_ALLOW) { + $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode('?>', true)); + } elseif ($this->php_handling == Smarty::PHP_REMOVE) { + $this->_retvalue = null; } - - #line 275 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r7() - { - if (strpos($this->yystack[$this->yyidx + 0]->minor, 'lex->is_phpScript = true; - } + } +#line 317 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r9(){ + if (!$this->lex->is_phpScript) { + $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); + } else { + $this->lex->is_phpScript = false; if ($this->php_handling == Smarty::PHP_PASSTHRU) { - if ($this->lex->is_phpScript) { - $s = addcslashes($this->yystack[$this->yyidx + 0]->minor, "'"); - $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $s); - } else { - $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); - } - } elseif ($this->php_handling == Smarty::PHP_QUOTE) { - $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, htmlspecialchars($this->yystack[$this->yyidx + 0]->minor, ENT_QUOTES)); - } elseif ($this->php_handling == Smarty::PHP_ALLOW) { - if (!($this->smarty instanceof SmartyBC)) { - $this->compiler->trigger_template_error(self::Err3); - } - $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode('php_handling == Smarty::PHP_REMOVE) { - $this->_retvalue = null; - } - } - - #line 299 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r8() - { - if ($this->is_xml) { - $this->compiler->tag_nocache = true; - $this->is_xml = false; - $save = $this->template->has_nocache_code; - $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode("';?>\n", $this->compiler, true)); - $this->template->has_nocache_code = $save; - } elseif ($this->php_handling == Smarty::PHP_PASSTHRU) { $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); } elseif ($this->php_handling == Smarty::PHP_QUOTE) { - $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, htmlspecialchars('?>', ENT_QUOTES)); + $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, htmlspecialchars($this->yystack[$this->yyidx + 0]->minor, ENT_QUOTES)); } elseif ($this->php_handling == Smarty::PHP_ALLOW) { $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode('?>', true)); } elseif ($this->php_handling == Smarty::PHP_REMOVE) { $this->_retvalue = null; } } - - #line 317 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r9() - { - if (!$this->lex->is_phpScript) { - $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); + } +#line 335 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r10(){ + if ($this->php_handling == Smarty::PHP_PASSTHRU) { + $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); + } elseif ($this->php_handling == Smarty::PHP_QUOTE) { + $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, htmlspecialchars($this->yystack[$this->yyidx + 0]->minor, ENT_QUOTES)); + } elseif ($this->php_handling == Smarty::PHP_ALLOW) { + if ($this->asp_tags) { + if (!($this->smarty instanceof SmartyBC)) { + $this->compiler->trigger_template_error (self::Err3); + } + $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode('<%', true)); } else { - $this->lex->is_phpScript = false; - if ($this->php_handling == Smarty::PHP_PASSTHRU) { - $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); - } elseif ($this->php_handling == Smarty::PHP_QUOTE) { - $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, htmlspecialchars($this->yystack[$this->yyidx + 0]->minor, ENT_QUOTES)); - } elseif ($this->php_handling == Smarty::PHP_ALLOW) { - $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode('?>', true)); - } elseif ($this->php_handling == Smarty::PHP_REMOVE) { - $this->_retvalue = null; - } - } - } - - #line 335 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r10() - { - if ($this->php_handling == Smarty::PHP_PASSTHRU) { $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); - } elseif ($this->php_handling == Smarty::PHP_QUOTE) { - $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, htmlspecialchars($this->yystack[$this->yyidx + 0]->minor, ENT_QUOTES)); - } elseif ($this->php_handling == Smarty::PHP_ALLOW) { - if ($this->asp_tags) { - if (!($this->smarty instanceof SmartyBC)) { - $this->compiler->trigger_template_error(self::Err3); - } - $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode('<%', true)); - } else { - $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); - } - } elseif ($this->php_handling == Smarty::PHP_REMOVE) { - if ($this->asp_tags) { - $this->_retvalue = null; - } else { - $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); - } } - } - - #line 359 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r11() - { - if ($this->php_handling == Smarty::PHP_PASSTHRU) { + } elseif ($this->php_handling == Smarty::PHP_REMOVE) { + if ($this->asp_tags) { + $this->_retvalue = null; + } else { $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); - } elseif ($this->php_handling == Smarty::PHP_QUOTE) { - $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, htmlspecialchars('%>', ENT_QUOTES)); - } elseif ($this->php_handling == Smarty::PHP_ALLOW) { - if ($this->asp_tags) { - $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode('%>', true)); - } else { - $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); - } - } elseif ($this->php_handling == Smarty::PHP_REMOVE) { - if ($this->asp_tags) { - $this->_retvalue = null; - } else { - $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); - } } } - - #line 381 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r12() - { - $this->compiler->tag_nocache = true; - $this->is_xml = true; - $save = $this->template->has_nocache_code; - $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode("", $this->compiler, true)); - $this->template->has_nocache_code = $save; } - - #line 390 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r13() - { +#line 359 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r11(){ + if ($this->php_handling == Smarty::PHP_PASSTHRU) { + $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); + } elseif ($this->php_handling == Smarty::PHP_QUOTE) { + $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, htmlspecialchars('%>', ENT_QUOTES)); + } elseif ($this->php_handling == Smarty::PHP_ALLOW) { + if ($this->asp_tags) { + $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode('%>', true)); + } else { + $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); + } + } elseif ($this->php_handling == Smarty::PHP_REMOVE) { + if ($this->asp_tags) { + $this->_retvalue = null; + } else { + $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); + } + } + } +#line 381 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r12(){ + $this->compiler->tag_nocache = true; + $this->is_xml = true; + $save = $this->template->has_nocache_code; + $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode("", $this->compiler, true)); + $this->template->has_nocache_code = $save; + } +#line 390 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r13(){ if ($this->strip) { $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, preg_replace('![\t ]*[\r\n]+[\t ]*!', '', $this->yystack[$this->yyidx + 0]->minor)); } else { $this->_retvalue = new Smarty_Internal_ParseTree_Text($this, $this->yystack[$this->yyidx + 0]->minor); } } - - #line 399 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r14() - { - $this->strip = true; +#line 399 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r14(){ + $this->strip = true; } - - #line 403 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r15() - { - $this->strip = false; +#line 403 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r15(){ + $this->strip = false; } - - #line 407 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r16() - { +#line 407 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r16(){ if ($this->strip) { SMARTY_INTERNAL_COMPILE_BLOCK::blockSource($this->compiler, preg_replace('![\t ]*[\r\n]+[\t ]*!', '', $this->yystack[$this->yyidx + 0]->minor)); } else { SMARTY_INTERNAL_COMPILE_BLOCK::blockSource($this->compiler, $this->yystack[$this->yyidx + 0]->minor); } } - - #line 416 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r17() - { - $this->_retvalue = ''; +#line 416 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r17(){ + $this->_retvalue = ''; } - - #line 420 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r18() - { - $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor; +#line 420 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r18(){ + $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; } - - #line 424 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r19() - { - $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor; +#line 424 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r19(){ + $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } - - #line 432 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r21() - { +#line 432 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r21(){ + $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; + } +#line 445 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r23(){ + $this->_retvalue = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$this->yystack[$this->yyidx + 0]->minor)); + } +#line 449 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r24(){ + $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + 0]->minor,array('value'=>$this->yystack[$this->yyidx + -2]->minor, 'modifierlist'=>$this->yystack[$this->yyidx + -1]->minor)); + } +#line 453 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r25(){ + $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + 0]->minor,array('value'=>$this->yystack[$this->yyidx + -1]->minor)); + } +#line 457 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r26(){ + $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + 0]->minor,array('value'=>$this->yystack[$this->yyidx + -2]->minor,'modifierlist'=>$this->yystack[$this->yyidx + -1]->minor)); + } +#line 470 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r28(){ + $this->_retvalue = $this->compiler->compileTag('assign',array(array('value'=>$this->yystack[$this->yyidx + 0]->minor),array('var'=>"'".$this->yystack[$this->yyidx + -2]->minor."'"))); + } +#line 478 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r30(){ + $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + -1]->minor),array('var'=>"'".$this->yystack[$this->yyidx + -3]->minor."'")),$this->yystack[$this->yyidx + 0]->minor)); + } +#line 482 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r31(){ + $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + -1]->minor),array('var'=>$this->yystack[$this->yyidx + -3]->minor['var'])),$this->yystack[$this->yyidx + 0]->minor),array('smarty_internal_index'=>$this->yystack[$this->yyidx + -3]->minor['smarty_internal_index'])); + } +#line 487 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r32(){ + if (defined($this->yystack[$this->yyidx + -1]->minor)) { + $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + 0]->minor,array('value'=>$this->yystack[$this->yyidx + -1]->minor)); + } else { + $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); + } + } +#line 494 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r33(){ + if (defined($this->yystack[$this->yyidx + 0]->minor)) { + $this->_retvalue = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$this->yystack[$this->yyidx + 0]->minor)); + } else { + $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor,array()); + } + } +#line 504 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r34(){ + if (defined($this->yystack[$this->yyidx + -2]->minor)) { + $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + 0]->minor,array('value'=>$this->yystack[$this->yyidx + -2]->minor, 'modifierlist'=>$this->yystack[$this->yyidx + -1]->minor)); + } else { + $this->_retvalue = ''.$this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + 0]->minor).'_retvalue .= $this->compiler->compileTag('private_modifier',array(),array('modifierlist'=>$this->yystack[$this->yyidx + -1]->minor,'value'=>'ob_get_clean()')).';?>'; + } + } +#line 514 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r35(){ + $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,$this->yystack[$this->yyidx + 0]->minor,array('object_method'=>$this->yystack[$this->yyidx + -1]->minor)); + } +#line 519 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r36(){ + $this->_retvalue = ''.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + 0]->minor,array('object_method'=>$this->yystack[$this->yyidx + -2]->minor)).'_retvalue .= $this->compiler->compileTag('private_modifier',array(),array('modifierlist'=>$this->yystack[$this->yyidx + -1]->minor,'value'=>'ob_get_clean()')).';?>'; + } +#line 525 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r37(){ + $tag = trim(substr($this->yystack[$this->yyidx + -1]->minor,$this->lex->ldel_length)); + $this->_retvalue = $this->compiler->compileTag(($tag == 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + 0]->minor)); + } +#line 530 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r38(){ + $tag = trim(substr($this->yystack[$this->yyidx + -2]->minor,$this->lex->ldel_length)); + $this->_retvalue = $this->compiler->compileTag(($tag == 'else if')? 'elseif' : $tag,$this->yystack[$this->yyidx + 0]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor)); + } +#line 535 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r39(){ + $tag = trim(substr($this->yystack[$this->yyidx + -1]->minor,$this->lex->ldel_length)); + $this->_retvalue = $this->compiler->compileTag(($tag == 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + 0]->minor)); + } +#line 546 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r41(){ + $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -9]->minor),array('ifexp'=>$this->yystack[$this->yyidx + -6]->minor),array('var'=>$this->yystack[$this->yyidx + -2]->minor),array('step'=>$this->yystack[$this->yyidx + -1]->minor))),1); + } +#line 550 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r42(){ + $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor; + } +#line 558 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r44(){ + $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -3]->minor),array('to'=>$this->yystack[$this->yyidx + -1]->minor))),0); + } +#line 562 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r45(){ + $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -5]->minor),array('to'=>$this->yystack[$this->yyidx + -3]->minor),array('step'=>$this->yystack[$this->yyidx + -1]->minor))),0); + } +#line 567 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r46(){ + $this->_retvalue = $this->compiler->compileTag('foreach',$this->yystack[$this->yyidx + 0]->minor); + } +#line 572 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r47(){ + $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('from'=>$this->yystack[$this->yyidx + -4]->minor),array('item'=>$this->yystack[$this->yyidx + -1]->minor)))); + } +#line 576 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r48(){ + $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('from'=>$this->yystack[$this->yyidx + -7]->minor),array('item'=>$this->yystack[$this->yyidx + -1]->minor),array('key'=>$this->yystack[$this->yyidx + -4]->minor)))); + } +#line 589 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r51(){ + $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array(array_merge(array($this->yystack[$this->yyidx + -1]->minor),$this->yystack[$this->yyidx + 0]->minor)))); + } +#line 593 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r52(){ + $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array_merge(array(array_merge(array($this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)),$this->yystack[$this->yyidx + 0]->minor))); + } +#line 598 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r53(){ + $j = strrpos($this->yystack[$this->yyidx + 0]->minor,'.'); + if ($this->yystack[$this->yyidx + 0]->minor[$j+1] == 'c') { + // {$smarty.block.child} + $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileChildBlock($this->compiler); + } else { + // {$smarty.block.parent} + $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileParentBlock($this->compiler); + } + } +#line 611 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r54(){ + $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor.'close',array()); + } +#line 615 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r55(){ + $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',array(),array('modifier_list'=>$this->yystack[$this->yyidx + 0]->minor)); + } +#line 620 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r56(){ + $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',array(),array('object_method'=>$this->yystack[$this->yyidx + 0]->minor)); + } +#line 624 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r57(){ + $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array(),array('object_method'=>$this->yystack[$this->yyidx + -1]->minor, 'modifier_list'=>$this->yystack[$this->yyidx + 0]->minor)); + } +#line 632 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r58(){ + $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; + $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor; + } +#line 638 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r59(){ + $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); + } +#line 643 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r60(){ + $this->_retvalue = array(); + } +#line 648 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r61(){ + if (defined($this->yystack[$this->yyidx + 0]->minor)) { + $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor); + } else { + $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>"'".$this->yystack[$this->yyidx + 0]->minor."'"); + } + } +#line 656 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r62(){ + $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor," =\n\r\t")=>$this->yystack[$this->yyidx + 0]->minor); + } +#line 664 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r64(){ + $this->_retvalue = "'".$this->yystack[$this->yyidx + 0]->minor."'"; + } +#line 676 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r67(){ + $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor); + } +#line 689 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r69(){ + $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor; + $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; + } +#line 694 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r70(){ + $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor); + } +#line 722 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r75(){ + $this->_retvalue = '$_smarty_tpl->getStreamVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'://'. $this->yystack[$this->yyidx + 0]->minor . '\')'; + } +#line 727 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r76(){ + $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . trim($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor; + } +#line 746 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r80(){ + $this->_retvalue = $this->compiler->compileTag('private_modifier',array(),array('value'=>$this->yystack[$this->yyidx + -1]->minor,'modifierlist'=>$this->yystack[$this->yyidx + 0]->minor)); + } +#line 752 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r81(){ + $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; + } +#line 756 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r82(){ + $this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')'; + } +#line 760 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r83(){ + $this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')'; + } +#line 768 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r85(){ + $this->_retvalue = '!('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; + } +#line 772 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r86(){ + $this->_retvalue = '('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; + } +#line 776 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r87(){ + $this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; + } +#line 780 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r88(){ + $this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; + } +#line 784 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r89(){ + $this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; + } +#line 788 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r90(){ + $this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; + } +#line 808 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r95(){ + $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; + } +#line 816 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r96(){ + $this->_retvalue = $this->yystack[$this->yyidx + -6]->minor.' ? '. $this->compileVariable("'".$this->yystack[$this->yyidx + -2]->minor."'") . ' : '.$this->yystack[$this->yyidx + 0]->minor; + } +#line 820 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r97(){ + $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor; + } +#line 835 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r100(){ + $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor; + } +#line 856 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r105(){ + $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; + } +#line 860 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r106(){ + $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'; + } +#line 864 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r107(){ + $this->_retvalue = '.'.$this->yystack[$this->yyidx + 0]->minor; + } +#line 869 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r108(){ + if (defined($this->yystack[$this->yyidx + 0]->minor)) { $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; + } else { + $this->_retvalue = "'".$this->yystack[$this->yyidx + 0]->minor."'"; } - - #line 445 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r23() - { - $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(), array('value' => $this->yystack[$this->yyidx + 0]->minor)); } - - #line 449 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r24() - { - $this->_retvalue = $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor, array('value' => $this->yystack[$this->yyidx + - 2]->minor, 'modifierlist' => $this->yystack[$this->yyidx + - 1]->minor)); +#line 883 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r110(){ + $this->_retvalue = "(". $this->yystack[$this->yyidx + -1]->minor .")"; } - - #line 453 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r25() - { - $this->_retvalue = $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor, array('value' => $this->yystack[$this->yyidx + - 1]->minor)); +#line 898 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r113(){ + self::$prefix_number++; + if ($this->yystack[$this->yyidx + -2]->minor['var'] == '\'smarty\'') { + $this->compiler->prefix_code[] = 'compiler->compileTag('private_special_variable',array(),$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index']).';?>'; + } else { + $this->compiler->prefix_code[] = 'compileVariable($this->yystack[$this->yyidx + -2]->minor['var']).$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index'].';?>'; } + $this->_retvalue = '$_tmp'.self::$prefix_number.'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1]; - #line 457 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r26() - { - $this->_retvalue = $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor, array('value' => $this->yystack[$this->yyidx + - 2]->minor, 'modifierlist' => $this->yystack[$this->yyidx + - 1]->minor)); } - - #line 470 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r28() - { - $this->_retvalue = $this->compiler->compileTag('assign', array(array('value' => $this->yystack[$this->yyidx + 0]->minor), array('var' => "'" . $this->yystack[$this->yyidx + - 2]->minor . "'"))); +#line 910 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r114(){ + self::$prefix_number++; + $this->compiler->prefix_code[] = ''.$this->yystack[$this->yyidx + -1]->minor.''; + $this->_retvalue = '$_tmp'.self::$prefix_number; } - - #line 478 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r30() - { - $this->_retvalue = $this->compiler->compileTag('assign', array_merge(array(array('value' => $this->yystack[$this->yyidx + - 1]->minor), array('var' => "'" . $this->yystack[$this->yyidx + - 3]->minor . "'")), $this->yystack[$this->yyidx + 0]->minor)); - } - - #line 482 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r31() - { - $this->_retvalue = $this->compiler->compileTag('assign', array_merge(array(array('value' => $this->yystack[$this->yyidx + - 1]->minor), array('var' => $this->yystack[$this->yyidx + - 3]->minor['var'])), $this->yystack[$this->yyidx + 0]->minor), array('smarty_internal_index' => $this->yystack[$this->yyidx + - 3]->minor['smarty_internal_index'])); - } - - #line 487 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r32() - { - if (defined($this->yystack[$this->yyidx + - 1]->minor)) { - $this->_retvalue = $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor, array('value' => $this->yystack[$this->yyidx + - 1]->minor)); +#line 926 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r117(){ + if (!in_array(strtolower($this->yystack[$this->yyidx + -2]->minor), array('self', 'parent')) && (!$this->security || $this->smarty->security_policy->isTrustedStaticClassAccess($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->compiler))) { + if (isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor])) { + $this->_retvalue = $this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor].'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1]; } else { - $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 1]->minor, $this->yystack[$this->yyidx + 0]->minor); - } + $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1]; + } + } else { + $this->compiler->trigger_template_error ("static class '".$this->yystack[$this->yyidx + -2]->minor."' is undefined or not allowed by security setting"); } - - #line 494 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r33() - { - if (defined($this->yystack[$this->yyidx + 0]->minor)) { - $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(), array('value' => $this->yystack[$this->yyidx + 0]->minor)); + } +#line 960 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r121(){ + if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') { + $smarty_var = $this->compiler->compileTag('private_special_variable',array(),$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']); + $this->_retvalue = $smarty_var; + } else { + // used for array reset,next,prev,end,current + $this->last_variable = $this->yystack[$this->yyidx + 0]->minor['var']; + $this->last_index = $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']; + $this->_retvalue = $this->compileVariable($this->yystack[$this->yyidx + 0]->minor['var']).$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']; + } + } +#line 973 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r122(){ + $this->_retvalue = '$_smarty_tpl->tpl_vars['. $this->yystack[$this->yyidx + -2]->minor .']->'.$this->yystack[$this->yyidx + 0]->minor; + } +#line 983 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r124(){ + $this->_retvalue = '$_smarty_tpl->getConfigVariable( \''. $this->yystack[$this->yyidx + -1]->minor .'\')'; + } +#line 987 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r125(){ + $this->_retvalue = '(is_array($tmp = $_smarty_tpl->getConfigVariable( \''. $this->yystack[$this->yyidx + -2]->minor .'\')) ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' :null)'; + } +#line 991 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r126(){ + $this->_retvalue = '$_smarty_tpl->getConfigVariable( '. $this->yystack[$this->yyidx + -1]->minor .')'; + } +#line 995 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r127(){ + $this->_retvalue = '(is_array($tmp = $_smarty_tpl->getConfigVariable( '. $this->yystack[$this->yyidx + -2]->minor .')) ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' : null)'; + } +#line 999 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r128(){ + $this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor); + } +#line 1012 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r130(){ + return; + } +#line 1018 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r131(){ + $this->_retvalue = '['.$this->compileVariable($this->yystack[$this->yyidx + 0]->minor).']'; + } +#line 1022 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r132(){ + $this->_retvalue = '['.$this->compileVariable($this->yystack[$this->yyidx + -2]->minor).'->'.$this->yystack[$this->yyidx + 0]->minor.']'; + } +#line 1026 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r133(){ + if (defined($this->yystack[$this->yyidx + 0]->minor)) { + $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]"; } else { - $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor, array()); + $this->_retvalue = "['". $this->yystack[$this->yyidx + 0]->minor ."']"; } } - - #line 504 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r34() - { - if (defined($this->yystack[$this->yyidx + - 2]->minor)) { - $this->_retvalue = $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor, array('value' => $this->yystack[$this->yyidx + - 2]->minor, 'modifierlist' => $this->yystack[$this->yyidx + - 1]->minor)); - } else { - $this->_retvalue = '' . $this->compiler->compileTag($this->yystack[$this->yyidx + - 2]->minor, $this->yystack[$this->yyidx + 0]->minor) . '_retvalue .= $this->compiler->compileTag('private_modifier', array(), array('modifierlist' => $this->yystack[$this->yyidx + - 1]->minor, 'value' => 'ob_get_clean()')) . ';?>'; - } - } - - #line 514 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r35() - { - $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 3]->minor, $this->yystack[$this->yyidx + 0]->minor, array('object_method' => $this->yystack[$this->yyidx + - 1]->minor)); - } - - #line 519 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r36() - { - $this->_retvalue = '' . $this->compiler->compileTag($this->yystack[$this->yyidx + - 4]->minor, $this->yystack[$this->yyidx + 0]->minor, array('object_method' => $this->yystack[$this->yyidx + - 2]->minor)) . '_retvalue .= $this->compiler->compileTag('private_modifier', array(), array('modifierlist' => $this->yystack[$this->yyidx + - 1]->minor, 'value' => 'ob_get_clean()')) . ';?>'; - } - - #line 525 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r37() - { - $tag = trim(substr($this->yystack[$this->yyidx + - 1]->minor, $this->lex->ldel_length)); - $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(), array('if condition' => $this->yystack[$this->yyidx + 0]->minor)); - } - - #line 530 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r38() - { - $tag = trim(substr($this->yystack[$this->yyidx + - 2]->minor, $this->lex->ldel_length)); - $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, $this->yystack[$this->yyidx + 0]->minor, array('if condition' => $this->yystack[$this->yyidx + - 1]->minor)); - } - - #line 535 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r39() - { - $tag = trim(substr($this->yystack[$this->yyidx + - 1]->minor, $this->lex->ldel_length)); - $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(), array('if condition' => $this->yystack[$this->yyidx + 0]->minor)); - } - - #line 546 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r41() - { - $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('start' => $this->yystack[$this->yyidx + - 9]->minor), array('ifexp' => $this->yystack[$this->yyidx + - 6]->minor), array('var' => $this->yystack[$this->yyidx + - 2]->minor), array('step' => $this->yystack[$this->yyidx + - 1]->minor))), 1); - } - - #line 550 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r42() - { - $this->_retvalue = '=' . $this->yystack[$this->yyidx + 0]->minor; - } - - #line 558 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r44() - { - $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('start' => $this->yystack[$this->yyidx + - 3]->minor), array('to' => $this->yystack[$this->yyidx + - 1]->minor))), 0); - } - - #line 562 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r45() - { - $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('start' => $this->yystack[$this->yyidx + - 5]->minor), array('to' => $this->yystack[$this->yyidx + - 3]->minor), array('step' => $this->yystack[$this->yyidx + - 1]->minor))), 0); - } - - #line 567 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r46() - { - $this->_retvalue = $this->compiler->compileTag('foreach', $this->yystack[$this->yyidx + 0]->minor); - } - - #line 572 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r47() - { - $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('from' => $this->yystack[$this->yyidx + - 4]->minor), array('item' => $this->yystack[$this->yyidx + - 1]->minor)))); - } - - #line 576 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r48() - { - $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('from' => $this->yystack[$this->yyidx + - 7]->minor), array('item' => $this->yystack[$this->yyidx + - 1]->minor), array('key' => $this->yystack[$this->yyidx + - 4]->minor)))); - } - - #line 589 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r51() - { - $this->_retvalue = $this->compiler->compileTag('setfilter', array(), array('modifier_list' => array(array_merge(array($this->yystack[$this->yyidx + - 1]->minor), $this->yystack[$this->yyidx + 0]->minor)))); - } - - #line 593 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r52() - { - $this->_retvalue = $this->compiler->compileTag('setfilter', array(), array('modifier_list' => array_merge(array(array_merge(array($this->yystack[$this->yyidx + - 2]->minor), $this->yystack[$this->yyidx + - 1]->minor)), $this->yystack[$this->yyidx + 0]->minor))); - } - - #line 598 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r53() - { - $j = strrpos($this->yystack[$this->yyidx + 0]->minor, '.'); - if ($this->yystack[$this->yyidx + 0]->minor[$j + 1] == 'c') { - // {$smarty.block.child} - $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileChildBlock($this->compiler); - } else { - // {$smarty.block.parent} - $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileParentBlock($this->compiler); - } - } - - #line 611 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r54() - { - $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor . 'close', array()); - } - - #line 615 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r55() - { - $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 1]->minor . 'close', array(), array('modifier_list' => $this->yystack[$this->yyidx + 0]->minor)); - } - - #line 620 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r56() - { - $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 2]->minor . 'close', array(), array('object_method' => $this->yystack[$this->yyidx + 0]->minor)); - } - - #line 624 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r57() - { - $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 3]->minor . 'close', array(), array('object_method' => $this->yystack[$this->yyidx + - 1]->minor, 'modifier_list' => $this->yystack[$this->yyidx + 0]->minor)); - } - - #line 632 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r58() - { - $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor; - $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor; - } - - #line 638 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r59() - { - $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); - } - - #line 643 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r60() - { - $this->_retvalue = array(); - } - - #line 648 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r61() - { - if (defined($this->yystack[$this->yyidx + 0]->minor)) { - $this->_retvalue = array($this->yystack[$this->yyidx + - 2]->minor => $this->yystack[$this->yyidx + 0]->minor); - } else { - $this->_retvalue = array($this->yystack[$this->yyidx + - 2]->minor => "'" . $this->yystack[$this->yyidx + 0]->minor . "'"); - } - } - - #line 656 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r62() - { - $this->_retvalue = array(trim($this->yystack[$this->yyidx + - 1]->minor, " =\n\r\t") => $this->yystack[$this->yyidx + 0]->minor); - } - - #line 664 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r64() - { - $this->_retvalue = "'" . $this->yystack[$this->yyidx + 0]->minor . "'"; - } - - #line 676 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r67() - { - $this->_retvalue = array($this->yystack[$this->yyidx + - 2]->minor => $this->yystack[$this->yyidx + 0]->minor); - } - - #line 689 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r69() - { - $this->yystack[$this->yyidx + - 2]->minor[] = $this->yystack[$this->yyidx + 0]->minor; - $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor; - } - - #line 694 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r70() - { - $this->_retvalue = array('var' => $this->yystack[$this->yyidx + - 2]->minor, 'value' => $this->yystack[$this->yyidx + 0]->minor); - } - - #line 722 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r75() - { - $this->_retvalue = '$_smarty_tpl->getStreamVariable(\'' . $this->yystack[$this->yyidx + - 2]->minor . '://' . $this->yystack[$this->yyidx + 0]->minor . '\')'; - } - - #line 727 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r76() - { - $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . trim($this->yystack[$this->yyidx + - 1]->minor) . $this->yystack[$this->yyidx + 0]->minor; - } - - #line 746 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r80() - { - $this->_retvalue = $this->compiler->compileTag('private_modifier', array(), array('value' => $this->yystack[$this->yyidx + - 1]->minor, 'modifierlist' => $this->yystack[$this->yyidx + 0]->minor)); - } - - #line 752 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r81() - { - $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor; - } - - #line 756 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r82() - { - $this->_retvalue = 'in_array(' . $this->yystack[$this->yyidx + - 2]->minor . ',' . $this->yystack[$this->yyidx + 0]->minor . ')'; - } - - #line 760 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r83() - { - $this->_retvalue = 'in_array(' . $this->yystack[$this->yyidx + - 2]->minor . ',(array)' . $this->yystack[$this->yyidx + 0]->minor . ')'; - } - - #line 768 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r85() - { - $this->_retvalue = '!(' . $this->yystack[$this->yyidx + - 2]->minor . ' % ' . $this->yystack[$this->yyidx + 0]->minor . ')'; - } - - #line 772 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r86() - { - $this->_retvalue = '(' . $this->yystack[$this->yyidx + - 2]->minor . ' % ' . $this->yystack[$this->yyidx + 0]->minor . ')'; - } - - #line 776 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r87() - { - $this->_retvalue = '!(1 & ' . $this->yystack[$this->yyidx + - 1]->minor . ')'; - } - - #line 780 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r88() - { - $this->_retvalue = '(1 & ' . $this->yystack[$this->yyidx + - 1]->minor . ')'; - } - - #line 784 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r89() - { - $this->_retvalue = '!(1 & ' . $this->yystack[$this->yyidx + - 2]->minor . ' / ' . $this->yystack[$this->yyidx + 0]->minor . ')'; - } - - #line 788 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r90() - { - $this->_retvalue = '(1 & ' . $this->yystack[$this->yyidx + - 2]->minor . ' / ' . $this->yystack[$this->yyidx + 0]->minor . ')'; - } - - #line 808 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r95() - { - $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor; - } - - #line 816 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r96() - { - $this->_retvalue = $this->yystack[$this->yyidx + - 6]->minor . ' ? ' . $this->compileVariable("'" . $this->yystack[$this->yyidx + - 2]->minor . "'") . ' : ' . $this->yystack[$this->yyidx + 0]->minor; - } - - #line 820 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r97() - { - $this->_retvalue = $this->yystack[$this->yyidx + - 5]->minor . ' ? ' . $this->yystack[$this->yyidx + - 2]->minor . ' : ' . $this->yystack[$this->yyidx + 0]->minor; - } - - #line 835 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r100() - { - $this->_retvalue = '!' . $this->yystack[$this->yyidx + 0]->minor; - } - - #line 856 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r105() - { - $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . '.' . $this->yystack[$this->yyidx + 0]->minor; - } - - #line 860 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r106() - { - $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor . '.'; - } - - #line 864 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r107() - { - $this->_retvalue = '.' . $this->yystack[$this->yyidx + 0]->minor; - } - - #line 869 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r108() - { - if (defined($this->yystack[$this->yyidx + 0]->minor)) { - $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; - } else { - $this->_retvalue = "'" . $this->yystack[$this->yyidx + 0]->minor . "'"; - } - } - - #line 883 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r110() - { - $this->_retvalue = "(" . $this->yystack[$this->yyidx + - 1]->minor . ")"; - } - - #line 898 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r113() - { - self::$prefix_number ++; - if ($this->yystack[$this->yyidx + - 2]->minor['var'] == '\'smarty\'') { - $this->compiler->prefix_code[] = 'compiler->compileTag('private_special_variable', array(), $this->yystack[$this->yyidx + - 2]->minor['smarty_internal_index']) . ';?>'; - } else { - $this->compiler->prefix_code[] = 'compileVariable($this->yystack[$this->yyidx + - 2]->minor['var']) . $this->yystack[$this->yyidx + - 2]->minor['smarty_internal_index'] . ';?>'; - } - $this->_retvalue = '$_tmp' . self::$prefix_number . '::' . $this->yystack[$this->yyidx + 0]->minor; - } - - #line 910 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r114() - { - self::$prefix_number ++; - $this->compiler->prefix_code[] = '' . $this->yystack[$this->yyidx + - 1]->minor . ''; - $this->_retvalue = '$_tmp' . self::$prefix_number; - } - - #line 926 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r117() - { - if (!in_array(strtolower($this->yystack[$this->yyidx + - 2]->minor), array('self', 'parent')) && (!$this->security || isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + - 2]->minor]) || $this->smarty->security_policy->isTrustedStaticClass($this->yystack[$this->yyidx + - 2]->minor, $this->compiler))) { - if (isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + - 2]->minor])) { - $this->_retvalue = $this->smarty->registered_classes[$this->yystack[$this->yyidx + - 2]->minor] . '::' . $this->yystack[$this->yyidx + 0]->minor; - } else { - $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . '::' . $this->yystack[$this->yyidx + 0]->minor; - } - } else { - $this->compiler->trigger_template_error("static class '" . $this->yystack[$this->yyidx + - 2]->minor . "' is undefined or not allowed by security setting"); - } - } - - #line 960 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r121() - { - if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') { - $smarty_var = $this->compiler->compileTag('private_special_variable', array(), $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']); - $this->_retvalue = $smarty_var; - } else { - // used for array reset,next,prev,end,current - $this->last_variable = $this->yystack[$this->yyidx + 0]->minor['var']; - $this->last_index = $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']; - $this->_retvalue = $this->compileVariable($this->yystack[$this->yyidx + 0]->minor['var']) . $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']; - } - } - - #line 973 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r122() - { - $this->_retvalue = '$_smarty_tpl->tpl_vars[' . $this->yystack[$this->yyidx + - 2]->minor . ']->' . $this->yystack[$this->yyidx + 0]->minor; - } - - #line 983 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r124() - { - $this->_retvalue = '$_smarty_tpl->getConfigVariable( \'' . $this->yystack[$this->yyidx + - 1]->minor . '\')'; - } - - #line 987 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r125() - { - $this->_retvalue = '(is_array($tmp = $_smarty_tpl->getConfigVariable( \'' . $this->yystack[$this->yyidx + - 2]->minor . '\')) ? $tmp' . $this->yystack[$this->yyidx + 0]->minor . ' :null)'; - } - - #line 991 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r126() - { - $this->_retvalue = '$_smarty_tpl->getConfigVariable( ' . $this->yystack[$this->yyidx + - 1]->minor . ')'; - } - - #line 995 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r127() - { - $this->_retvalue = '(is_array($tmp = $_smarty_tpl->getConfigVariable( ' . $this->yystack[$this->yyidx + - 2]->minor . ')) ? $tmp' . $this->yystack[$this->yyidx + 0]->minor . ' : null)'; - } - - #line 999 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r128() - { - $this->_retvalue = array('var' => $this->yystack[$this->yyidx + - 1]->minor, 'smarty_internal_index' => $this->yystack[$this->yyidx + 0]->minor); - } - - #line 1012 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r130() - { - return; - } - - #line 1018 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r131() - { - $this->_retvalue = '[' . $this->compileVariable($this->yystack[$this->yyidx + 0]->minor) . ']'; - } - - #line 1022 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r132() - { - $this->_retvalue = '[' . $this->compileVariable($this->yystack[$this->yyidx + - 2]->minor) . '->' . $this->yystack[$this->yyidx + 0]->minor . ']'; - } - - #line 1026 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r133() - { - if (defined($this->yystack[$this->yyidx + 0]->minor)) { - $this->_retvalue = "[" . $this->yystack[$this->yyidx + 0]->minor . "]"; - } else { - $this->_retvalue = "['" . $this->yystack[$this->yyidx + 0]->minor . "']"; - } - } - - #line 1034 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r134() - { - $this->_retvalue = "[" . $this->yystack[$this->yyidx + 0]->minor . "]"; - } - - #line 1039 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r135() - { - $this->_retvalue = "[" . $this->yystack[$this->yyidx + - 1]->minor . "]"; - } - - #line 1044 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r136() - { - $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' . $this->yystack[$this->yyidx + - 1]->minor . '\'][\'index\']') . ']'; - } - - #line 1048 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r137() - { - $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' . $this->yystack[$this->yyidx + - 3]->minor . '\'][\'' . $this->yystack[$this->yyidx + - 1]->minor . '\']') . ']'; - } - - #line 1058 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r139() - { - $this->_retvalue = '[]'; - } - - #line 1072 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r141() - { - $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor . '.' . $this->yystack[$this->yyidx + 0]->minor; - } - - #line 1077 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r142() - { - $this->_retvalue = '\'' . $this->yystack[$this->yyidx + 0]->minor . '\''; - } - - #line 1082 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r143() - { - $this->_retvalue = '(' . $this->yystack[$this->yyidx + - 1]->minor . ')'; - } - - #line 1089 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r144() - { - if ($this->yystack[$this->yyidx + - 1]->minor['var'] == '\'smarty\'') { - $this->_retvalue = $this->compiler->compileTag('private_special_variable', array(), $this->yystack[$this->yyidx + - 1]->minor['smarty_internal_index']) . $this->yystack[$this->yyidx + 0]->minor; - } else { - $this->_retvalue = $this->compileVariable($this->yystack[$this->yyidx + - 1]->minor['var']) . $this->yystack[$this->yyidx + - 1]->minor['smarty_internal_index'] . $this->yystack[$this->yyidx + 0]->minor; - } - } - - #line 1098 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r145() - { - $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; - } - - #line 1103 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r146() - { - $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor; - } - - #line 1108 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r147() - { - if ($this->security && substr($this->yystack[$this->yyidx + - 1]->minor, 0, 1) == '_') { - $this->compiler->trigger_template_error(self::Err1); - } - $this->_retvalue = '->' . $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor; - } - - #line 1115 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r148() - { - if ($this->security) { - $this->compiler->trigger_template_error(self::Err2); - } - $this->_retvalue = '->{' . $this->compileVariable($this->yystack[$this->yyidx + - 1]->minor) . $this->yystack[$this->yyidx + 0]->minor . '}'; - } - - #line 1122 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r149() - { - if ($this->security) { - $this->compiler->trigger_template_error(self::Err2); - } - $this->_retvalue = '->{' . $this->yystack[$this->yyidx + - 2]->minor . $this->yystack[$this->yyidx + 0]->minor . '}'; - } - - #line 1129 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r150() - { - if ($this->security) { - $this->compiler->trigger_template_error(self::Err2); - } - $this->_retvalue = '->{\'' . $this->yystack[$this->yyidx + - 4]->minor . '\'.' . $this->yystack[$this->yyidx + - 2]->minor . $this->yystack[$this->yyidx + 0]->minor . '}'; - } - - #line 1137 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r151() - { - $this->_retvalue = '->' . $this->yystack[$this->yyidx + 0]->minor; - } - - #line 1145 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r152() - { - if (!$this->security || $this->smarty->security_policy->isTrustedPhpFunction($this->yystack[$this->yyidx + - 3]->minor, $this->compiler)) { - if (strcasecmp($this->yystack[$this->yyidx + - 3]->minor, 'isset') === 0 || strcasecmp($this->yystack[$this->yyidx + - 3]->minor, 'empty') === 0 || strcasecmp($this->yystack[$this->yyidx + - 3]->minor, 'array') === 0 || is_callable($this->yystack[$this->yyidx + - 3]->minor)) { - $func_name = strtolower($this->yystack[$this->yyidx + - 3]->minor); - if ($func_name == 'isset') { - if (count($this->yystack[$this->yyidx + - 1]->minor) == 0) { - $this->compiler->trigger_template_error('Illegal number of paramer in "isset()"'); - } - $par = implode(',', $this->yystack[$this->yyidx + - 1]->minor); - if (strncasecmp($par, '$_smarty_tpl->getConfigVariable', strlen('$_smarty_tpl->getConfigVariable')) === 0) { - self::$prefix_number ++; - $this->compiler->prefix_code[] = ''; - $isset_par = '$_tmp' . self::$prefix_number; - } else { - $isset_par = str_replace("')->value", "',null,true,false)->value", $par); - } - $this->_retvalue = $this->yystack[$this->yyidx + - 3]->minor . "(" . $isset_par . ")"; - } elseif (in_array($func_name, array('empty', 'reset', 'current', 'end', 'prev', 'next'))) { - if (count($this->yystack[$this->yyidx + - 1]->minor) != 1) { - $this->compiler->trigger_template_error('Illegal number of paramer in "empty()"'); - } - if ($func_name == 'empty') { - $this->_retvalue = $func_name . '(' . str_replace("')->value", "',null,true,false)->value", $this->yystack[$this->yyidx + - 1]->minor[0]) . ')'; - } else { - $this->_retvalue = $func_name . '(' . $this->yystack[$this->yyidx + - 1]->minor[0] . ')'; - } +#line 1034 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r134(){ + $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]"; + } +#line 1039 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r135(){ + $this->_retvalue = "[". $this->yystack[$this->yyidx + -1]->minor ."]"; + } +#line 1044 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r136(){ + $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']'; + } +#line 1048 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r137(){ + $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']'; + } +#line 1058 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r139(){ + $this->_retvalue = '[]'; + } +#line 1072 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r141(){ + $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; + } +#line 1077 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r142(){ + $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; + } +#line 1082 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r143(){ + $this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')'; + } +#line 1089 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r144(){ + if ($this->yystack[$this->yyidx + -1]->minor['var'] == '\'smarty\'') { + $this->_retvalue = $this->compiler->compileTag('private_special_variable',array(),$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']).$this->yystack[$this->yyidx + 0]->minor; + } else { + $this->_retvalue = $this->compileVariable($this->yystack[$this->yyidx + -1]->minor['var']).$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index'].$this->yystack[$this->yyidx + 0]->minor; + } + } +#line 1098 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r145(){ + $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; + } +#line 1103 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r146(){ + $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; + } +#line 1108 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r147(){ + if ($this->security && substr($this->yystack[$this->yyidx + -1]->minor,0,1) == '_') { + $this->compiler->trigger_template_error (self::Err1); + } + $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; + } +#line 1115 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r148(){ + if ($this->security) { + $this->compiler->trigger_template_error (self::Err2); + } + $this->_retvalue = '->{'.$this->compileVariable($this->yystack[$this->yyidx + -1]->minor).$this->yystack[$this->yyidx + 0]->minor.'}'; + } +#line 1122 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r149(){ + if ($this->security) { + $this->compiler->trigger_template_error (self::Err2); + } + $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; + } +#line 1129 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r150(){ + if ($this->security) { + $this->compiler->trigger_template_error (self::Err2); + } + $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; + } +#line 1137 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r151(){ + $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor; + } +#line 1145 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r152(){ + if (!$this->security || $this->smarty->security_policy->isTrustedPhpFunction($this->yystack[$this->yyidx + -3]->minor, $this->compiler)) { + if (strcasecmp($this->yystack[$this->yyidx + -3]->minor,'isset') === 0 || strcasecmp($this->yystack[$this->yyidx + -3]->minor,'empty') === 0 || strcasecmp($this->yystack[$this->yyidx + -3]->minor,'array') === 0 || is_callable($this->yystack[$this->yyidx + -3]->minor)) { + $func_name = strtolower($this->yystack[$this->yyidx + -3]->minor); + if ($func_name == 'isset') { + if (count($this->yystack[$this->yyidx + -1]->minor) == 0) { + $this->compiler->trigger_template_error ('Illegal number of paramer in "isset()"'); + } + $par = implode(',',$this->yystack[$this->yyidx + -1]->minor); + if (strncasecmp($par,'$_smarty_tpl->getConfigVariable',strlen('$_smarty_tpl->getConfigVariable')) === 0) { + self::$prefix_number++; + $this->compiler->prefix_code[] = ''; + $isset_par = '$_tmp'.self::$prefix_number; } else { - $this->_retvalue = $this->yystack[$this->yyidx + - 3]->minor . "(" . implode(',', $this->yystack[$this->yyidx + - 1]->minor) . ")"; + $isset_par=str_replace("')->value","',null,true,false)->value",$par); + } + $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $isset_par .")"; + } elseif (in_array($func_name,array('empty','reset','current','end','prev','next'))){ + if (count($this->yystack[$this->yyidx + -1]->minor) != 1) { + $this->compiler->trigger_template_error ('Illegal number of paramer in "empty()"'); + } + if ($func_name == 'empty') { + $this->_retvalue = $func_name.'('.str_replace("')->value","',null,true,false)->value",$this->yystack[$this->yyidx + -1]->minor[0]).')'; + } else { + $this->_retvalue = $func_name.'('.$this->yystack[$this->yyidx + -1]->minor[0].')'; } } else { - $this->compiler->trigger_template_error("unknown function \"" . $this->yystack[$this->yyidx + - 3]->minor . "\""); + $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". implode(',',$this->yystack[$this->yyidx + -1]->minor) .")"; } + } else { + $this->compiler->trigger_template_error ("unknown function \"" . $this->yystack[$this->yyidx + -3]->minor . "\""); } } - - #line 1184 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r153() - { - if ($this->security && substr($this->yystack[$this->yyidx + - 3]->minor, 0, 1) == '_') { - $this->compiler->trigger_template_error(self::Err1); - } - $this->_retvalue = $this->yystack[$this->yyidx + - 3]->minor . "(" . implode(',', $this->yystack[$this->yyidx + - 1]->minor) . ")"; } - - #line 1191 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r154() - { - if ($this->security) { - $this->compiler->trigger_template_error(self::Err2); - } - self::$prefix_number ++; - $this->compiler->prefix_code[] = 'compileVariable("'" . $this->yystack[$this->yyidx + - 3]->minor . "'") . ';?>'; - $this->_retvalue = '$_tmp' . self::$prefix_number . '(' . implode(',', $this->yystack[$this->yyidx + - 1]->minor) . ')'; +#line 1184 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r153(){ + if ($this->security && substr($this->yystack[$this->yyidx + -3]->minor,0,1) == '_') { + $this->compiler->trigger_template_error (self::Err1); } - - #line 1202 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r155() - { - $this->_retvalue = array_merge($this->yystack[$this->yyidx + - 2]->minor, array($this->yystack[$this->yyidx + 0]->minor)); + $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". implode(',',$this->yystack[$this->yyidx + -1]->minor) .")"; } - - #line 1219 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r158() - { - $this->_retvalue = array_merge($this->yystack[$this->yyidx + - 2]->minor, array(array_merge($this->yystack[$this->yyidx + - 1]->minor, $this->yystack[$this->yyidx + 0]->minor))); +#line 1191 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r154(){ + if ($this->security) { + $this->compiler->trigger_template_error (self::Err2); } - - #line 1223 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r159() - { - $this->_retvalue = array(array_merge($this->yystack[$this->yyidx + - 1]->minor, $this->yystack[$this->yyidx + 0]->minor)); + self::$prefix_number++; + $this->compiler->prefix_code[] = 'compileVariable("'".$this->yystack[$this->yyidx + -3]->minor."'").';?>'; + $this->_retvalue = '$_tmp'.self::$prefix_number.'('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')'; } - - #line 1231 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r161() - { - $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); +#line 1202 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r155(){ + $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array($this->yystack[$this->yyidx + 0]->minor)); } - - #line 1239 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r162() - { - $this->_retvalue = array_merge($this->yystack[$this->yyidx + - 1]->minor, $this->yystack[$this->yyidx + 0]->minor); +#line 1219 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r158(){ + $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor))); } - - #line 1273 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r169() - { - $this->_retvalue = '$' . $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor; +#line 1223 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r159(){ + $this->_retvalue = array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor)); } - - #line 1278 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r170() - { - $this->_retvalue = '$' . $this->yystack[$this->yyidx + - 2]->minor . $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor; +#line 1231 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r161(){ + $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); } - - #line 1284 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r171() - { - $this->_retvalue = '=='; +#line 1239 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r162(){ + $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); } - - #line 1288 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r172() - { - $this->_retvalue = '!='; +#line 1258 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r166(){ + $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '', 'method'); } - - #line 1292 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r173() - { - $this->_retvalue = '>'; +#line 1263 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r167(){ + $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'method'); } - - #line 1296 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r174() - { - $this->_retvalue = '<'; +#line 1268 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r168(){ + $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, ''); } - - #line 1300 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r175() - { - $this->_retvalue = '>='; +#line 1273 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r169(){ + $this->_retvalue = array('$'.$this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'property'); } - - #line 1304 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r176() - { - $this->_retvalue = '<='; +#line 1278 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r170(){ + $this->_retvalue = array('$'.$this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor, 'property'); } - - #line 1308 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r177() - { - $this->_retvalue = '==='; +#line 1284 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r171(){ + $this->_retvalue = '=='; } - - #line 1312 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r178() - { - $this->_retvalue = '!=='; +#line 1288 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r172(){ + $this->_retvalue = '!='; } - - #line 1316 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r179() - { - $this->_retvalue = '%'; +#line 1292 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r173(){ + $this->_retvalue = '>'; } - - #line 1320 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r180() - { - $this->_retvalue = '&&'; +#line 1296 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r174(){ + $this->_retvalue = '<'; } - - #line 1324 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r181() - { - $this->_retvalue = '||'; +#line 1300 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r175(){ + $this->_retvalue = '>='; } - - #line 1328 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r182() - { - $this->_retvalue = ' XOR '; +#line 1304 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r176(){ + $this->_retvalue = '<='; } - - #line 1335 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r183() - { - $this->_retvalue = 'array(' . $this->yystack[$this->yyidx + - 1]->minor . ')'; +#line 1308 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r177(){ + $this->_retvalue = '==='; } - - #line 1343 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r185() - { - $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . ',' . $this->yystack[$this->yyidx + 0]->minor; +#line 1312 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r178(){ + $this->_retvalue = '!=='; } - - #line 1351 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r187() - { - $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . '=>' . $this->yystack[$this->yyidx + 0]->minor; +#line 1316 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r179(){ + $this->_retvalue = '%'; } - - #line 1355 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r188() - { - $this->_retvalue = '\'' . $this->yystack[$this->yyidx + - 2]->minor . '\'=>' . $this->yystack[$this->yyidx + 0]->minor; +#line 1320 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r180(){ + $this->_retvalue = '&&'; } - - #line 1367 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r190() - { - $this->_retvalue = "''"; +#line 1324 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r181(){ + $this->_retvalue = '||'; } - - #line 1371 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r191() - { - $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor->to_smarty_php(); +#line 1328 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r182(){ + $this->_retvalue = ' XOR '; } - - #line 1376 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r192() - { - $this->yystack[$this->yyidx + - 1]->minor->append_subtree($this->yystack[$this->yyidx + 0]->minor); - $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor; +#line 1335 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r183(){ + $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')'; } - - #line 1381 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r193() - { - $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[$this->yyidx + 0]->minor); +#line 1343 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r185(){ + $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor; } - - #line 1385 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r194() - { - $this->_retvalue = new Smarty_Internal_ParseTree_Code($this, '(string)' . $this->yystack[$this->yyidx + - 1]->minor); +#line 1351 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r187(){ + $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor; } - - #line 1393 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r196() - { - $this->_retvalue = new Smarty_Internal_ParseTree_Code($this, '(string)$_smarty_tpl->tpl_vars[\'' . substr($this->yystack[$this->yyidx + 0]->minor, 1) . '\']->value'); +#line 1355 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r188(){ + $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor; } - - #line 1401 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r198() - { - $this->_retvalue = new Smarty_Internal_ParseTree_Code($this, '(string)(' . $this->yystack[$this->yyidx + - 1]->minor . ')'); +#line 1367 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r190(){ + $this->_retvalue = "''"; } - - #line 1405 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r199() - { - $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[$this->yyidx + - 1]->minor); +#line 1371 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r191(){ + $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php(); } - - #line 1409 "../smarty/lexer/smarty_internal_templateparser.y" - function yy_r200() - { - $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this, $this->yystack[$this->yyidx + 0]->minor); +#line 1376 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r192(){ + $this->yystack[$this->yyidx + -1]->minor->append_subtree($this->yystack[$this->yyidx + 0]->minor); + $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; + } +#line 1381 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r193(){ + $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[$this->yyidx + 0]->minor); + } +#line 1385 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r194(){ + $this->_retvalue = new Smarty_Internal_ParseTree_Code($this, '(string)'.$this->yystack[$this->yyidx + -1]->minor); + } +#line 1393 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r196(){ + $this->_retvalue = new Smarty_Internal_ParseTree_Code($this, '(string)$_smarty_tpl->tpl_vars[\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\']->value'); + } +#line 1401 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r198(){ + $this->_retvalue = new Smarty_Internal_ParseTree_Code($this, '(string)('.$this->yystack[$this->yyidx + -1]->minor.')'); + } +#line 1405 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r199(){ + $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[$this->yyidx + -1]->minor); + } +#line 1409 "../smarty/lexer/smarty_internal_templateparser.y" + function yy_r200(){ + $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this, $this->yystack[$this->yyidx + 0]->minor); } private $_retvalue; @@ -3371,11 +3086,10 @@ class Smarty_Internal_Templateparser { $yymsp = $this->yystack[$this->yyidx]; if ($this->yyTraceFILE && $yyruleno >= 0 - && $yyruleno < count(self::$yyRuleName) - ) { + && $yyruleno < count(self::$yyRuleName)) { fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", - $this->yyTracePrompt, $yyruleno, - self::$yyRuleName[$yyruleno]); + $this->yyTracePrompt, $yyruleno, + self::$yyRuleName[$yyruleno]); } $this->_retvalue = $yy_lefthand_side = null; @@ -3388,14 +3102,14 @@ class Smarty_Internal_Templateparser $yygoto = self::$yyRuleInfo[$yyruleno][0]; $yysize = self::$yyRuleInfo[$yyruleno][1]; $this->yyidx -= $yysize; - for ($i = $yysize; $i; $i --) { + for ($i = $yysize; $i; $i--) { // pop all of the right-hand side parameters array_pop($this->yystack); } $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto); if ($yyact < self::YYNSTATE) { if (!$this->yyTraceFILE && $yysize) { - $this->yyidx ++; + $this->yyidx++; $x = new TP_yyStackEntry; $x->stateno = $yyact; $x->major = $yygoto; @@ -3413,34 +3127,32 @@ class Smarty_Internal_Templateparser { if ($this->yyTraceFILE) { fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt); - } - while ($this->yyidx >= 0) { + } while ($this->yyidx >= 0) { $this->yy_pop_parser_stack(); } } public function yy_syntax_error($yymajor, $TOKEN) { - #line 206 "../smarty/lexer/smarty_internal_templateparser.y" +#line 206 "../smarty/lexer/smarty_internal_templateparser.y" - $this->internalError = true; - $this->yymajor = $yymajor; - $this->compiler->trigger_template_error(); + $this->internalError = true; + $this->yymajor = $yymajor; + $this->compiler->trigger_template_error(); } public function yy_accept() { if ($this->yyTraceFILE) { fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt); - } - while ($this->yyidx >= 0) { + } while ($this->yyidx >= 0) { $this->yy_pop_parser_stack(); } - #line 199 "../smarty/lexer/smarty_internal_templateparser.y" +#line 199 "../smarty/lexer/smarty_internal_templateparser.y" - $this->successful = !$this->internalError; - $this->internalError = false; - $this->retvalue = $this->_retvalue; + $this->successful = !$this->internalError; + $this->internalError = false; + $this->retvalue = $this->_retvalue; } public function doParse($yymajor, $yytokenvalue) @@ -3449,31 +3161,30 @@ class Smarty_Internal_Templateparser if ($this->yyidx === null || $this->yyidx < 0) { $this->yyidx = 0; - $this->yyerrcnt = - 1; + $this->yyerrcnt = -1; $x = new TP_yyStackEntry; $x->stateno = 0; $x->major = 0; $this->yystack = array(); array_push($this->yystack, $x); } - $yyendofinput = ($yymajor == 0); + $yyendofinput = ($yymajor==0); if ($this->yyTraceFILE) { fprintf($this->yyTraceFILE, "%sInput %s\n", - $this->yyTracePrompt, $this->yyTokenName[$yymajor]); + $this->yyTracePrompt, $this->yyTokenName[$yymajor]); } do { $yyact = $this->yy_find_shift_action($yymajor); if ($yymajor < self::YYERRORSYMBOL && - !$this->yy_is_expected_token($yymajor) - ) { + !$this->yy_is_expected_token($yymajor)) { // force a syntax error $yyact = self::YY_ERROR_ACTION; } if ($yyact < self::YYNSTATE) { $this->yy_shift($yyact, $yymajor, $yytokenvalue); - $this->yyerrcnt --; + $this->yyerrcnt--; if ($yyendofinput && $this->yyidx >= 0) { $yymajor = 0; } else { @@ -3484,7 +3195,7 @@ class Smarty_Internal_Templateparser } elseif ($yyact == self::YY_ERROR_ACTION) { if ($this->yyTraceFILE) { fprintf($this->yyTraceFILE, "%sSyntax Error!\n", - $this->yyTracePrompt); + $this->yyTracePrompt); } if (self::YYERRORSYMBOL) { if ($this->yyerrcnt < 0) { @@ -3494,18 +3205,18 @@ class Smarty_Internal_Templateparser if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) { if ($this->yyTraceFILE) { fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", - $this->yyTracePrompt, $this->yyTokenName[$yymajor]); + $this->yyTracePrompt, $this->yyTokenName[$yymajor]); } $this->yy_destructor($yymajor, $yytokenvalue); $yymajor = self::YYNOCODE; } else { while ($this->yyidx >= 0 && - $yymx != self::YYERRORSYMBOL && - ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE - ) { + $yymx != self::YYERRORSYMBOL && + ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE + ){ $this->yy_pop_parser_stack(); } - if ($this->yyidx < 0 || $yymajor == 0) { + if ($this->yyidx < 0 || $yymajor==0) { $this->yy_destructor($yymajor, $yytokenvalue); $this->yy_parse_failed(); $yymajor = self::YYNOCODE; diff --git a/libs/sysplugins/smarty_security.php b/libs/sysplugins/smarty_security.php index 6da19c29..64354f90 100644 --- a/libs/sysplugins/smarty_security.php +++ b/libs/sysplugins/smarty_security.php @@ -62,6 +62,34 @@ class Smarty_Security * @var array */ public $static_classes = array(); + + /** + * This is an nested array of trusted classes and static methods. + * If empty access to all static classes and methods is allowed. + * Format: + * array ( + * 'class_1' => array('method_1', 'method_2'), // allowed methods listed + * 'class_2' => array(), // all methods of class allowed + * ) + * If set to null none is allowed. + * + * @var array + */ + public $trusted_static_methods = array(); + + /** + * This is an array of trusted static properties. + * If empty access to all static classes and properties is allowed. + * Format: + * array ( + * 'class_1' => array('prop_1', 'prop_2'), // allowed properties listed + * 'class_2' => array(), // all properties of class allowed + * ) + * If set to null none is allowed. + * + * @var array + */ + public $trusted_static_properties = array(); /** * This is an array of trusted PHP functions. * If empty all functions are allowed. @@ -238,6 +266,46 @@ class Smarty_Security return false; // should not, but who knows what happens to the compiler in the future? } + /** + * Check if static class method/property is trusted. + * + * @param string $class_name + * @param string $params + * @param object $compiler compiler object + * + * @return boolean true if class method is trusted + * @throws SmartyCompilerException if static class method is not trusted + */ + public function isTrustedStaticClassAccess($class_name, $params, $compiler) + { + if (!isset($params[2])) { + // fall back + return $this->isTrustedStaticClass($class_name, $compiler); + } + if ($params[2] == 'method') { + $allowed = $this->trusted_static_methods; + $name = substr($params[0], 0, strpos($params[0], '(')); + } else { + $allowed = $this->trusted_static_properties; + // strip '$' + $name = substr($params[0], 1); + } + if (isset($allowed)) { + if (empty($allowed)) { + // fall back + return $this->isTrustedStaticClass($class_name, $compiler); + } + if (isset($allowed[$class_name]) + && (empty($allowed[$class_name]) + || in_array($name, $allowed[$class_name])) + ) { + return true; + } + } + $compiler->trigger_template_error("access to static class '{$class_name}' {$params[2]} '{$name}' not allowed by security setting"); + return false; // should not, but who knows what happens to the compiler in the future? + } + /** * Check if PHP modifier is trusted. * @@ -290,6 +358,7 @@ class Smarty_Security return false; // should not, but who knows what happens to the compiler in the future? } + /** * Check if special $smarty variable is trusted. * @@ -521,8 +590,9 @@ class Smarty_Security * * @throws SmartyException */ - public function startTemplate($template) { - if ($this->max_template_nesting > 0 && $this->_current_template_nesting++ >= $this->max_template_nesting) { + public function startTemplate($template) + { + if ($this->max_template_nesting > 0 && $this->_current_template_nesting ++ >= $this->max_template_nesting) { throw new SmartyException("maximum template nesting level of '{$this->max_template_nesting}' exceeded when calling '{$template->template_resource}'"); } } @@ -532,7 +602,8 @@ class Smarty_Security * * @param $template */ - public function exitTemplate($template) { + public function exitTemplate($template) + { if ($this->max_template_nesting > 0) { $this->_current_template_nesting --; }