From a34fd724495b71085bc5b088c9db4b8d6a08cf8a Mon Sep 17 00:00:00 2001
From: Ian <aristophian@googlemail.com>
Date: Wed, 26 Sep 2012 08:59:16 +0200
Subject: [PATCH] Smarty 3.1.12 has been released.

3.1.12 has minor bug fixes and improvements. Smarty also received a security fix regarding the escapement of Smarty error messages. ie. an unrealistic but testable case where you call $smarty->display($_GET['id']); and the GET value is passed directly to the error message. To resolve any probable concern, error messages are now escaped.

For details please read the Smarty 3.1.12 Change Log.
---
 bundled-libs/Smarty/README                    |    2 +-
 bundled-libs/Smarty/change_log.txt            |   48 +-
 bundled-libs/Smarty/libs/Smarty.class.php     |   19 +-
 .../Smarty/libs/plugins/modifier.escape.php   |    8 +-
 .../libs/plugins/modifiercompiler.escape.php  |    8 +-
 .../smarty_internal_cacheresource_file.php    |    2 +-
 .../smarty_internal_compile_assign.php        |    6 +-
 .../smarty_internal_compile_block.php         |   12 +-
 .../smarty_internal_compile_extends.php       |   11 +-
 ...ernal_compile_private_special_variable.php |    6 +-
 .../sysplugins/smarty_internal_config.php     |    5 +-
 .../smarty_internal_resource_extends.php      |   11 +-
 .../sysplugins/smarty_internal_template.php   |   12 +-
 .../smarty_internal_templatecompilerbase.php  |    5 +-
 .../smarty_internal_templatelexer.php         |   25 +-
 .../smarty_internal_templateparser.php        | 1956 +++++++++--------
 .../sysplugins/smarty_internal_utility.php    |    6 +-
 .../libs/sysplugins/smarty_resource.php       |   19 +-
 18 files changed, 1124 insertions(+), 1037 deletions(-)

diff --git a/bundled-libs/Smarty/README b/bundled-libs/Smarty/README
index 16746282..8aadce5a 100644
--- a/bundled-libs/Smarty/README
+++ b/bundled-libs/Smarty/README
@@ -1,4 +1,4 @@
-Smarty 3.1.11
+Smarty 3.1.12
 
 Author: Monte Ohrt <monte at ohrt dot com >
 Author: Uwe Tews
diff --git a/bundled-libs/Smarty/change_log.txt b/bundled-libs/Smarty/change_log.txt
index 27c506db..0abc4611 100644
--- a/bundled-libs/Smarty/change_log.txt
+++ b/bundled-libs/Smarty/change_log.txt
@@ -1,5 +1,49 @@
-===== trunk  =====
-===== Smarty-3.1.11  =====
+===== Smarty-3.1.12 =====
+14.09.2012
+- bugfix template inheritance failed to compile with delimiters {/ and /} (Forum Topic 23008)
+
+11.09.2012
+- bugfix escape Smarty exception messages to avoid possible script execution
+
+10.09.2012
+- bugfix tag option flags and shorttag attributes did not work when rdel started with '=' (Forum Topic 22979)
+
+31.08.2012
+- bugfix resolving relative paths broke in some circumstances (Issue #114)
+
+22.08.2012
+- bugfix test MBString availability through mb_split, as it could've been compiled without regex support (--enable-mbregex).
+  Either we get MBstring's full package, or we pretend it's not there at all.
+
+21.08.2012
+- bugfix $auto_literal = false did not work with { block} tags in child templates 
+  (problem was reintroduced after fix in 3.1.7)(Forum Topic 20581)
+
+17.08.2012
+- bugfix compiled code of nocache sections could contain wrong escaping (Forum Topic 22810)
+
+15.08.2012
+- bugfix template inheritance did produce wrong code if subtemplates with {block} was
+  included several times (from smarty-developers forum)
+
+14.08.2012
+- bugfix PHP5.2 compatibility compromised by SplFileInfo::getBasename() (Issue 110)
+
+01.08.2012
+- bugfix avoid PHP error on $smarty->configLoad(...) with invalid section specification (Forum Topic 22608)
+
+30.07.2012
+-bugfix {assign} in a nocache section should not overwrite existing variable values 
+   during compilation (issue 109)
+   
+28.07.2012
+- bugfix array access of config variables did not work (Forum Topic 22527)
+
+19.07.2012
+- bugfix the default plugin handler did create wrong compiled code for static class methods
+  from external script files (issue 108)
+  
+===== Smarty-3.1.11 =====
 30.06.2012
 - bugfix {block.. hide} did not work as nested child (Forum Topic 22216)
 
diff --git a/bundled-libs/Smarty/libs/Smarty.class.php b/bundled-libs/Smarty/libs/Smarty.class.php
index f776aaf7..4a914aba 100644
--- a/bundled-libs/Smarty/libs/Smarty.class.php
+++ b/bundled-libs/Smarty/libs/Smarty.class.php
@@ -2,7 +2,7 @@
 /**
  * Project:     Smarty: the PHP compiling template engine
  * File:        Smarty.class.php
- * SVN:         $Id: Smarty.class.php 4614 2012-05-24 15:13:19Z rodneyrehm $
+ * SVN:         $Id: Smarty.class.php 4658 2012-09-11 16:23:30Z uwe.tews@googlemail.com $
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -28,7 +28,7 @@
  * @author Uwe Tews
  * @author Rodney Rehm
  * @package Smarty
- * @version 3.1-DEV
+ * @version 3.1.12
  */
 
 /**
@@ -57,7 +57,7 @@ if (!defined('SMARTY_PLUGINS_DIR')) {
     define('SMARTY_PLUGINS_DIR', SMARTY_DIR . 'plugins' . DS);
 }
 if (!defined('SMARTY_MBSTRING')) {
-    define('SMARTY_MBSTRING', function_exists('mb_strlen'));
+    define('SMARTY_MBSTRING', function_exists('mb_split'));
 }
 if (!defined('SMARTY_RESOURCE_CHAR_SET')) {
     // UTF-8 can only be done properly when mbstring is available!
@@ -113,7 +113,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
     /**
      * smarty version
      */
-    const SMARTY_VERSION = 'Smarty-3.1.11';
+    const SMARTY_VERSION = 'Smarty-3.1.12';
 
     /**
      * define variable scopes
@@ -189,12 +189,12 @@ class Smarty extends Smarty_Internal_TemplateBase {
      * Flag denoting if PCRE should run in UTF-8 mode
      */
     public static $_UTF8_MODIFIER = 'u';
-    
+
     /**
      * Flag denoting if operating system is windows
      */
     public static $_IS_WINDOWS = false;
-    
+
     /**#@+
      * variables
      */
@@ -1281,7 +1281,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
         }
         // plugin filename is expected to be: [type].[name].php
         $_plugin_filename = "{$_name_parts[1]}.{$_name_parts[2]}.php";
-        
+
         $_stream_resolve_include_path = function_exists('stream_resolve_include_path');
 
         // loop through plugin dirs and find the plugin
@@ -1302,7 +1302,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
                     } else {
                         $file = Smarty_Internal_Get_Include_Path::getIncludePath($file);
                     }
-                    
+
                     if ($file !== false) {
                         require_once($file);
                         return $file;
@@ -1481,6 +1481,9 @@ if (Smarty::$_CHARSET !== 'UTF-8') {
  * @package Smarty
  */
 class SmartyException extends Exception {
+    public function __construct($message) {
+        $this->message = htmlentities($message);
+    }
 }
 
 /**
diff --git a/bundled-libs/Smarty/libs/plugins/modifier.escape.php b/bundled-libs/Smarty/libs/plugins/modifier.escape.php
index 32d185fc..5ca8e779 100644
--- a/bundled-libs/Smarty/libs/plugins/modifier.escape.php
+++ b/bundled-libs/Smarty/libs/plugins/modifier.escape.php
@@ -39,10 +39,10 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
                 return htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode);
             } else {
                 if ($double_encode) {
-                    // php <5.3.2 - only handle double encoding
+                    // php <5.2.3 - only handle double encoding
                     return htmlspecialchars($string, ENT_QUOTES, $char_set);
                 } else {
-                    // php <5.3.2 - prevent double encoding
+                    // php <5.2.3 - prevent double encoding
                     $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
                     $string = htmlspecialchars($string, ENT_QUOTES, $char_set);
                     $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
@@ -58,10 +58,10 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
                     $string = htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode);
                 } else {
                     if ($double_encode) {
-                        // php <5.3.2 - only handle double encoding
+                        // php <5.2.3 - only handle double encoding
                         $string = htmlspecialchars($string, ENT_QUOTES, $char_set);
                     } else {
-                        // php <5.3.2 - prevent double encoding
+                        // php <5.2.3 - prevent double encoding
                         $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
                         $string = htmlspecialchars($string, ENT_QUOTES, $char_set);
                         $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
diff --git a/bundled-libs/Smarty/libs/plugins/modifiercompiler.escape.php b/bundled-libs/Smarty/libs/plugins/modifiercompiler.escape.php
index 428fab8a..d38d1297 100644
--- a/bundled-libs/Smarty/libs/plugins/modifiercompiler.escape.php
+++ b/bundled-libs/Smarty/libs/plugins/modifiercompiler.escape.php
@@ -57,7 +57,7 @@ function smarty_modifiercompiler_escape($params, $compiler)
             case 'htmlall':
                 if (Smarty::$_MBSTRING) {
                     if ($_double_encode) {
-                        // php >=5.3.2 - go native
+                        // php >=5.2.3 - go native
                         return 'mb_convert_encoding(htmlspecialchars('
                             . $params[0] .', ENT_QUOTES, '
                             . var_export($char_set, true) . ', '
@@ -65,7 +65,7 @@ function smarty_modifiercompiler_escape($params, $compiler)
                             . '), "HTML-ENTITIES", '
                             . var_export($char_set, true) . ')';
                     } else if ($double_encode) {
-                        // php <5.3.2 - only handle double encoding
+                        // php <5.2.3 - only handle double encoding
                         return 'mb_convert_encoding(htmlspecialchars('
                             . $params[0] .', ENT_QUOTES, '
                             . var_export($char_set, true)
@@ -78,13 +78,13 @@ function smarty_modifiercompiler_escape($params, $compiler)
 
                 // no MBString fallback
                 if ($_double_encode) {
-                    // php >=5.3.2 - go native
+                    // php >=5.2.3 - go native
                     return 'htmlentities('
                         . $params[0] .', ENT_QUOTES, '
                         . var_export($char_set, true) . ', '
                         . var_export($double_encode, true) . ')';
                 } else if ($double_encode) {
-                    // php <5.3.2 - only handle double encoding
+                    // php <5.2.3 - only handle double encoding
                     return 'htmlentities('
                         . $params[0] .', ENT_QUOTES, '
                         . var_export($char_set, true) . ')';
diff --git a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_cacheresource_file.php b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
index e5d20bd6..04194b39 100644
--- a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
+++ b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
@@ -178,7 +178,7 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
             $_cacheDirs = new RecursiveDirectoryIterator($_dir);
             $_cache = new RecursiveIteratorIterator($_cacheDirs, RecursiveIteratorIterator::CHILD_FIRST);
             foreach ($_cache as $_file) {
-                if (substr($_file->getBasename(),0,1) == '.' || strpos($_file, '.svn') !== false) continue;
+                if (substr(basename($_file->getPathname()),0,1) == '.' || strpos($_file, '.svn') !== false) continue;
                 // directory ?
                 if ($_file->isDir()) {
                     if (!$_cache->isDot()) {
diff --git a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_compile_assign.php b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_compile_assign.php
index 0ac3f68c..f2dfedfb 100644
--- a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_compile_assign.php
+++ b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_compile_assign.php
@@ -39,7 +39,11 @@ class Smarty_Internal_Compile_Assign extends Smarty_Internal_CompileBase {
         if ($compiler->tag_nocache || $compiler->nocache) {
             $_nocache = 'true';
             // create nocache var to make it know for further compiling
-            $compiler->template->tpl_vars[trim($_attr['var'], "'")] = new Smarty_variable(null, true);
+            if (isset($compiler->template->tpl_vars[trim($_attr['var'], "'")])) {
+                $compiler->template->tpl_vars[trim($_attr['var'], "'")]->nocache = true;
+            } else {
+                $compiler->template->tpl_vars[trim($_attr['var'], "'")] = new Smarty_variable(null, true);
+            }
         }
         // scope setup
         if (isset($_attr['scope'])) {
diff --git a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_compile_block.php b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_compile_block.php
index 03abf493..11a67998 100644
--- a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_compile_block.php
+++ b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_compile_block.php
@@ -78,7 +78,7 @@ class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase {
     public static function saveBlockData($block_content, $block_tag, $template, $filepath) {
         $_rdl = preg_quote($template->smarty->right_delimiter);
         $_ldl = preg_quote($template->smarty->left_delimiter);
-        if ($template->smarty->auto_literal) {
+        if (!$template->smarty->auto_literal) {
             $al = '\s*';
         } else {
             $al = '';
@@ -90,7 +90,7 @@ class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase {
             $_name = trim($_match[3], '\'"');
             if ($_match[8] != 'hide' || isset($template->block_data[$_name])) {        // replace {$smarty.block.child}
                 // do we have {$smart.block.child} in nested {block} tags?
-                if (0 != preg_match_all("!({$_ldl}{$al}block\s+)(name=)?(\w+|'.*'|\".*\")([\s\S]*?)(hide)?(\s*{$_rdl})([\s\S]*?)({$_ldl}{$al}\\\$smarty\.block\.child{$_rdl})([\s\S]*?{$_ldl}{$al}/block{$_rdl})!", $block_content, $_match2)) {
+                if (0 != preg_match_all("!({$_ldl}{$al}block\s+)(name=)?(\w+|'.*'|\".*\")([\s\S]*?)(hide)?(\s*{$_rdl})([\s\S]*?)({$_ldl}{$al}\\\$smarty\.block\.child\s*{$_rdl})([\s\S]*?{$_ldl}{$al}/block\s*{$_rdl})!", $block_content, $_match2)) {
                     foreach ($_match2[3] as $key => $name) {
                         // get it's replacement
                         $_name2 = trim($name, '\'"');
@@ -101,17 +101,17 @@ class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase {
                                 $replacement = '';
                             }
                             // replace {$smarty.block.child} tag
-                            $search = array("%({$_ldl}{$al}block[\s\S]*?{$name}[\s\S]*?{$_rdl})([\s\S]*?)({$_ldl}{$al}\\\$smarty\.block\.child{$_rdl})([\s\S]*?)({$_ldl}{$al}/block{$_rdl})%", "/���child���/");
+                            $search = array("!({$_ldl}{$al}block[\s\S]*?{$name}[\s\S]*?{$_rdl})([\s\S]*?)({$_ldl}{$al}\\\$smarty\.block\.child\s*{$_rdl})([\s\S]*?)({$_ldl}{$al}/block\s*{$_rdl})!", "/���child���/");
                             $replace = array('\2���child���\4', $replacement);
                             $block_content = preg_replace($search, $replace, $block_content);
                         } else {
                             // remove hidden blocks
-                            $block_content = preg_replace("%({$_ldl}{$al}block[\s\S]*?{$name}[\s\S]*?{$_rdl}[\s\S]*?{$_ldl}{$al}/block{$_rdl})%", '', $block_content);
+                            $block_content = preg_replace("!({$_ldl}{$al}block[\s\S]*?{$name}[\s\S]*?{$_rdl}[\s\S]*?{$_ldl}{$al}/block\s*{$_rdl})!", '', $block_content);
                         }
                     }
                 }
                 // do we have not nested {$smart.block.child}
-                if (0 != preg_match("/({$_ldl}{$al}\\\$smarty\.block\.child{$_rdl})/", $block_content, $_match2)) {
+                if (0 != preg_match("!({$_ldl}{$al}\\\$smarty\.block\.child\s*{$_rdl})!", $block_content, $_match2)) {
                     // get child replacement for this block
                     if (isset($template->block_data[$_name])) {
                         $replacement = $template->block_data[$_name]['source'];
@@ -119,7 +119,7 @@ class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase {
                     } else {
                         $replacement = '';
                     }
-                    $block_content = preg_replace("/({$_ldl}{$al}\\\$smarty\.block\.child{$_rdl})/", $replacement, $block_content);
+                    $block_content = preg_replace("!({$_ldl}{$al}\\\$smarty\.block\.child\s*{$_rdl})!", $replacement, $block_content);
                 }
                 if (isset($template->block_data[$_name])) {
                     if (strpos($template->block_data[$_name]['source'], '%%%%SMARTY_PARENT%%%%') !== false) {
diff --git a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_compile_extends.php b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_compile_extends.php
index 9042aa23..b93139bf 100644
--- a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_compile_extends.php
+++ b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_compile_extends.php
@@ -51,6 +51,11 @@ class Smarty_Internal_Compile_Extends extends Smarty_Internal_CompileBase {
         static $_is_stringy = array('string' => true, 'eval' => true);
         $this->_rdl = preg_quote($compiler->smarty->right_delimiter);
         $this->_ldl = preg_quote($compiler->smarty->left_delimiter);
+        if (!$compiler->smarty->auto_literal) {
+            $al = '\s*';
+        } else {
+            $al = '';
+        }
         $filepath = $compiler->template->source->filepath;
         $this->mbstring_overload = ini_get('mbstring.func_overload') & 2;
         // check and get attributes
@@ -78,11 +83,11 @@ class Smarty_Internal_Compile_Extends extends Smarty_Internal_CompileBase {
         }
         $compiler->template->properties['file_dependency'][$template_sha1] = array($_template->source->filepath, $_template->source->timestamp, $_template->source->type);
         $_content = ($this->mbstring_overload ? mb_substr($compiler->template->source->content, $compiler->lex->counter - 1, 20000000, 'latin1') : substr($compiler->template->source->content, $compiler->lex->counter - 1));
-        if (preg_match_all("!({$this->_ldl}block\s(.+?){$this->_rdl})!", $_content, $s) !=
-        preg_match_all("!({$this->_ldl}/block{$this->_rdl})!", $_content, $c)) {
+        if (preg_match_all("!({$this->_ldl}{$al}block\s(.+?)\s*{$this->_rdl})!", $_content, $s) !=
+        preg_match_all("!({$this->_ldl}{$al}/block\s*{$this->_rdl})!", $_content, $c)) {
             $compiler->trigger_template_error('unmatched {block} {/block} pairs');
         }
-        preg_match_all("!{$this->_ldl}block\s(.+?){$this->_rdl}|{$this->_ldl}/block{$this->_rdl}|{$this->_ldl}\*([\S\s]*?)\*{$this->_rdl}!", $_content, $_result, PREG_OFFSET_CAPTURE);
+        preg_match_all("!{$this->_ldl}{$al}block\s(.+?)\s*{$this->_rdl}|{$this->_ldl}{$al}/block\s*{$this->_rdl}|{$this->_ldl}\*([\S\s]*?)\*{$this->_rdl}!", $_content, $_result, PREG_OFFSET_CAPTURE);
         $_result_count = count($_result[0]);
         $_start = 0;
         while ($_start+1 < $_result_count) {
diff --git a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
index 4760dbe3..986a11c1 100644
--- a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
+++ b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
@@ -80,7 +80,11 @@ class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_C
                 return '@' . trim($_index[1], "'");
 
             case 'config':
-                return "\$_smarty_tpl->getConfigVariable($_index[1])";
+                if (isset($_index[2])) {
+                    return "(is_array(\$tmp = \$_smarty_tpl->getConfigVariable($_index[1])) ? \$tmp[$_index[2]] : null)";
+                } else {
+                    return "\$_smarty_tpl->getConfigVariable($_index[1])";
+                }
             case 'ldelim':
                 $_ldelim = $compiler->smarty->left_delimiter;
                 return "'$_ldelim'";
diff --git a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_config.php b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_config.php
index a309ec9f..bcb3ce05 100644
--- a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_config.php
+++ b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_config.php
@@ -240,9 +240,8 @@ class Smarty_Internal_Config {
         }
         // scan sections
         if (!empty($sections)) {
-            $sections = array_flip((array) $sections);
-            foreach ($_config_vars['sections'] as $this_section => $dummy) {
-                if (isset($sections[$this_section])) {
+            foreach ((array) $sections as $this_section) {
+                if (isset($_config_vars['sections'][$this_section])) {
                     foreach ($_config_vars['sections'][$this_section]['vars'] as $variable => $value) {
                         if ($this->smarty->config_overwrite || !isset($scope_ptr->config_vars[$variable])) {
                             $scope_ptr->config_vars[$variable] = $value;
diff --git a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_resource_extends.php b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_resource_extends.php
index 9481d992..29734ae0 100644
--- a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_resource_extends.php
+++ b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_resource_extends.php
@@ -89,6 +89,11 @@ class Smarty_Internal_Resource_Extends extends Smarty_Resource {
         $this->mbstring_overload = ini_get('mbstring.func_overload') & 2;
         $_rdl = preg_quote($source->smarty->right_delimiter);
         $_ldl = preg_quote($source->smarty->left_delimiter);
+        if (!$source->smarty->auto_literal) {
+            $al = '\s*';
+        } else {
+            $al = '';
+        }
         $_components = array_reverse($source->components);
         $_first = reset($_components);
         $_last = end($_components);
@@ -105,11 +110,11 @@ class Smarty_Internal_Resource_Extends extends Smarty_Resource {
 
             // extend sources
             if ($_component != $_last) {
-                if (preg_match_all("!({$_ldl}block\s(.+?){$_rdl})!", $_content, $_open) !=
-                preg_match_all("!({$_ldl}/block{$_rdl})!", $_content, $_close)) {
+                if (preg_match_all("!({$_ldl}{$al}block\s(.+?)\s*{$_rdl})!", $_content, $_open) !=
+                preg_match_all("!({$_ldl}{$al}/block\s*{$_rdl})!", $_content, $_close)) {
                     throw new SmartyException("unmatched {block} {/block} pairs in template {$_component->type} '{$_component->name}'");
                 }
-                preg_match_all("!{$_ldl}block\s(.+?){$_rdl}|{$_ldl}/block{$_rdl}|{$_ldl}\*([\S\s]*?)\*{$_rdl}!", $_content, $_result, PREG_OFFSET_CAPTURE);
+                preg_match_all("!{$_ldl}{$al}block\s(.+?)\s*{$_rdl}|{$_ldl}{$al}/block\s*{$_rdl}|{$_ldl}\*([\S\s]*?)\*{$_rdl}!", $_content, $_result, PREG_OFFSET_CAPTURE);
                 $_result_count = count($_result[0]);
                 $_start = 0;
                 while ($_start+1 < $_result_count) {
diff --git a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_template.php b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_template.php
index de9d54cf..29017edb 100644
--- a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_template.php
+++ b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_template.php
@@ -344,7 +344,11 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
                 foreach ($this->required_plugins['compiled'] as $tmp) {
                     foreach ($tmp as $data) {
                         $file = addslashes($data['file']);
-                        $plugins_string .= "if (!is_callable('{$data['function']}')) include '{$file}';\n";
+                        if (is_Array($data['function'])){
+                            $plugins_string .= "if (!is_callable(array('{$data['function'][0]}','{$data['function'][1]}'))) include '{$file}';\n";
+                        } else {
+                            $plugins_string .= "if (!is_callable('{$data['function']}')) include '{$file}';\n";
+                        }
                     }
                 }
                 $plugins_string .= '?>';
@@ -355,7 +359,11 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
                 foreach ($this->required_plugins['nocache'] as $tmp) {
                     foreach ($tmp as $data) {
                         $file = addslashes($data['file']);
-                        $plugins_string .= addslashes("if (!is_callable('{$data['function']}')) include '{$file}';\n");
+                        if (is_Array($data['function'])){
+                            $plugins_string .= addslashes("if (!is_callable(array('{$data['function'][0]}','{$data['function'][1]}'))) include '{$file}';\n");
+                        } else {
+                            $plugins_string .= addslashes("if (!is_callable('{$data['function']}')) include '{$file}';\n");
+                        }
                     }
                 }
                 $plugins_string .= "?>/*/%%SmartyNocache:{$this->properties['nocache_hash']}%%*/';?>\n";
diff --git a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
index 4ee6734a..39dbe5ce 100644
--- a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
+++ b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
@@ -215,6 +215,8 @@ abstract class Smarty_Internal_TemplateCompilerBase {
         } else {
             $code = $template_header . $template->createTemplateCodeFrame($_compiled_code) . $merged_code;
         }
+        // unset content because template inheritance could have replace source with parent code
+        unset ($template->source->content);
         return $code;
     }
 
@@ -592,8 +594,7 @@ abstract class Smarty_Internal_TemplateCompilerBase {
             if ((!($this->template->source->recompiled) || $this->forceNocache) && $this->template->caching && !$this->suppressNocacheProcessing &&
                     ($this->nocache || $this->tag_nocache || $this->forceNocache == 2)) {
                 $this->template->has_nocache_code = true;
-                $_output = str_replace("'", "\'", $content);
-                $_output = str_replace('\\\\', '\\\\\\\\', $_output);
+                $_output = addcslashes($content,'\'\\');
                 $_output = str_replace("^#^", "'", $_output);
                 $_output = "<?php echo '/*%%SmartyNocache:{$this->nocache_hash}%%*/" . $_output . "/*/%%SmartyNocache:{$this->nocache_hash}%%*/';?>\n";
                 // make sure we include modifer plugins for nocache code
diff --git a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_templatelexer.php b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_templatelexer.php
index bfc413ae..a7d5fa9a 100644
--- a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_templatelexer.php
+++ b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_templatelexer.php
@@ -85,6 +85,7 @@ class Smarty_Internal_Templatelexer
         $this->ldel = preg_quote($this->smarty->left_delimiter,'/');
         $this->ldel_length = strlen($this->smarty->left_delimiter);
         $this->rdel = preg_quote($this->smarty->right_delimiter,'/');
+        $this->rdel_length = strlen($this->smarty->right_delimiter);
         $this->smarty_token_names['LDEL'] =	$this->smarty->left_delimiter;
         $this->smarty_token_names['RDEL'] =	$this->smarty->right_delimiter;
         $this->mbstring_overload = ini_get('mbstring.func_overload') & 2;
@@ -141,11 +142,12 @@ class Smarty_Internal_Templatelexer
               21 => 0,
               22 => 0,
               23 => 0,
+              24 => 0,
             );
         if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
             return false; // end of input
         }
-        $yy_global_pattern = "/\G(".$this->ldel."[$]smarty\\.block\\.child".$this->rdel.")|\G(\\{\\})|\G(".$this->ldel."\\*([\S\s]*?)\\*".$this->rdel.")|\G(".$this->ldel."strip".$this->rdel.")|\G(".$this->ldel."\\s{1,}strip\\s{1,}".$this->rdel.")|\G(".$this->ldel."\/strip".$this->rdel.")|\G(".$this->ldel."\\s{1,}\/strip\\s{1,}".$this->rdel.")|\G(".$this->ldel."\\s*literal\\s*".$this->rdel.")|\G(".$this->ldel."\\s{1,}\/)|\G(".$this->ldel."\\s*(if|elseif|else if|while)\\s+)|\G(".$this->ldel."\\s*for\\s+)|\G(".$this->ldel."\\s*foreach(?![^\s]))|\G(".$this->ldel."\\s*setfilter\\s+)|\G(".$this->ldel."\\s{1,})|\G(".$this->ldel."\/)|\G(".$this->ldel.")|\G(<\\?(?:php\\w+|=|[a-zA-Z]+)?)|\G(\\?>)|\G(<%)|\G(%>)|\G([\S\s])/iS";
+        $yy_global_pattern = "/\G(".$this->ldel."[$]smarty\\.block\\.child".$this->rdel.")|\G(\\{\\})|\G(".$this->ldel."\\*([\S\s]*?)\\*".$this->rdel.")|\G(".$this->ldel."strip".$this->rdel.")|\G(".$this->ldel."\\s{1,}strip\\s{1,}".$this->rdel.")|\G(".$this->ldel."\/strip".$this->rdel.")|\G(".$this->ldel."\\s{1,}\/strip\\s{1,}".$this->rdel.")|\G(".$this->ldel."\\s*literal\\s*".$this->rdel.")|\G(".$this->ldel."\\s{1,}\/)|\G(".$this->ldel."\\s*(if|elseif|else if|while)\\s+)|\G(".$this->ldel."\\s*for\\s+)|\G(".$this->ldel."\\s*foreach(?![^\s]))|\G(".$this->ldel."\\s*setfilter\\s+)|\G(".$this->ldel."\\s{1,})|\G(".$this->ldel."\/)|\G(".$this->ldel.")|\G(<\\?(?:php\\w+|=|[a-zA-Z]+)?)|\G(\\?>)|\G(".$this->rdel.")|\G(<%)|\G(%>)|\G([\S\s])/iS";
 
         do {
             if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
@@ -344,16 +346,21 @@ class Smarty_Internal_Templatelexer
     function yy_r1_21($yy_subpatterns)
     {
 
-  $this->token = Smarty_Internal_Templateparser::TP_ASPSTARTTAG;
+  $this->token = Smarty_Internal_Templateparser::TP_TEXT;
     }
     function yy_r1_22($yy_subpatterns)
     {
 
-  $this->token = Smarty_Internal_Templateparser::TP_ASPENDTAG;
+  $this->token = Smarty_Internal_Templateparser::TP_ASPSTARTTAG;
     }
     function yy_r1_23($yy_subpatterns)
     {
 
+  $this->token = Smarty_Internal_Templateparser::TP_ASPENDTAG;
+    }
+    function yy_r1_24($yy_subpatterns)
+    {
+
   if ($this->mbstring_overload) {
     $to = mb_strlen($this->data,'latin1');
   } else {
@@ -447,7 +454,7 @@ class Smarty_Internal_Templatelexer
         if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
             return false; // end of input
         }
-        $yy_global_pattern = "/\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G(".$this->ldel."\\s{1,}\/)|\G(".$this->ldel."\\s*(if|elseif|else if|while)\\s+)|\G(".$this->ldel."\\s*for\\s+)|\G(".$this->ldel."\\s*foreach(?![^\s]))|\G(".$this->ldel."\\s{1,})|\G(\\s{1,}".$this->rdel.")|\G(".$this->ldel."\/)|\G(".$this->ldel.")|\G(".$this->rdel.")|\G(\\s+is\\s+in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*===\\s*)|\G(\\s*!==\\s*)|\G(\\s*==\\s*|\\s+eq\\s+)|\G(\\s*!=\\s*|\\s*<>\\s*|\\s+(ne|neq)\\s+)|\G(\\s*>=\\s*|\\s+(ge|gte)\\s+)|\G(\\s*<=\\s*|\\s+(le|lte)\\s+)|\G(\\s*>\\s*|\\s+gt\\s+)|\G(\\s*<\\s*|\\s+lt\\s+)|\G(\\s+mod\\s+)|\G(!\\s*|not\\s+)|\G(\\s*&&\\s*|\\s*and\\s+)|\G(\\s*\\|\\|\\s*|\\s*or\\s+)|\G(\\s*xor\\s+)|\G(\\s+is\\s+odd\\s+by\\s+)|\G(\\s+is\\s+not\\s+odd\\s+by\\s+)|\G(\\s+is\\s+odd)|\G(\\s+is\\s+not\\s+odd)|\G(\\s+is\\s+even\\s+by\\s+)|\G(\\s+is\\s+not\\s+even\\s+by\\s+)|\G(\\s+is\\s+even)|\G(\\s+is\\s+not\\s+even)|\G(\\s+is\\s+div\\s+by\\s+)|\G(\\s+is\\s+not\\s+div\\s+by\\s+)|\G(\\((int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)\\)\\s*)|\G(\\s*\\(\\s*)|\G(\\s*\\))|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*->\\s*)|\G(\\s*=>\\s*)|\G(\\s*=\\s*)|\G(\\+\\+|--)|\G(\\s*(\\+|-)\\s*)|\G(\\s*(\\*|\/|%)\\s*)|\G(\\$)|\G(\\s*;)|\G(::)|\G(\\s*:\\s*)|\G(@)|\G(#)|\G(\")|\G(`)|\G(\\|)|\G(\\.)|\G(\\s*,\\s*)|\G(\\s*&\\s*)|\G(\\s*\\?\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s?=\\s?)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G(\\s+)|\G([\S\s])/iS";
+        $yy_global_pattern = "/\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G(".$this->ldel."\\s{1,}\/)|\G(".$this->ldel."\\s*(if|elseif|else if|while)\\s+)|\G(".$this->ldel."\\s*for\\s+)|\G(".$this->ldel."\\s*foreach(?![^\s]))|\G(".$this->ldel."\\s{1,})|\G(\\s{1,}".$this->rdel.")|\G(".$this->ldel."\/)|\G(".$this->ldel.")|\G(".$this->rdel.")|\G(\\s+is\\s+in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*===\\s*)|\G(\\s*!==\\s*)|\G(\\s*==\\s*|\\s+eq\\s+)|\G(\\s*!=\\s*|\\s*<>\\s*|\\s+(ne|neq)\\s+)|\G(\\s*>=\\s*|\\s+(ge|gte)\\s+)|\G(\\s*<=\\s*|\\s+(le|lte)\\s+)|\G(\\s*>\\s*|\\s+gt\\s+)|\G(\\s*<\\s*|\\s+lt\\s+)|\G(\\s+mod\\s+)|\G(!\\s*|not\\s+)|\G(\\s*&&\\s*|\\s*and\\s+)|\G(\\s*\\|\\|\\s*|\\s*or\\s+)|\G(\\s*xor\\s+)|\G(\\s+is\\s+odd\\s+by\\s+)|\G(\\s+is\\s+not\\s+odd\\s+by\\s+)|\G(\\s+is\\s+odd)|\G(\\s+is\\s+not\\s+odd)|\G(\\s+is\\s+even\\s+by\\s+)|\G(\\s+is\\s+not\\s+even\\s+by\\s+)|\G(\\s+is\\s+even)|\G(\\s+is\\s+not\\s+even)|\G(\\s+is\\s+div\\s+by\\s+)|\G(\\s+is\\s+not\\s+div\\s+by\\s+)|\G(\\((int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)\\)\\s*)|\G(\\s*\\(\\s*)|\G(\\s*\\))|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*->\\s*)|\G(\\s*=>\\s*)|\G(\\s*=\\s*)|\G(\\+\\+|--)|\G(\\s*(\\+|-)\\s*)|\G(\\s*(\\*|\/|%)\\s*)|\G(\\$)|\G(\\s*;)|\G(::)|\G(\\s*:\\s*)|\G(@)|\G(#)|\G(\")|\G(`)|\G(\\|)|\G(\\.)|\G(\\s*,\\s*)|\G(\\s*&\\s*)|\G(\\s*\\?\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*=\\s*)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G(\\s+)|\G([\S\s])/iS";
 
         do {
             if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
@@ -853,7 +860,14 @@ class Smarty_Internal_Templatelexer
     function yy_r2_73($yy_subpatterns)
     {
 
-  $this->token = Smarty_Internal_Templateparser::TP_ATTR;
+  // resolve conflicts with shorttag and right_delimiter starting with '='
+  if (substr($this->data, $this->counter + strlen($this->value) - 1, $this->rdel_length) == $this->smarty->right_delimiter) {
+     preg_match("/\s+/",$this->value,$match);
+     $this->value = $match[0];
+     $this->token = Smarty_Internal_Templateparser::TP_SPACE;
+  } else {
+     $this->token = Smarty_Internal_Templateparser::TP_ATTR;
+  }
     }
     function yy_r2_74($yy_subpatterns)
     {
@@ -1187,4 +1201,3 @@ class Smarty_Internal_Templatelexer
     }
 
 }
-?>
\ No newline at end of file
diff --git a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_templateparser.php b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_templateparser.php
index ed20e823..d67be6e6 100644
--- a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_templateparser.php
+++ b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_templateparser.php
@@ -218,360 +218,353 @@ class Smarty_Internal_Templateparser#line 79 "smarty_internal_templateparser.php
     const TP_QUOTE                          = 78;
     const TP_BACKTICK                       = 79;
     const TP_DOLLARID                       = 80;
-    const YY_NO_ACTION = 593;
-    const YY_ACCEPT_ACTION = 592;
-    const YY_ERROR_ACTION = 591;
+    const YY_NO_ACTION = 597;
+    const YY_ACCEPT_ACTION = 596;
+    const YY_ERROR_ACTION = 595;
 
-    const YY_SZ_ACTTAB = 2453;
+    const YY_SZ_ACTTAB = 2383;
 static public $yy_action = array(
- /*     0 */   210,  320,  317,  316,  312,  311,  313,  314,  315,  322,
- /*    10 */   323,  189,  191,  340,   43,  168,  292,  290,  161,   25,
- /*    20 */     3,  108,  284,   29,  294,  199,  146,  294,   15,   15,
- /*    30 */   244,  296,  243,  277,   18,   18,  285,   12,  127,   48,
- /*    40 */    52,   50,   44,    9,   14,  384,  385,   17,   16,  386,
- /*    50 */   283,   41,   39,  210,  592,   95,  260,  319,  321,    6,
- /*    60 */    21,  194,  135,  374,  193,  387,  383,  382,  378,  377,
- /*    70 */   379,  380,  381,  363,  362,  345,  344,   28,   31,   34,
- /*    80 */   370,   15,   19,  237,  137,  187,   25,   18,  203,  284,
- /*    90 */    29,  203,   48,   52,   50,   44,    9,   14,  384,  385,
- /*   100 */    17,   16,  386,  283,   41,   39,  329,  324,  326,  327,
- /*   110 */   325,   24,  288,    4,    4,  189,  332,  330,  387,  383,
- /*   120 */   382,  378,  377,  379,  380,  381,  363,  362,  345,  344,
- /*   130 */   210,  368,  231,  210,  251,  117,  139,  139,   84,  132,
- /*   140 */   278,   25,   10,  162,  284,  359,  338,  302,  346,  459,
- /*   150 */   226,  228,  369,  364,   15,  375,  230,   15,   15,  177,
- /*   160 */    18,  459,  240,   18,   18,  212,  257,  459,  294,   48,
- /*   170 */    52,   50,   44,    9,   14,  384,  385,   17,   16,  386,
- /*   180 */   283,   41,   39,  131,  101,  159,   47,  196,  340,  371,
- /*   190 */    25,  190,  340,  284,  294,  387,  383,  382,  378,  377,
- /*   200 */   379,  380,  381,  363,  362,  345,  344,  210,  368,  208,
- /*   210 */   210,  203,  140,  210,    8,   56,  123,  118,  210,  457,
- /*   220 */   366,  261,  234,  343,  302,  346,  453,  147,  228,  369,
- /*   230 */   364,  457,  375,   15,  342,   15,  231,  457,   15,   18,
- /*   240 */     4,   18,  307,   37,   18,  195,   48,   52,   50,   44,
- /*   250 */     9,   14,  384,  385,   17,   16,  386,  283,   41,   39,
- /*   260 */   210,   25,    2,  139,  284,   11,   47,  185,  210,   45,
- /*   270 */   266,   47,  387,  383,  382,  378,  377,  379,  380,  381,
- /*   280 */   363,  362,  345,  344,  286,  242,  104,  166,   15,  210,
- /*   290 */   276,  184,  188,   23,   18,  272,  294,   22,  162,   48,
- /*   300 */    52,   50,   44,    9,   14,  384,  385,   17,   16,  386,
- /*   310 */   283,   41,   39,  203,  106,  170,   13,   15,  203,  288,
- /*   320 */   318,  319,  321,   18,  294,  387,  383,  382,  378,  377,
- /*   330 */   379,  380,  381,  363,  362,  345,  344,  210,  131,  105,
- /*   340 */   210,  203,   23,  368,  268,  130,  249,  152,  355,   25,
- /*   350 */   197,  132,  284,  271,   32,  162,  287,  155,  354,  210,
- /*   360 */     3,  108,   15,  228,  369,  364,  146,  375,   18,  252,
- /*   370 */   244,  296,  243,  375,  303,  305,   48,   52,   50,   44,
- /*   380 */     9,   14,  384,  385,   17,   16,  386,  283,   41,   39,
- /*   390 */   103,  210,   36,  208,  109,  388,  303,  232,    8,    4,
- /*   400 */   248,  246,  387,  383,  382,  378,  377,  379,  380,  381,
- /*   410 */   363,  362,  345,  344,  198,   40,  361,   27,  353,  179,
- /*   420 */   175,   20,  139,  236,  239,  211,  116,   18,  294,  294,
- /*   430 */    48,   52,   50,   44,    9,   14,  384,  385,   17,   16,
- /*   440 */   386,  283,   41,   39,  178,  200,  200,   23,   25,  267,
- /*   450 */   351,  284,  186,  294,  285,  201,  387,  383,  382,  378,
- /*   460 */   377,  379,  380,  381,  363,  362,  345,  344,  210,  368,
- /*   470 */   200,  210,  210,  140,  301,  181,   69,  123,  238,   25,
- /*   480 */   210,  147,  284,  347,  202,  302,  346,  459,  304,  228,
- /*   490 */   369,  364,   15,  375,  241,   15,  297,  172,   18,  459,
- /*   500 */   235,   18,  203,  306,  129,  459,  294,   48,   52,   50,
- /*   510 */    44,    9,   14,  384,  385,   17,   16,  386,  283,   41,
- /*   520 */    39,  210,   25,  200,   47,  229,   25,  134,  210,  233,
- /*   530 */   120,  119,  210,  387,  383,  382,  378,  377,  379,  380,
- /*   540 */   381,  363,  362,  345,  344,  373,  373,  143,  308,  180,
- /*   550 */   236,  282,   25,   25,   42,  284,  216,  236,  238,  250,
- /*   560 */    48,   52,   50,   44,    9,   14,  384,  385,   17,   16,
- /*   570 */   386,  283,   41,   39,  210,   30,  203,  360,  182,   25,
- /*   580 */   285,   47,  222,  126,  167,  303,  387,  383,  382,  378,
- /*   590 */   377,  379,  380,  381,  363,  362,  345,  344,  245,  373,
- /*   600 */    15,  372,  160,  334,    6,  333,   18,  247,  254,   35,
- /*   610 */   255,  294,  114,   48,   52,   50,   44,    9,   14,  384,
- /*   620 */   385,   17,   16,  386,  283,   41,   39,  373,  192,  281,
- /*   630 */   253,  145,   38,  298,  300,  226,   94,  124,  102,  387,
- /*   640 */   383,  382,  378,  377,  379,  380,  381,  363,  362,  345,
- /*   650 */   344,  210,  368,  373,  210,  141,  140,  368,  336,   71,
- /*   660 */   132,  149,  136,    7,   10,  132,  165,  204,  302,  346,
- /*   670 */   456,   98,  228,  369,  364,  294,  375,  228,  369,  364,
- /*   680 */   279,  375,  456,  220,  232,  335,  373,  285,  456,  162,
- /*   690 */    48,   52,   50,   44,    9,   14,  384,  385,   17,   16,
- /*   700 */   386,  283,   41,   39,  210,  210,  309,   47,  285,  200,
- /*   710 */   371,   45,  162,  183,  144,   97,  387,  383,  382,  378,
- /*   720 */   377,  379,  380,  381,  363,  362,  345,  344,  285,  131,
- /*   730 */   373,  354,  331,  107,  110,  256,  376,  327,  327,  327,
- /*   740 */   327,  327,  115,   48,   52,   50,   44,    9,   14,  384,
- /*   750 */   385,   17,   16,  386,  283,   41,   39,  373,  327,  327,
- /*   760 */   327,  327,  327,  327,  327,  327,  327,  327,  356,  387,
- /*   770 */   383,  382,  378,  377,  379,  380,  381,  363,  362,  345,
- /*   780 */   344,  210,  352,  368,  327,  210,  327,  140,  327,  327,
- /*   790 */    71,  132,  327,  100,  339,  327,  138,  269,  337,  302,
- /*   800 */   346,  328,  327,  228,  369,  364,   15,  375,  373,  327,
- /*   810 */    15,  373,   18,   15,  219,  327,   18,  327,  327,   18,
- /*   820 */    48,   52,   50,   44,    9,   14,  384,  385,   17,   16,
- /*   830 */   386,  283,   41,   39,  210,  327,  327,  327,   47,  327,
- /*   840 */   327,  327,  327,  327,  327,  327,  387,  383,  382,  378,
- /*   850 */   377,  379,  380,  381,  363,  362,  345,  344,  327,  327,
- /*   860 */   327,  327,  327,  327,  327,  327,  327,  327,  327,  327,
- /*   870 */   327,  327,  274,   48,   52,   50,   44,    9,   14,  384,
- /*   880 */   385,   17,   16,  386,  283,   41,   39,  210,  327,  327,
- /*   890 */   327,  327,  327,  327,  327,  327,  327,  327,  327,  387,
- /*   900 */   383,  382,  378,  377,  379,  380,  381,  363,  362,  345,
- /*   910 */   344,  327,  327,  327,  327,  327,  327,  327,  327,  327,
- /*   920 */   327,  327,  327,  327,  327,  327,   48,   52,   50,   44,
- /*   930 */     9,   14,  384,  385,   17,   16,  386,  283,   41,   39,
- /*   940 */   210,  327,  327,  327,  327,  327,  327,  327,  327,  327,
- /*   950 */   327,  265,  387,  383,  382,  378,  377,  379,  380,  381,
- /*   960 */   363,  362,  345,  344,  327,  327,  327,  327,  327,  224,
- /*   970 */   327,  327,  327,  327,  327,  327,  327,  327,  327,   48,
- /*   980 */    52,   50,   44,    9,   14,  384,  385,   17,   16,  386,
- /*   990 */   283,   41,   39,  210,  327,  327,  327,  327,  327,  327,
- /*  1000 */   327,  327,  327,  327,  327,  387,  383,  382,  378,  377,
- /*  1010 */   379,  380,  381,  363,  362,  345,  344,  327,  327,  327,
- /*  1020 */   327,  327,  327,  327,  327,  327,  327,  327,  327,  327,
- /*  1030 */   327,  327,   48,   52,   50,   44,    9,   14,  384,  385,
- /*  1040 */    17,   16,  386,  283,   41,   39,  327,  327,  327,  327,
- /*  1050 */   327,  327,  327,  327,  327,  327,  327,  327,  387,  383,
- /*  1060 */   382,  378,  377,  379,  380,  381,  363,  362,  345,  344,
- /*  1070 */   327,  327,  327,   48,   52,   50,   44,    9,   14,  384,
- /*  1080 */   385,   17,   16,  386,  283,   41,   39,  327,  327,  327,
- /*  1090 */   327,  327,  327,  327,  327,  327,  327,  327,  327,  387,
- /*  1100 */   383,  382,  378,  377,  379,  380,  381,  363,  362,  345,
- /*  1110 */   344,  327,  327,  327,  327,  327,   43,  327,  142,  207,
- /*  1120 */   327,  327,    3,  108,  327,  264,  327,  368,  146,  327,
- /*  1130 */   327,  151,  244,  296,  243,  132,  227,   15,   33,  327,
- /*  1140 */   327,   51,  327,   18,  367,  327,  368,  228,  369,  364,
- /*  1150 */   150,  375,  327,  174,  132,  327,   49,   46,  299,  225,
- /*  1160 */   365,  327,  294,  103,    1,  280,  228,  369,  364,  262,
- /*  1170 */   375,  327,  327,   43,  285,  142,  218,  327,   96,    3,
- /*  1180 */   108,   15,  289,  327,  327,  146,  327,   18,  327,  244,
- /*  1190 */   296,  243,  327,  227,   15,   33,  327,  327,   51,  327,
- /*  1200 */    18,  327,  368,  327,  327,  327,  121,  327,  327,   54,
- /*  1210 */   132,  327,  327,   49,   46,  299,  225,  365,  302,  346,
- /*  1220 */   103,    1,  228,  369,  364,  327,  375,  350,  327,  327,
- /*  1230 */    43,  327,  142,  205,  327,   96,    3,  108,  327,   15,
- /*  1240 */   169,  327,  146,  327,  358,   18,  244,  296,  243,  294,
- /*  1250 */   227,  327,   33,  327,  327,   51,   15,  327,  327,  368,
- /*  1260 */   327,  285,   18,  140,  327,  327,   66,  132,  327,  327,
- /*  1270 */    49,   46,  299,  225,  365,  302,  346,  103,    1,  228,
- /*  1280 */   369,  364,  327,  375,  295,  327,  327,   43,  327,  130,
- /*  1290 */   218,  327,   96,    3,  108,  327,   15,  327,  327,  146,
- /*  1300 */   327,  293,   18,  244,  296,  243,  327,  227,  327,   26,
- /*  1310 */   327,  327,   51,   15,  327,  327,  368,  327,  327,   18,
- /*  1320 */   140,  327,  327,   60,  132,  327,  327,   49,   46,  299,
- /*  1330 */   225,  365,  302,  346,  103,    1,  228,  369,  364,  327,
- /*  1340 */   375,  258,  327,  327,   43,  327,  128,  218,  327,   96,
- /*  1350 */     3,  108,  327,   15,  327,  327,  146,  327,  291,   18,
- /*  1360 */   244,  296,  243,  327,  227,  327,    5,  327,  327,   51,
- /*  1370 */    15,  327,  327,  368,  327,  327,   18,  140,  327,  327,
- /*  1380 */    75,  132,  327,  327,   49,   46,  299,  225,  365,  302,
- /*  1390 */   346,  103,    1,  228,  369,  364,  327,  375,  259,  327,
- /*  1400 */   327,   43,  327,  142,  209,  327,   96,    3,  108,  327,
- /*  1410 */    15,  327,  327,  146,  327,  273,   18,  244,  296,  243,
- /*  1420 */   327,  227,  327,   33,  327,  327,   51,   15,  327,  327,
- /*  1430 */   368,  327,  327,   18,  140,  327,  327,   87,  132,  327,
- /*  1440 */   327,   49,   46,  299,  225,  365,  302,  346,  103,    1,
- /*  1450 */   228,  369,  364,  327,  375,  275,  327,  327,   43,  327,
- /*  1460 */   125,   92,  327,   96,    3,  108,  327,   15,  327,  327,
- /*  1470 */   146,  327,  310,   18,  244,  296,  243,  327,  227,  327,
- /*  1480 */    33,  327,  327,   51,   15,  327,  327,  368,  327,  327,
- /*  1490 */    18,  140,  327,  327,   58,  132,  327,  327,   49,   46,
- /*  1500 */   299,  225,  365,  302,  346,  103,    1,  228,  369,  364,
- /*  1510 */   327,  375,  341,  327,  327,   43,  327,  133,  218,  327,
- /*  1520 */    96,    3,  108,  327,   15,  327,  327,  146,  327,  348,
- /*  1530 */    18,  244,  296,  243,  327,  227,  327,   33,  327,  327,
- /*  1540 */    51,   15,  327,  327,  368,  327,  327,   18,  140,  327,
- /*  1550 */   327,   68,  132,  327,  327,   49,   46,  299,  225,  365,
- /*  1560 */   302,  346,  103,    1,  215,  369,  364,  327,  375,  327,
- /*  1570 */   327,  327,   43,  327,  142,  206,  327,   96,    3,  108,
- /*  1580 */   327,  327,  327,  327,  146,  327,  327,  327,  244,  296,
- /*  1590 */   243,  327,  213,  327,   33,  327,  327,   51,  327,  327,
- /*  1600 */   327,  368,  327,  327,  327,  140,  327,  327,   89,  132,
- /*  1610 */   327,  327,   49,   46,  299,  225,  365,  302,  346,  103,
- /*  1620 */     1,  228,  369,  364,  327,  375,  327,  327,  327,   43,
- /*  1630 */   327,  130,  214,  327,   96,    3,  108,  327,  327,  327,
- /*  1640 */   327,  146,  327,  327,  327,  244,  296,  243,  327,  227,
- /*  1650 */   327,   26,  327,  327,   51,  327,  327,  327,  368,  327,
- /*  1660 */   327,  327,   93,  327,  327,   53,  122,  327,  327,   49,
- /*  1670 */    46,  299,  225,  365,  302,  346,  103,  327,  221,  369,
- /*  1680 */   364,  327,  375,  327,  327,  327,   43,  327,  130,  218,
- /*  1690 */   327,   96,    3,  108,  327,  327,  327,  327,  146,  327,
- /*  1700 */   327,  327,  244,  296,  243,  327,  227,  327,   26,  327,
- /*  1710 */   327,   51,  327,  327,  327,  368,  327,  327,  327,  140,
- /*  1720 */   327,  327,   71,  132,  327,  327,   49,   46,  299,  225,
- /*  1730 */   365,  302,  346,  103,  327,  228,  369,  364,  327,  375,
- /*  1740 */   327,  327,  327,  327,  502,  327,  217,  327,   96,  327,
- /*  1750 */   327,  502,  327,  502,  502,  355,  502,  502,  327,  327,
- /*  1760 */   327,   32,  502,  327,  502,    4,  502,    3,  108,  327,
- /*  1770 */    99,  171,  327,  146,  327,  327,  327,  244,  296,  243,
- /*  1780 */   294,  502,  327,   28,   31,  327,  327,  327,  139,  327,
- /*  1790 */   327,  327,  502,  327,  368,  193,  163,  203,  117,  327,
- /*  1800 */   327,   84,  132,  327,  327,  294,  502,  327,   28,   31,
- /*  1810 */   302,  346,  327,  368,  228,  369,  364,  157,  375,  327,
- /*  1820 */   327,  132,  203,  357,   27,  353,  327,  327,  327,  263,
- /*  1830 */   270,  327,  368,  228,  369,  364,  140,  375,  327,   69,
- /*  1840 */   132,  327,  210,  368,  327,  327,  327,  140,  302,  346,
- /*  1850 */    79,  132,  228,  369,  364,  327,  375,  327,  349,  302,
- /*  1860 */   346,  327,  223,  228,  369,  364,  327,  375,  327,  327,
- /*  1870 */    15,  327,  327,  327,  368,  327,   18,  327,  140,    4,
- /*  1880 */   327,   91,  132,  327,  327,  327,  327,  327,  327,  327,
- /*  1890 */   302,  346,  327,  327,  228,  369,  364,  368,  375,  327,
- /*  1900 */   327,  140,  139,  368,   76,  132,  327,  153,  327,  327,
- /*  1910 */   327,  132,  327,  302,  346,  327,  327,  228,  369,  364,
- /*  1920 */   327,  375,  368,  228,  369,  364,  140,  375,  327,   63,
- /*  1930 */   132,  327,  327,  368,  327,  327,  327,  111,  302,  346,
- /*  1940 */    62,  132,  228,  369,  364,  327,  375,  327,  327,  302,
- /*  1950 */   346,  327,  327,  228,  369,  364,  327,  375,  327,  327,
- /*  1960 */   368,  193,  176,  327,  140,  327,  327,   78,  132,  327,
- /*  1970 */   327,  294,  327,  327,   28,   31,  302,  346,  327,  327,
- /*  1980 */   228,  369,  364,  368,  375,  327,  327,  140,  203,  368,
- /*  1990 */    64,  132,  327,  154,  327,  327,  327,  132,  327,  302,
- /*  2000 */   346,  327,  327,  228,  369,  364,  327,  375,  368,  228,
- /*  2010 */   369,  364,  140,  375,  327,   77,  132,  327,  327,  368,
- /*  2020 */   327,  327,  327,  140,  302,  346,   80,  132,  228,  369,
- /*  2030 */   364,  327,  375,  327,  327,  302,  346,  327,  327,  228,
- /*  2040 */   369,  364,  327,  375,  327,  327,  368,  327,  327,  327,
- /*  2050 */   140,  327,  327,   61,  132,  327,  327,  327,  327,  327,
- /*  2060 */   327,  327,  302,  346,  327,  327,  228,  369,  364,  368,
- /*  2070 */   375,  327,  327,  140,  327,  368,   65,  132,  327,  156,
- /*  2080 */   327,  327,  327,  132,  327,  302,  346,  327,  327,  228,
- /*  2090 */   369,  364,  327,  375,  368,  228,  369,  364,  140,  375,
- /*  2100 */   327,   81,  132,  327,  327,  368,  327,  327,  327,  113,
- /*  2110 */   302,  346,   88,  132,  228,  369,  364,  327,  375,  327,
- /*  2120 */   327,  302,  346,  327,  327,  228,  369,  364,  327,  375,
- /*  2130 */   327,  327,  368,  327,  327,  327,  140,  327,  327,   67,
- /*  2140 */   132,  327,  327,  327,  327,  327,  327,  327,  302,  346,
- /*  2150 */   327,  327,  228,  369,  364,  368,  375,  327,  327,  140,
- /*  2160 */   327,  368,   86,  132,  327,  148,  327,  327,  327,  132,
- /*  2170 */   327,  302,  346,  327,  327,  228,  369,  364,  327,  375,
- /*  2180 */   368,  228,  369,  364,  140,  375,  327,   85,  132,  327,
- /*  2190 */   327,  368,  327,  327,  327,  112,  302,  346,   73,  132,
- /*  2200 */   228,  369,  364,  327,  375,  327,  327,  302,  346,  327,
- /*  2210 */   327,  228,  369,  364,  327,  375,  327,  327,  368,  327,
- /*  2220 */   327,  327,  140,  327,  327,   70,  132,  327,  327,  327,
- /*  2230 */   327,  327,  327,  327,  302,  346,  327,  327,  228,  369,
- /*  2240 */   364,  368,  375,  327,  327,  140,  327,  327,   57,  132,
- /*  2250 */   327,  327,  327,  327,  327,  327,  327,  302,  346,  327,
- /*  2260 */   327,  228,  369,  364,  327,  375,  368,  327,  327,  327,
- /*  2270 */   140,  327,  327,   90,  132,  327,  327,  368,  327,  327,
- /*  2280 */   327,  140,  302,  346,   83,  132,  228,  369,  364,  327,
- /*  2290 */   375,  327,  327,  302,  346,  327,  327,  228,  369,  364,
- /*  2300 */   327,  375,  327,  327,  368,  327,  327,  327,  140,  327,
- /*  2310 */   327,   82,  132,  327,  327,  327,  327,  327,  327,  327,
- /*  2320 */   302,  346,  327,  327,  228,  369,  364,  368,  375,  327,
- /*  2330 */   327,  140,  327,  327,   55,  132,  327,  327,  327,  327,
- /*  2340 */   327,  327,  327,  302,  346,  327,  327,  228,  369,  364,
- /*  2350 */   327,  375,  368,  327,  327,  327,  140,  327,  327,   72,
- /*  2360 */   132,  327,  327,  368,  327,  327,  327,   93,  302,  346,
- /*  2370 */    59,  122,  228,  369,  364,  327,  375,  327,  327,  302,
- /*  2380 */   346,  327,  327,  228,  369,  364,  327,  375,  327,  327,
- /*  2390 */   368,  327,  327,  327,  140,  327,  327,   74,  132,  327,
- /*  2400 */   327,  327,  327,  193,  158,  327,  302,  346,  327,  327,
- /*  2410 */   228,  369,  364,  294,  375,  327,   28,   31,  193,  173,
- /*  2420 */   327,  327,  327,  327,  327,  193,  164,  327,  294,  327,
- /*  2430 */   203,   28,   31,  327,  327,  294,  327,  327,   28,   31,
- /*  2440 */   327,  327,  327,  327,  327,  203,  327,  327,  327,  327,
- /*  2450 */   327,  327,  203,
+ /*     0 */   225,  275,  263,  276,  259,  257,  260,  390,  356,  359,
+ /*    10 */   353,  193,   18,  127,   42,  317,  381,  351,  196,  350,
+ /*    20 */     6,  108,   24,   98,  128,  190,  134,  318,   41,   41,
+ /*    30 */   249,  329,  231,   18,   43,   43,  317,   26,  298,   50,
+ /*    40 */    47,   48,   44,   10,   13,  305,  306,   12,   11,  340,
+ /*    50 */   341,   40,   20,  387,  308,  307,  309,  374,  254,  248,
+ /*    60 */   252,  217,  193,  385,  291,  375,  376,  377,  373,  372,
+ /*    70 */   368,  367,  369,  370,  371,  378,  379,  225,  312,  255,
+ /*    80 */   225,  225,  118,    2,  207,   76,  135,  596,   95,  281,
+ /*    90 */   271,  264,    2,  366,  315,  386,  461,  383,  232,  294,
+ /*   100 */   303,  388,  313,  389,  227,   41,  144,  225,  461,  245,
+ /*   110 */   282,   43,  218,  358,  461,  144,   50,   47,   48,   44,
+ /*   120 */    10,   13,  305,  306,   12,   11,  340,  341,   40,   20,
+ /*   130 */   105,  177,  522,   46,   46,   41,   19,  522,  143,  297,
+ /*   140 */   325,   43,  375,  376,  377,  373,  372,  368,  367,  369,
+ /*   150 */   370,  371,  378,  379,  225,  312,  293,  206,  225,  141,
+ /*   160 */   124,  225,   54,  119,  123,  225,  459,   38,  173,  246,
+ /*   170 */   319,  315,  386,  347,  455,  232,  294,  303,  459,  313,
+ /*   180 */   139,  321,   41,   31,  459,   41,   41,    2,   43,  188,
+ /*   190 */     2,   43,   43,   50,   47,   48,   44,   10,   13,  305,
+ /*   200 */   306,   12,   11,  340,  341,   40,   20,  225,  136,  301,
+ /*   210 */   144,  194,  350,  144,   46,  202,  206,  328,  198,  375,
+ /*   220 */   376,  377,  373,  372,  368,  367,  369,  370,  371,  378,
+ /*   230 */   379,   21,    9,   28,  185,   41,  318,  225,  265,  271,
+ /*   240 */   264,   43,  206,   27,  173,  206,   50,   47,   48,   44,
+ /*   250 */    10,   13,  305,  306,   12,   11,  340,  341,   40,   20,
+ /*   260 */   225,  178,   18,  212,  330,  317,   17,   32,    8,   14,
+ /*   270 */   325,  267,  375,  376,  377,  373,  372,  368,  367,  369,
+ /*   280 */   370,  371,  378,  379,  136,  363,  363,  207,   41,    4,
+ /*   290 */    46,    5,  131,  233,   43,   25,  186,  289,  318,   50,
+ /*   300 */    47,   48,   44,   10,   13,  305,  306,   12,   11,  340,
+ /*   310 */   341,   40,   20,  225,  100,  161,   18,  355,  361,  317,
+ /*   320 */    26,  109,  360,  346,  325,  375,  376,  377,  373,  372,
+ /*   330 */   368,  367,  369,  370,  371,  378,  379,  106,  201,  172,
+ /*   340 */    25,  206,  288,   25,   18,  261,  181,  317,  325,   45,
+ /*   350 */   339,  129,   50,   47,   48,   44,   10,   13,  305,  306,
+ /*   360 */    12,   11,  340,  341,   40,   20,  225,  104,  162,   18,
+ /*   370 */    16,  205,  317,  206,  248,  238,   43,  325,  375,  376,
+ /*   380 */   377,  373,  372,  368,  367,  369,  370,  371,  378,  379,
+ /*   390 */   255,  354,  243,  229,  206,  342,   18,  239,  242,  241,
+ /*   400 */   248,  266,  300,  330,  240,   50,   47,   48,   44,   10,
+ /*   410 */    13,  305,  306,   12,   11,  340,  341,   40,   20,  225,
+ /*   420 */   165,  176,  184,   18,   18,   18,  253,  215,  251,  325,
+ /*   430 */   325,  375,  376,  377,  373,  372,  368,  367,  369,  370,
+ /*   440 */   371,  378,  379,  304,  268,  159,  207,  207,  247,  206,
+ /*   450 */   148,   41,  195,  350,  325,   27,   33,   43,   50,   47,
+ /*   460 */    48,   44,   10,   13,  305,  306,   12,   11,  340,  341,
+ /*   470 */    40,   20,  163,  225,  328,  199,  133,   29,  187,   23,
+ /*   480 */   250,  325,  101,  225,  375,  376,  377,  373,  372,  368,
+ /*   490 */   367,  369,  370,  371,  378,  379,  225,  298,  207,  334,
+ /*   500 */   225,   45,  312,  103,  299,  192,  154,  364,   18,  302,
+ /*   510 */   135,  317,  285,   35,  173,  203,  320,    3,  236,    6,
+ /*   520 */   108,   41,  232,  294,  303,  134,  313,   43,  130,  249,
+ /*   530 */   329,  231,  250,  225,  280,   50,   47,   48,   44,   10,
+ /*   540 */    13,  305,  306,   12,   11,  340,  341,   40,   20,  336,
+ /*   550 */    36,  166,  212,  230,  332,  228,  338,    8,  132,  330,
+ /*   560 */   325,  375,  376,  377,  373,  372,  368,  367,  369,  370,
+ /*   570 */   371,  378,  379,  225,  312,  345,   37,  362,  141,  312,
+ /*   580 */    94,   77,  135,  156,  236,  182,  173,  135,  122,  204,
+ /*   590 */   315,  386,  365,  225,  232,  294,  303,  137,  313,  232,
+ /*   600 */   294,  303,  125,  313,   41,  222,  333,  180,  277,  337,
+ /*   610 */    43,  225,   50,   47,   48,   44,   10,   13,  305,  306,
+ /*   620 */    12,   11,  340,  341,   40,   20,  136,  335,  316,    5,
+ /*   630 */    22,  197,  269,   34,  173,  148,  126,  116,  375,  376,
+ /*   640 */   377,  373,  372,  368,  367,  369,  370,  371,  378,  379,
+ /*   650 */   225,  312,  298,  225,  292,  141,  312,  258,   77,  135,
+ /*   660 */   153,  183,  318,  301,  135,  175,  284,  315,  386,  461,
+ /*   670 */   117,  232,  294,  303,  325,  313,  232,  294,  303,  382,
+ /*   680 */   313,  461,  220,  110,  329,  298,  318,  461,  329,   50,
+ /*   690 */    47,   48,   44,   10,   13,  305,  306,   12,   11,  340,
+ /*   700 */   341,   40,   20,  225,   30,  191,   46,  189,  314,  107,
+ /*   710 */   329,  329,  146,   97,  102,  375,  376,  377,  373,  372,
+ /*   720 */   368,  367,  369,  370,  371,  378,  379,  298,  298,  298,
+ /*   730 */   329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+ /*   740 */   329,  329,   50,   47,   48,   44,   10,   13,  305,  306,
+ /*   750 */    12,   11,  340,  341,   40,   20,  225,  329,  329,  329,
+ /*   760 */   329,  329,  329,  329,  329,  114,  160,  115,  375,  376,
+ /*   770 */   377,  373,  372,  368,  367,  369,  370,  371,  378,  379,
+ /*   780 */   298,  298,  298,  329,  329,  329,  329,  329,  329,  329,
+ /*   790 */   329,  329,  329,  329,  283,   50,   47,   48,   44,   10,
+ /*   800 */    13,  305,  306,   12,   11,  340,  341,   40,   20,  329,
+ /*   810 */   225,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+ /*   820 */   329,  375,  376,  377,  373,  372,  368,  367,  369,  370,
+ /*   830 */   371,  378,  379,  200,  329,  329,  329,  329,  329,  329,
+ /*   840 */   329,  329,  329,  329,  329,  329,  329,  329,  329,   50,
+ /*   850 */    47,   48,   44,   10,   13,  305,  306,   12,   11,  340,
+ /*   860 */   341,   40,   20,  225,  329,  329,  329,  329,  329,  329,
+ /*   870 */   329,  329,  329,  329,  329,  375,  376,  377,  373,  372,
+ /*   880 */   368,  367,  369,  370,  371,  378,  379,  329,  329,  329,
+ /*   890 */   329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+ /*   900 */   329,  329,   50,   47,   48,   44,   10,   13,  305,  306,
+ /*   910 */    12,   11,  340,  341,   40,   20,  329,  329,  329,  329,
+ /*   920 */   329,  329,  329,  329,  329,  329,  329,  290,  375,  376,
+ /*   930 */   377,  373,  372,  368,  367,  369,  370,  371,  378,  379,
+ /*   940 */   225,  312,  329,  225,  329,  141,  312,  329,   77,  135,
+ /*   950 */   152,  329,  329,  329,  135,  158,  208,  315,  386,  458,
+ /*   960 */   329,  232,  294,  303,  325,  313,  232,  294,  303,  329,
+ /*   970 */   313,  458,  223,  329,  329,  329,  318,  458,  329,   50,
+ /*   980 */    47,   48,   44,   10,   13,  305,  306,   12,   11,  340,
+ /*   990 */   341,   40,   20,  225,  329,  329,   46,  329,  329,  329,
+ /*  1000 */   329,  329,  329,  329,  329,  375,  376,  377,  373,  372,
+ /*  1010 */   368,  367,  369,  370,  371,  378,  379,  329,  329,  329,
+ /*  1020 */   329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+ /*  1030 */   329,  329,   50,   47,   48,   44,   10,   13,  305,  306,
+ /*  1040 */    12,   11,  340,  341,   40,   20,  329,  329,  329,  329,
+ /*  1050 */   329,  329,  329,  329,  329,  329,  329,  329,  375,  376,
+ /*  1060 */   377,  373,  372,  368,  367,  369,  370,  371,  378,  379,
+ /*  1070 */   329,  329,  329,   50,   47,   48,   44,   10,   13,  305,
+ /*  1080 */   306,   12,   11,  340,  341,   40,   20,  329,  329,  329,
+ /*  1090 */   329,  329,  329,  329,  329,  329,  329,  329,  329,  375,
+ /*  1100 */   376,  377,  373,  372,  368,  367,  369,  370,  371,  378,
+ /*  1110 */   379,  329,  329,  329,  329,  329,   42,  329,  145,  211,
+ /*  1120 */   329,  329,    6,  108,  329,  279,  329,  312,  134,  329,
+ /*  1130 */   329,  150,  249,  329,  231,  135,  235,   41,   39,  329,
+ /*  1140 */   329,   52,  329,   43,  311,  329,  312,  232,  294,  303,
+ /*  1150 */   147,  313,  329,  170,  135,  329,   51,   49,  331,  237,
+ /*  1160 */   296,  329,  325,  106,    1,  278,  232,  294,  303,  329,
+ /*  1170 */   313,  155,  329,   42,  318,  145,  216,  329,   96,    6,
+ /*  1180 */   108,   18,  329,  226,  317,  134,  329,  313,  329,  249,
+ /*  1190 */   329,  231,  329,  235,   41,   39,  256,  329,   52,  329,
+ /*  1200 */    43,  329,  312,  329,  329,  329,  141,  329,  329,   66,
+ /*  1210 */   119,  238,  329,   51,   49,  331,  237,  296,  315,  386,
+ /*  1220 */   106,    1,  232,  294,  303,  329,  313,  270,  329,  329,
+ /*  1230 */    42,  329,  140,   92,  329,   96,    6,  108,   18,   41,
+ /*  1240 */   169,  317,  134,  329,  273,   43,  249,  329,  231,  325,
+ /*  1250 */   235,   41,   39,  244,  329,   52,   41,   43,  329,  312,
+ /*  1260 */   329,  318,   43,  141,  329,  329,   67,  135,  225,  329,
+ /*  1270 */    51,   49,  331,  237,  296,  315,  386,  106,    1,  224,
+ /*  1280 */   294,  303,  329,  313,  310,  329,  329,   42,  329,  145,
+ /*  1290 */   213,  329,   96,    6,  108,  329,   41,  329,  329,  134,
+ /*  1300 */   329,  323,   43,  249,  329,  231,  329,  235,  329,   39,
+ /*  1310 */   329,  329,   52,   41,  329,  329,  312,  329,  329,   43,
+ /*  1320 */   141,   46,  329,   86,  135,  329,  329,   51,   49,  331,
+ /*  1330 */   237,  296,  315,  386,  106,    1,  232,  294,  303,  329,
+ /*  1340 */   313,  274,  329,  329,   42,  329,  142,  216,  329,   96,
+ /*  1350 */     6,  108,  329,   41,  329,  329,  134,  329,  348,   43,
+ /*  1360 */   249,  329,  231,  329,  235,  329,    7,  329,  329,   52,
+ /*  1370 */    41,  329,  329,  312,  329,  329,   43,  141,  329,  329,
+ /*  1380 */    90,  135,  329,  329,   51,   49,  331,  237,  296,  315,
+ /*  1390 */   386,  106,    1,  232,  294,  303,  329,  313,  295,  329,
+ /*  1400 */   329,   42,  329,  138,  216,  329,   96,    6,  108,  329,
+ /*  1410 */    41,  329,  329,  134,  329,  322,   43,  249,  329,  231,
+ /*  1420 */   329,  235,  329,   39,  329,  329,   52,   41,  329,  329,
+ /*  1430 */   312,  329,  329,   43,  141,  329,  329,   87,  135,  329,
+ /*  1440 */   329,   51,   49,  331,  237,  296,  315,  386,  106,    1,
+ /*  1450 */   232,  294,  303,  329,  313,  384,  329,  329,   42,  329,
+ /*  1460 */   131,  216,  329,   96,    6,  108,  329,   41,  329,  329,
+ /*  1470 */   134,  329,  380,   43,  249,  329,  231,  329,  235,  329,
+ /*  1480 */    15,  329,  329,   52,   41,  329,  329,  312,  329,  329,
+ /*  1490 */    43,  141,  329,  329,   79,  135,  329,  329,   51,   49,
+ /*  1500 */   331,  237,  296,  315,  386,  106,    1,  232,  294,  303,
+ /*  1510 */   329,  313,  272,  329,  329,   42,  329,  145,  210,  329,
+ /*  1520 */    96,    6,  108,  329,   41,  329,  329,  134,  329,  349,
+ /*  1530 */    43,  249,  329,  231,  329,  221,  329,   39,  329,  329,
+ /*  1540 */    52,   41,  329,  329,  312,  329,  329,   43,  141,  329,
+ /*  1550 */   329,   70,  135,  329,  329,   51,   49,  331,  237,  296,
+ /*  1560 */   315,  386,  106,    1,  232,  294,  303,  329,  313,  324,
+ /*  1570 */   329,  329,   42,  329,  145,  209,  329,   96,    6,  108,
+ /*  1580 */   329,   41,  329,  329,  134,  329,  326,   43,  249,  329,
+ /*  1590 */   231,  329,  235,  329,   39,  329,  329,   52,   41,  329,
+ /*  1600 */   329,  312,  329,  329,   43,  141,  329,  329,   74,  135,
+ /*  1610 */   329,  329,   51,   49,  331,  237,  296,  315,  386,  106,
+ /*  1620 */     1,  232,  294,  303,  329,  313,  262,  329,  329,   42,
+ /*  1630 */   329,  131,  214,  329,   96,    6,  108,  329,   41,  329,
+ /*  1640 */   329,  134,  329,  327,   43,  249,  329,  231,  329,  235,
+ /*  1650 */   329,   15,  329,  329,   52,   41,  329,  329,  312,  329,
+ /*  1660 */   329,   43,  141,  329,  329,   53,  135,  329,  329,   51,
+ /*  1670 */    49,  331,  237,  296,  315,  386,  106,  329,  232,  294,
+ /*  1680 */   303,  329,  313,  286,  329,  329,   42,  329,  131,  216,
+ /*  1690 */   329,   96,    6,  108,  329,   41,  329,  329,  134,  329,
+ /*  1700 */   343,   43,  249,  329,  231,  329,  235,  329,   15,  329,
+ /*  1710 */   329,   52,   41,  329,  329,  312,  329,  329,   43,  118,
+ /*  1720 */   329,  329,   76,  135,  329,  329,   51,   49,  331,  237,
+ /*  1730 */   296,  315,  386,  106,  329,  232,  294,  303,  329,  313,
+ /*  1740 */   329,  329,  329,  329,  504,  329,  329,  329,   96,  329,
+ /*  1750 */   357,  504,  329,  504,  504,  364,  504,  504,  329,  329,
+ /*  1760 */   329,   35,  504,  329,  504,    2,  504,    6,  108,  329,
+ /*  1770 */   198,  174,  329,  134,  329,  329,  329,  249,  329,  231,
+ /*  1780 */   325,  504,  329,   21,    9,  329,  329,  329,  144,  329,
+ /*  1790 */   329,  329,  504,  329,  312,   99,  179,  206,  141,  329,
+ /*  1800 */   329,   58,  135,  329,  329,  325,  504,  329,   21,    9,
+ /*  1810 */   315,  386,  329,  312,  232,  294,  303,  141,  313,  329,
+ /*  1820 */    71,  135,  206,  344,   37,  362,  329,  329,  329,  315,
+ /*  1830 */   386,  329,  329,  232,  294,  303,  312,  313,  329,  329,
+ /*  1840 */   141,  329,  329,   72,  135,  329,  329,  312,  329,  329,
+ /*  1850 */   329,  141,  315,  386,   65,  135,  232,  294,  303,  329,
+ /*  1860 */   313,  329,  329,  315,  386,  329,  329,  232,  294,  303,
+ /*  1870 */   329,  313,  329,  329,  312,  198,  167,  329,  141,  329,
+ /*  1880 */   329,   69,  135,  329,  329,  325,  329,  329,   21,    9,
+ /*  1890 */   315,  386,  329,  329,  232,  294,  303,  312,  313,  329,
+ /*  1900 */   329,  141,  206,  329,   85,  135,  329,  312,  329,  329,
+ /*  1910 */   329,  149,  329,  315,  386,  135,  312,  232,  294,  303,
+ /*  1920 */   141,  313,  329,   81,  135,  329,  329,  232,  294,  303,
+ /*  1930 */   329,  313,  315,  386,  329,  329,  232,  294,  303,  312,
+ /*  1940 */   313,  329,  329,  141,  329,  329,   82,  135,  329,  329,
+ /*  1950 */   312,  329,  329,  329,  141,  315,  386,   63,  135,  232,
+ /*  1960 */   294,  303,  329,  313,  329,  329,  315,  386,  329,  329,
+ /*  1970 */   232,  294,  303,  329,  313,  329,  312,  329,  329,  329,
+ /*  1980 */   141,  329,  329,   73,  135,  329,  329,  312,  329,  329,
+ /*  1990 */   329,  141,  315,  386,   83,  135,  232,  294,  303,  329,
+ /*  2000 */   313,  329,  329,  315,  386,  329,  312,  232,  294,  303,
+ /*  2010 */   141,  313,  329,   89,  135,  329,  329,  329,  329,  329,
+ /*  2020 */   329,  329,  315,  386,  329,  312,  232,  294,  303,  111,
+ /*  2030 */   313,  329,   68,  135,  329,  329,  312,  329,  329,  329,
+ /*  2040 */   141,  315,  386,   62,  135,  232,  294,  303,  329,  313,
+ /*  2050 */   329,  329,  315,  386,  329,  329,  232,  294,  303,  329,
+ /*  2060 */   313,  329,  312,  329,  329,  329,  141,  329,  329,   61,
+ /*  2070 */   135,  329,  329,  312,  329,  329,  329,  141,  315,  386,
+ /*  2080 */    91,  135,  232,  294,  303,  329,  313,  329,  329,  315,
+ /*  2090 */   386,  329,  312,  232,  294,  303,  141,  313,  329,   78,
+ /*  2100 */   135,  329,  329,  329,  329,  329,  329,  329,  315,  386,
+ /*  2110 */   329,  312,  232,  294,  303,  141,  313,  329,   66,  135,
+ /*  2120 */   329,  329,  312,  329,  329,  329,  141,  315,  386,   80,
+ /*  2130 */   135,  232,  294,  303,  329,  313,  329,  329,  315,  386,
+ /*  2140 */   329,  329,  232,  294,  303,  329,  313,  329,  312,  329,
+ /*  2150 */   329,  329,  113,  329,  329,   88,  135,  329,  329,  312,
+ /*  2160 */   329,  329,  329,  112,  315,  386,   84,  135,  232,  294,
+ /*  2170 */   303,  329,  313,  329,  329,  315,  386,  329,  312,  232,
+ /*  2180 */   294,  303,  141,  313,  329,   57,  135,  329,  329,  329,
+ /*  2190 */   329,  329,  329,  329,  315,  386,  329,  312,  232,  294,
+ /*  2200 */   303,   93,  313,  329,   59,  121,  329,  329,  312,  329,
+ /*  2210 */   329,  329,  141,  315,  386,   75,  135,  232,  294,  303,
+ /*  2220 */   329,  313,  329,  329,  315,  386,  329,  329,  232,  294,
+ /*  2230 */   303,  329,  313,  329,  312,  329,  329,  329,  141,  329,
+ /*  2240 */   329,   60,  135,  329,  329,  312,  329,  329,  329,  141,
+ /*  2250 */   315,  386,   64,  135,  232,  294,  303,  329,  313,  329,
+ /*  2260 */   329,  315,  386,  329,  312,  232,  294,  303,  120,  313,
+ /*  2270 */   329,   55,  135,  329,  329,  329,  329,  329,  329,  329,
+ /*  2280 */   315,  386,  329,  312,  232,  294,  303,   93,  313,  329,
+ /*  2290 */    56,  121,  225,  329,  312,  329,  198,  164,  157,  315,
+ /*  2300 */   386,  329,  135,  219,  294,  303,  325,  313,  352,   21,
+ /*  2310 */     9,  287,  234,  329,  232,  294,  303,  329,  313,  329,
+ /*  2320 */    41,  329,  329,  206,  312,  329,   43,  329,  151,    2,
+ /*  2330 */   329,  329,  135,  329,  329,  329,  329,  329,  329,  329,
+ /*  2340 */   198,  168,  329,  329,  232,  294,  303,  329,  313,  329,
+ /*  2350 */   325,  329,  144,   21,    9,  198,  171,  329,  329,  329,
+ /*  2360 */   329,  329,  329,  329,  329,  325,  329,  206,   21,    9,
+ /*  2370 */   329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+ /*  2380 */   329,  329,  206,
     );
     static public $yy_lookahead = array(
  /*     0 */     1,    3,    4,    5,    6,    7,    8,    9,   10,   11,
- /*    10 */    12,   13,  113,  114,   16,   91,   17,   17,   91,   16,
- /*    20 */    22,   23,   19,   20,  100,   24,   28,  100,   29,   29,
- /*    30 */    32,   33,   34,   29,   35,   35,  112,   16,   37,   40,
+ /*    10 */    12,   13,   16,   98,   16,   19,   17,   17,  113,  114,
+ /*    20 */    22,   23,   16,   97,   18,   19,   28,  112,   29,   29,
+ /*    30 */    32,   33,   34,   16,   35,   35,   19,   20,  112,   40,
  /*    40 */    41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
- /*    50 */    51,   52,   53,    1,   82,   83,   84,   85,   86,   38,
- /*    60 */    16,   90,   18,   19,   90,   66,   67,   68,   69,   70,
- /*    70 */    71,   72,   73,   74,   75,   76,   77,  103,  104,   27,
- /*    80 */    36,   29,   16,   96,   18,   19,   16,   35,  117,   19,
- /*    90 */    20,  117,   40,   41,   42,   43,   44,   45,   46,   47,
- /*   100 */    48,   49,   50,   51,   52,   53,    4,    5,    6,    7,
- /*   110 */     8,   20,  118,   38,   38,   13,   14,   15,   66,   67,
- /*   120 */    68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
- /*   130 */     1,   85,   62,    1,   59,   89,   61,   61,   92,   93,
- /*   140 */    65,   16,   20,   21,   19,   17,   17,  101,  102,   17,
- /*   150 */    59,  105,  106,  107,   29,  109,   31,   29,   29,   91,
- /*   160 */    35,   29,   30,   35,   35,  119,  120,   35,  100,   40,
- /*   170 */    41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
- /*   180 */    51,   52,   53,   61,   90,   91,   54,  113,  114,  111,
- /*   190 */    16,  113,  114,   19,  100,   66,   67,   68,   69,   70,
- /*   200 */    71,   72,   73,   74,   75,   76,   77,    1,   85,   59,
- /*   210 */     1,  117,   89,    1,   64,   92,   93,   94,    1,   17,
- /*   220 */   108,   17,   20,   17,  101,  102,   17,  115,  105,  106,
- /*   230 */   107,   29,  109,   29,   17,   29,   62,   35,   29,   35,
- /*   240 */    38,   35,   19,   31,   35,   99,   40,   41,   42,   43,
+ /*    50 */    51,   52,   53,    4,    5,    6,    7,    8,   62,   93,
+ /*    60 */    94,   95,   13,   14,   15,   66,   67,   68,   69,   70,
+ /*    70 */    71,   72,   73,   74,   75,   76,   77,    1,   85,   62,
+ /*    80 */     1,    1,   89,   38,  117,   92,   93,   82,   83,   84,
+ /*    90 */    85,   86,   38,   17,  101,  102,   17,   17,  105,  106,
+ /*   100 */   107,   86,  109,   88,   59,   29,   61,    1,   29,   30,
+ /*   110 */    65,   35,  119,  120,   35,   61,   40,   41,   42,   43,
+ /*   120 */    44,   45,   46,   47,   48,   49,   50,   51,   52,   53,
+ /*   130 */    90,   91,   59,   54,   54,   29,   16,   64,   18,   19,
+ /*   140 */   100,   35,   66,   67,   68,   69,   70,   71,   72,   73,
+ /*   150 */    74,   75,   76,   77,    1,   85,   36,  117,    1,   89,
+ /*   160 */    18,    1,   92,   93,   94,    1,   17,   20,   21,   20,
+ /*   170 */    17,  101,  102,   17,   17,  105,  106,  107,   29,  109,
+ /*   180 */    38,   17,   29,   31,   35,   29,   29,   38,   35,   90,
+ /*   190 */    38,   35,   35,   40,   41,   42,   43,   44,   45,   46,
+ /*   200 */    47,   48,   49,   50,   51,   52,   53,    1,   61,  111,
+ /*   210 */    61,  113,  114,   61,   54,   90,  117,  118,   90,   66,
+ /*   220 */    67,   68,   69,   70,   71,   72,   73,   74,   75,   76,
+ /*   230 */    77,  103,  104,   27,  110,   29,  112,    1,   84,   85,
+ /*   240 */    86,   35,  117,   20,   21,  117,   40,   41,   42,   43,
  /*   250 */    44,   45,   46,   47,   48,   49,   50,   51,   52,   53,
- /*   260 */     1,   16,   37,   61,   19,   20,   54,  110,    1,    2,
- /*   270 */    25,   54,   66,   67,   68,   69,   70,   71,   72,   73,
- /*   280 */    74,   75,   76,   77,   17,   62,   90,   91,   29,    1,
- /*   290 */    65,   90,  110,   37,   35,   39,  100,   20,   21,   40,
+ /*   260 */     1,   91,   16,   59,   25,   19,   20,   31,   64,   16,
+ /*   270 */   100,   25,   66,   67,   68,   69,   70,   71,   72,   73,
+ /*   280 */    74,   75,   76,   77,   61,   85,   85,  117,   29,   37,
+ /*   290 */    54,   38,   18,   19,   35,   37,  110,   39,  112,   40,
  /*   300 */    41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
- /*   310 */    51,   52,   53,  117,   90,   91,   96,   29,  117,  118,
- /*   320 */    84,   85,   86,   35,  100,   66,   67,   68,   69,   70,
- /*   330 */    71,   72,   73,   74,   75,   76,   77,    1,   61,   99,
- /*   340 */     1,  117,   37,   85,   39,   18,   19,   89,   10,   16,
- /*   350 */    99,   93,   19,   17,   16,   21,   17,   93,   85,    1,
- /*   360 */    22,   23,   29,  105,  106,  107,   28,  109,   35,  105,
- /*   370 */    32,   33,   34,  109,   25,   17,   40,   41,   42,   43,
- /*   380 */    44,   45,   46,   47,   48,   49,   50,   51,   52,   53,
- /*   390 */    63,    1,   31,   59,  121,  122,   25,    2,   64,   38,
- /*   400 */    18,   19,   66,   67,   68,   69,   70,   71,   72,   73,
- /*   410 */    74,   75,   76,   77,   24,   20,   78,   79,   80,   91,
- /*   420 */    91,   29,   61,   93,   94,   95,   19,   35,  100,  100,
- /*   430 */    40,   41,   42,   43,   44,   45,   46,   47,   48,   49,
- /*   440 */    50,   51,   52,   53,   91,  117,  117,   37,   16,   39,
- /*   450 */    79,   19,  110,  100,  112,   19,   66,   67,   68,   69,
- /*   460 */    70,   71,   72,   73,   74,   75,   76,   77,    1,   85,
- /*   470 */   117,    1,    1,   89,  108,   90,   92,   93,   94,   16,
- /*   480 */     1,  115,   19,   17,   17,  101,  102,   17,   17,  105,
- /*   490 */   106,  107,   29,  109,   31,   29,   17,   91,   35,   29,
- /*   500 */    21,   35,  117,   19,   18,   35,  100,   40,   41,   42,
- /*   510 */    43,   44,   45,   46,   47,   48,   49,   50,   51,   52,
- /*   520 */    53,    1,   16,  117,   54,   19,   16,   18,    1,   19,
- /*   530 */    97,   97,    1,   66,   67,   68,   69,   70,   71,   72,
- /*   540 */    73,   74,   75,   76,   77,  112,  112,   38,   17,   90,
- /*   550 */    93,   94,   16,   16,   26,   19,   19,   93,   94,   39,
- /*   560 */    40,   41,   42,   43,   44,   45,   46,   47,   48,   49,
- /*   570 */    50,   51,   52,   53,    1,    2,  117,   17,  110,   16,
- /*   580 */   112,   54,   19,   18,   97,   25,   66,   67,   68,   69,
- /*   590 */    70,   71,   72,   73,   74,   75,   76,   77,   62,  112,
- /*   600 */    29,   19,   91,   86,   38,   88,   35,   19,   63,   55,
- /*   610 */    63,  100,   97,   40,   41,   42,   43,   44,   45,   46,
- /*   620 */    47,   48,   49,   50,   51,   52,   53,  112,   19,   65,
- /*   630 */    39,   18,    2,   36,   36,   59,   19,   18,   97,   66,
- /*   640 */    67,   68,   69,   70,   71,   72,   73,   74,   75,   76,
- /*   650 */    77,    1,   85,  112,    1,   18,   89,   85,   19,   92,
- /*   660 */    93,   89,   19,   38,   20,   93,   91,   17,  101,  102,
- /*   670 */    17,   97,  105,  106,  107,  100,  109,  105,  106,  107,
- /*   680 */    19,  109,   29,  116,    2,   19,  112,  112,   35,   21,
- /*   690 */    40,   41,   42,   43,   44,   45,   46,   47,   48,   49,
- /*   700 */    50,   51,   52,   53,    1,    1,  100,   54,  112,  117,
- /*   710 */   111,    2,   21,  110,   98,   97,   66,   67,   68,   69,
- /*   720 */    70,   71,   72,   73,   74,   75,   76,   77,  112,   61,
- /*   730 */   112,   85,   14,  110,   87,  115,  114,  123,  123,  123,
- /*   740 */   123,  123,   97,   40,   41,   42,   43,   44,   45,   46,
- /*   750 */    47,   48,   49,   50,   51,   52,   53,  112,  123,  123,
- /*   760 */   123,  123,  123,  123,  123,  123,  123,  123,  122,   66,
- /*   770 */    67,   68,   69,   70,   71,   72,   73,   74,   75,   76,
- /*   780 */    77,    1,   79,   85,  123,    1,  123,   89,  123,  123,
- /*   790 */    92,   93,  123,   97,   17,  123,   97,   17,   17,  101,
- /*   800 */   102,   17,  123,  105,  106,  107,   29,  109,  112,  123,
- /*   810 */    29,  112,   35,   29,  116,  123,   35,  123,  123,   35,
- /*   820 */    40,   41,   42,   43,   44,   45,   46,   47,   48,   49,
- /*   830 */    50,   51,   52,   53,    1,  123,  123,  123,   54,  123,
- /*   840 */   123,  123,  123,  123,  123,  123,   66,   67,   68,   69,
- /*   850 */    70,   71,   72,   73,   74,   75,   76,   77,  123,  123,
- /*   860 */   123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
- /*   870 */   123,  123,   39,   40,   41,   42,   43,   44,   45,   46,
- /*   880 */    47,   48,   49,   50,   51,   52,   53,    1,  123,  123,
- /*   890 */   123,  123,  123,  123,  123,  123,  123,  123,  123,   66,
- /*   900 */    67,   68,   69,   70,   71,   72,   73,   74,   75,   76,
- /*   910 */    77,  123,  123,  123,  123,  123,  123,  123,  123,  123,
- /*   920 */   123,  123,  123,  123,  123,  123,   40,   41,   42,   43,
- /*   930 */    44,   45,   46,   47,   48,   49,   50,   51,   52,   53,
- /*   940 */     1,  123,  123,  123,  123,  123,  123,  123,  123,  123,
- /*   950 */   123,   65,   66,   67,   68,   69,   70,   71,   72,   73,
- /*   960 */    74,   75,   76,   77,  123,  123,  123,  123,  123,   30,
- /*   970 */   123,  123,  123,  123,  123,  123,  123,  123,  123,   40,
+ /*   310 */    51,   52,   53,    1,   90,   91,   16,   65,   79,   19,
+ /*   320 */    20,  121,  122,  122,  100,   66,   67,   68,   69,   70,
+ /*   330 */    71,   72,   73,   74,   75,   76,   77,   63,   24,   91,
+ /*   340 */    37,  117,   39,   37,   16,   39,   90,   19,  100,    2,
+ /*   350 */    19,   37,   40,   41,   42,   43,   44,   45,   46,   47,
+ /*   360 */    48,   49,   50,   51,   52,   53,    1,   90,   91,   16,
+ /*   370 */    29,   19,   19,  117,   93,   94,   35,  100,   66,   67,
+ /*   380 */    68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
+ /*   390 */    62,   79,   96,   62,  117,   17,   16,   18,   19,   19,
+ /*   400 */    93,   94,   19,   25,   39,   40,   41,   42,   43,   44,
+ /*   410 */    45,   46,   47,   48,   49,   50,   51,   52,   53,    1,
+ /*   420 */    91,   91,   90,   16,   16,   16,   19,   19,   19,  100,
+ /*   430 */   100,   66,   67,   68,   69,   70,   71,   72,   73,   74,
+ /*   440 */    75,   76,   77,  108,   29,   91,  117,  117,   30,  117,
+ /*   450 */   115,   29,  113,  114,  100,   20,   96,   35,   40,   41,
+ /*   460 */    42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
+ /*   470 */    52,   53,   91,    1,  118,   99,   18,   26,  110,   20,
+ /*   480 */     2,  100,   97,    1,   66,   67,   68,   69,   70,   71,
+ /*   490 */    72,   73,   74,   75,   76,   77,    1,  112,  117,   17,
+ /*   500 */     1,    2,   85,   99,   19,  110,   89,   10,   16,   19,
+ /*   510 */    93,   19,   17,   16,   21,   99,   17,   38,   59,   22,
+ /*   520 */    23,   29,  105,  106,  107,   28,  109,   35,   18,   32,
+ /*   530 */    33,   34,    2,    1,   65,   40,   41,   42,   43,   44,
+ /*   540 */    45,   46,   47,   48,   49,   50,   51,   52,   53,   17,
+ /*   550 */    20,   91,   59,   21,   36,   19,   19,   64,   19,   25,
+ /*   560 */   100,   66,   67,   68,   69,   70,   71,   72,   73,   74,
+ /*   570 */    75,   76,   77,    1,   85,   78,   79,   80,   89,   85,
+ /*   580 */    19,   92,   93,   89,   59,   63,   21,   93,   19,   17,
+ /*   590 */   101,  102,   17,    1,  105,  106,  107,   18,  109,  105,
+ /*   600 */   106,  107,   18,  109,   29,  116,   36,   63,   19,   17,
+ /*   610 */    35,    1,   40,   41,   42,   43,   44,   45,   46,   47,
+ /*   620 */    48,   49,   50,   51,   52,   53,   61,   17,  108,   38,
+ /*   630 */     2,   19,   39,   55,   21,  115,   18,   97,   66,   67,
+ /*   640 */    68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
+ /*   650 */     1,   85,  112,    1,  100,   89,   85,  115,   92,   93,
+ /*   660 */    89,  110,  112,  111,   93,   91,   17,  101,  102,   17,
+ /*   670 */    97,  105,  106,  107,  100,  109,  105,  106,  107,   14,
+ /*   680 */   109,   29,  116,   87,  123,  112,  112,   35,  123,   40,
+ /*   690 */    41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
+ /*   700 */    51,   52,   53,    1,    2,  110,   54,  110,  114,  110,
+ /*   710 */   123,  123,   97,   97,   97,   66,   67,   68,   69,   70,
+ /*   720 */    71,   72,   73,   74,   75,   76,   77,  112,  112,  112,
+ /*   730 */   123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
+ /*   740 */   123,  123,   40,   41,   42,   43,   44,   45,   46,   47,
+ /*   750 */    48,   49,   50,   51,   52,   53,    1,  123,  123,  123,
+ /*   760 */   123,  123,  123,  123,  123,   97,   97,   97,   66,   67,
+ /*   770 */    68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
+ /*   780 */   112,  112,  112,  123,  123,  123,  123,  123,  123,  123,
+ /*   790 */   123,  123,  123,  123,   39,   40,   41,   42,   43,   44,
+ /*   800 */    45,   46,   47,   48,   49,   50,   51,   52,   53,  123,
+ /*   810 */     1,  123,  123,  123,  123,  123,  123,  123,  123,  123,
+ /*   820 */   123,   66,   67,   68,   69,   70,   71,   72,   73,   74,
+ /*   830 */    75,   76,   77,   24,  123,  123,  123,  123,  123,  123,
+ /*   840 */   123,  123,  123,  123,  123,  123,  123,  123,  123,   40,
+ /*   850 */    41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
+ /*   860 */    51,   52,   53,    1,  123,  123,  123,  123,  123,  123,
+ /*   870 */   123,  123,  123,  123,  123,   66,   67,   68,   69,   70,
+ /*   880 */    71,   72,   73,   74,   75,   76,   77,  123,  123,  123,
+ /*   890 */   123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
+ /*   900 */   123,  123,   40,   41,   42,   43,   44,   45,   46,   47,
+ /*   910 */    48,   49,   50,   51,   52,   53,  123,  123,  123,  123,
+ /*   920 */   123,  123,  123,  123,  123,  123,  123,   65,   66,   67,
+ /*   930 */    68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
+ /*   940 */     1,   85,  123,    1,  123,   89,   85,  123,   92,   93,
+ /*   950 */    89,  123,  123,  123,   93,   91,   17,  101,  102,   17,
+ /*   960 */   123,  105,  106,  107,  100,  109,  105,  106,  107,  123,
+ /*   970 */   109,   29,  116,  123,  123,  123,  112,   35,  123,   40,
  /*   980 */    41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
- /*   990 */    51,   52,   53,    1,  123,  123,  123,  123,  123,  123,
+ /*   990 */    51,   52,   53,    1,  123,  123,   54,  123,  123,  123,
  /*  1000 */   123,  123,  123,  123,  123,   66,   67,   68,   69,   70,
  /*  1010 */    71,   72,   73,   74,   75,   76,   77,  123,  123,  123,
  /*  1020 */   123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
@@ -588,23 +581,23 @@ static public $yy_action = array(
  /*  1130 */   123,   89,   32,   33,   34,   93,   36,   29,   38,  123,
  /*  1140 */   123,   41,  123,   35,  102,  123,   85,  105,  106,  107,
  /*  1150 */    89,  109,  123,   91,   93,  123,   56,   57,   58,   59,
- /*  1160 */    60,  123,  100,   63,   64,   65,  105,  106,  107,   17,
- /*  1170 */   109,  123,  123,   16,  112,   18,   19,  123,   78,   22,
- /*  1180 */    23,   29,   17,  123,  123,   28,  123,   35,  123,   32,
- /*  1190 */    33,   34,  123,   36,   29,   38,  123,  123,   41,  123,
+ /*  1160 */    60,  123,  100,   63,   64,   65,  105,  106,  107,  123,
+ /*  1170 */   109,   93,  123,   16,  112,   18,   19,  123,   78,   22,
+ /*  1180 */    23,   16,  123,  105,   19,   28,  123,  109,  123,   32,
+ /*  1190 */    33,   34,  123,   36,   29,   38,   31,  123,   41,  123,
  /*  1200 */    35,  123,   85,  123,  123,  123,   89,  123,  123,   92,
- /*  1210 */    93,  123,  123,   56,   57,   58,   59,   60,  101,  102,
+ /*  1210 */    93,   94,  123,   56,   57,   58,   59,   60,  101,  102,
  /*  1220 */    63,   64,  105,  106,  107,  123,  109,   17,  123,  123,
- /*  1230 */    16,  123,   18,   19,  123,   78,   22,   23,  123,   29,
- /*  1240 */    91,  123,   28,  123,   17,   35,   32,   33,   34,  100,
- /*  1250 */    36,  123,   38,  123,  123,   41,   29,  123,  123,   85,
- /*  1260 */   123,  112,   35,   89,  123,  123,   92,   93,  123,  123,
+ /*  1230 */    16,  123,   18,   19,  123,   78,   22,   23,   16,   29,
+ /*  1240 */    91,   19,   28,  123,   17,   35,   32,   33,   34,  100,
+ /*  1250 */    36,   29,   38,   31,  123,   41,   29,   35,  123,   85,
+ /*  1260 */   123,  112,   35,   89,  123,  123,   92,   93,    1,  123,
  /*  1270 */    56,   57,   58,   59,   60,  101,  102,   63,   64,  105,
  /*  1280 */   106,  107,  123,  109,   17,  123,  123,   16,  123,   18,
  /*  1290 */    19,  123,   78,   22,   23,  123,   29,  123,  123,   28,
  /*  1300 */   123,   17,   35,   32,   33,   34,  123,   36,  123,   38,
  /*  1310 */   123,  123,   41,   29,  123,  123,   85,  123,  123,   35,
- /*  1320 */    89,  123,  123,   92,   93,  123,  123,   56,   57,   58,
+ /*  1320 */    89,   54,  123,   92,   93,  123,  123,   56,   57,   58,
  /*  1330 */    59,   60,  101,  102,   63,   64,  105,  106,  107,  123,
  /*  1340 */   109,   17,  123,  123,   16,  123,   18,   19,  123,   78,
  /*  1350 */    22,   23,  123,   29,  123,  123,   28,  123,   17,   35,
@@ -628,151 +621,144 @@ static public $yy_action = array(
  /*  1530 */    35,   32,   33,   34,  123,   36,  123,   38,  123,  123,
  /*  1540 */    41,   29,  123,  123,   85,  123,  123,   35,   89,  123,
  /*  1550 */   123,   92,   93,  123,  123,   56,   57,   58,   59,   60,
- /*  1560 */   101,  102,   63,   64,  105,  106,  107,  123,  109,  123,
+ /*  1560 */   101,  102,   63,   64,  105,  106,  107,  123,  109,   17,
  /*  1570 */   123,  123,   16,  123,   18,   19,  123,   78,   22,   23,
- /*  1580 */   123,  123,  123,  123,   28,  123,  123,  123,   32,   33,
- /*  1590 */    34,  123,   36,  123,   38,  123,  123,   41,  123,  123,
- /*  1600 */   123,   85,  123,  123,  123,   89,  123,  123,   92,   93,
+ /*  1580 */   123,   29,  123,  123,   28,  123,   17,   35,   32,   33,
+ /*  1590 */    34,  123,   36,  123,   38,  123,  123,   41,   29,  123,
+ /*  1600 */   123,   85,  123,  123,   35,   89,  123,  123,   92,   93,
  /*  1610 */   123,  123,   56,   57,   58,   59,   60,  101,  102,   63,
- /*  1620 */    64,  105,  106,  107,  123,  109,  123,  123,  123,   16,
- /*  1630 */   123,   18,   19,  123,   78,   22,   23,  123,  123,  123,
- /*  1640 */   123,   28,  123,  123,  123,   32,   33,   34,  123,   36,
- /*  1650 */   123,   38,  123,  123,   41,  123,  123,  123,   85,  123,
- /*  1660 */   123,  123,   89,  123,  123,   92,   93,  123,  123,   56,
+ /*  1620 */    64,  105,  106,  107,  123,  109,   17,  123,  123,   16,
+ /*  1630 */   123,   18,   19,  123,   78,   22,   23,  123,   29,  123,
+ /*  1640 */   123,   28,  123,   17,   35,   32,   33,   34,  123,   36,
+ /*  1650 */   123,   38,  123,  123,   41,   29,  123,  123,   85,  123,
+ /*  1660 */   123,   35,   89,  123,  123,   92,   93,  123,  123,   56,
  /*  1670 */    57,   58,   59,   60,  101,  102,   63,  123,  105,  106,
- /*  1680 */   107,  123,  109,  123,  123,  123,   16,  123,   18,   19,
- /*  1690 */   123,   78,   22,   23,  123,  123,  123,  123,   28,  123,
- /*  1700 */   123,  123,   32,   33,   34,  123,   36,  123,   38,  123,
- /*  1710 */   123,   41,  123,  123,  123,   85,  123,  123,  123,   89,
+ /*  1680 */   107,  123,  109,   17,  123,  123,   16,  123,   18,   19,
+ /*  1690 */   123,   78,   22,   23,  123,   29,  123,  123,   28,  123,
+ /*  1700 */    17,   35,   32,   33,   34,  123,   36,  123,   38,  123,
+ /*  1710 */   123,   41,   29,  123,  123,   85,  123,  123,   35,   89,
  /*  1720 */   123,  123,   92,   93,  123,  123,   56,   57,   58,   59,
  /*  1730 */    60,  101,  102,   63,  123,  105,  106,  107,  123,  109,
- /*  1740 */   123,  123,  123,  123,   17,  123,  116,  123,   78,  123,
- /*  1750 */   123,   24,  123,   26,   27,   10,   29,   30,  123,  123,
+ /*  1740 */   123,  123,  123,  123,   17,  123,  123,  123,   78,  123,
+ /*  1750 */   120,   24,  123,   26,   27,   10,   29,   30,  123,  123,
  /*  1760 */   123,   16,   35,  123,   37,   38,   39,   22,   23,  123,
  /*  1770 */    90,   91,  123,   28,  123,  123,  123,   32,   33,   34,
  /*  1780 */   100,   54,  123,  103,  104,  123,  123,  123,   61,  123,
  /*  1790 */   123,  123,   65,  123,   85,   90,   91,  117,   89,  123,
  /*  1800 */   123,   92,   93,  123,  123,  100,   79,  123,  103,  104,
  /*  1810 */   101,  102,  123,   85,  105,  106,  107,   89,  109,  123,
- /*  1820 */   123,   93,  117,   78,   79,   80,  123,  123,  123,  120,
- /*  1830 */   102,  123,   85,  105,  106,  107,   89,  109,  123,   92,
- /*  1840 */    93,  123,    1,   85,  123,  123,  123,   89,  101,  102,
- /*  1850 */    92,   93,  105,  106,  107,  123,  109,  123,   17,  101,
- /*  1860 */   102,  123,   21,  105,  106,  107,  123,  109,  123,  123,
- /*  1870 */    29,  123,  123,  123,   85,  123,   35,  123,   89,   38,
- /*  1880 */   123,   92,   93,  123,  123,  123,  123,  123,  123,  123,
+ /*  1820 */    92,   93,  117,   78,   79,   80,  123,  123,  123,  101,
+ /*  1830 */   102,  123,  123,  105,  106,  107,   85,  109,  123,  123,
+ /*  1840 */    89,  123,  123,   92,   93,  123,  123,   85,  123,  123,
+ /*  1850 */   123,   89,  101,  102,   92,   93,  105,  106,  107,  123,
+ /*  1860 */   109,  123,  123,  101,  102,  123,  123,  105,  106,  107,
+ /*  1870 */   123,  109,  123,  123,   85,   90,   91,  123,   89,  123,
+ /*  1880 */   123,   92,   93,  123,  123,  100,  123,  123,  103,  104,
  /*  1890 */   101,  102,  123,  123,  105,  106,  107,   85,  109,  123,
- /*  1900 */   123,   89,   61,   85,   92,   93,  123,   89,  123,  123,
- /*  1910 */   123,   93,  123,  101,  102,  123,  123,  105,  106,  107,
- /*  1920 */   123,  109,   85,  105,  106,  107,   89,  109,  123,   92,
- /*  1930 */    93,  123,  123,   85,  123,  123,  123,   89,  101,  102,
- /*  1940 */    92,   93,  105,  106,  107,  123,  109,  123,  123,  101,
- /*  1950 */   102,  123,  123,  105,  106,  107,  123,  109,  123,  123,
- /*  1960 */    85,   90,   91,  123,   89,  123,  123,   92,   93,  123,
- /*  1970 */   123,  100,  123,  123,  103,  104,  101,  102,  123,  123,
- /*  1980 */   105,  106,  107,   85,  109,  123,  123,   89,  117,   85,
- /*  1990 */    92,   93,  123,   89,  123,  123,  123,   93,  123,  101,
- /*  2000 */   102,  123,  123,  105,  106,  107,  123,  109,   85,  105,
- /*  2010 */   106,  107,   89,  109,  123,   92,   93,  123,  123,   85,
- /*  2020 */   123,  123,  123,   89,  101,  102,   92,   93,  105,  106,
- /*  2030 */   107,  123,  109,  123,  123,  101,  102,  123,  123,  105,
- /*  2040 */   106,  107,  123,  109,  123,  123,   85,  123,  123,  123,
- /*  2050 */    89,  123,  123,   92,   93,  123,  123,  123,  123,  123,
- /*  2060 */   123,  123,  101,  102,  123,  123,  105,  106,  107,   85,
- /*  2070 */   109,  123,  123,   89,  123,   85,   92,   93,  123,   89,
- /*  2080 */   123,  123,  123,   93,  123,  101,  102,  123,  123,  105,
- /*  2090 */   106,  107,  123,  109,   85,  105,  106,  107,   89,  109,
- /*  2100 */   123,   92,   93,  123,  123,   85,  123,  123,  123,   89,
- /*  2110 */   101,  102,   92,   93,  105,  106,  107,  123,  109,  123,
- /*  2120 */   123,  101,  102,  123,  123,  105,  106,  107,  123,  109,
- /*  2130 */   123,  123,   85,  123,  123,  123,   89,  123,  123,   92,
- /*  2140 */    93,  123,  123,  123,  123,  123,  123,  123,  101,  102,
- /*  2150 */   123,  123,  105,  106,  107,   85,  109,  123,  123,   89,
- /*  2160 */   123,   85,   92,   93,  123,   89,  123,  123,  123,   93,
- /*  2170 */   123,  101,  102,  123,  123,  105,  106,  107,  123,  109,
- /*  2180 */    85,  105,  106,  107,   89,  109,  123,   92,   93,  123,
- /*  2190 */   123,   85,  123,  123,  123,   89,  101,  102,   92,   93,
- /*  2200 */   105,  106,  107,  123,  109,  123,  123,  101,  102,  123,
- /*  2210 */   123,  105,  106,  107,  123,  109,  123,  123,   85,  123,
- /*  2220 */   123,  123,   89,  123,  123,   92,   93,  123,  123,  123,
- /*  2230 */   123,  123,  123,  123,  101,  102,  123,  123,  105,  106,
- /*  2240 */   107,   85,  109,  123,  123,   89,  123,  123,   92,   93,
- /*  2250 */   123,  123,  123,  123,  123,  123,  123,  101,  102,  123,
- /*  2260 */   123,  105,  106,  107,  123,  109,   85,  123,  123,  123,
- /*  2270 */    89,  123,  123,   92,   93,  123,  123,   85,  123,  123,
- /*  2280 */   123,   89,  101,  102,   92,   93,  105,  106,  107,  123,
- /*  2290 */   109,  123,  123,  101,  102,  123,  123,  105,  106,  107,
- /*  2300 */   123,  109,  123,  123,   85,  123,  123,  123,   89,  123,
- /*  2310 */   123,   92,   93,  123,  123,  123,  123,  123,  123,  123,
- /*  2320 */   101,  102,  123,  123,  105,  106,  107,   85,  109,  123,
- /*  2330 */   123,   89,  123,  123,   92,   93,  123,  123,  123,  123,
- /*  2340 */   123,  123,  123,  101,  102,  123,  123,  105,  106,  107,
- /*  2350 */   123,  109,   85,  123,  123,  123,   89,  123,  123,   92,
- /*  2360 */    93,  123,  123,   85,  123,  123,  123,   89,  101,  102,
- /*  2370 */    92,   93,  105,  106,  107,  123,  109,  123,  123,  101,
- /*  2380 */   102,  123,  123,  105,  106,  107,  123,  109,  123,  123,
- /*  2390 */    85,  123,  123,  123,   89,  123,  123,   92,   93,  123,
- /*  2400 */   123,  123,  123,   90,   91,  123,  101,  102,  123,  123,
- /*  2410 */   105,  106,  107,  100,  109,  123,  103,  104,   90,   91,
- /*  2420 */   123,  123,  123,  123,  123,   90,   91,  123,  100,  123,
- /*  2430 */   117,  103,  104,  123,  123,  100,  123,  123,  103,  104,
- /*  2440 */   123,  123,  123,  123,  123,  117,  123,  123,  123,  123,
- /*  2450 */   123,  123,  117,
+ /*  1900 */   123,   89,  117,  123,   92,   93,  123,   85,  123,  123,
+ /*  1910 */   123,   89,  123,  101,  102,   93,   85,  105,  106,  107,
+ /*  1920 */    89,  109,  123,   92,   93,  123,  123,  105,  106,  107,
+ /*  1930 */   123,  109,  101,  102,  123,  123,  105,  106,  107,   85,
+ /*  1940 */   109,  123,  123,   89,  123,  123,   92,   93,  123,  123,
+ /*  1950 */    85,  123,  123,  123,   89,  101,  102,   92,   93,  105,
+ /*  1960 */   106,  107,  123,  109,  123,  123,  101,  102,  123,  123,
+ /*  1970 */   105,  106,  107,  123,  109,  123,   85,  123,  123,  123,
+ /*  1980 */    89,  123,  123,   92,   93,  123,  123,   85,  123,  123,
+ /*  1990 */   123,   89,  101,  102,   92,   93,  105,  106,  107,  123,
+ /*  2000 */   109,  123,  123,  101,  102,  123,   85,  105,  106,  107,
+ /*  2010 */    89,  109,  123,   92,   93,  123,  123,  123,  123,  123,
+ /*  2020 */   123,  123,  101,  102,  123,   85,  105,  106,  107,   89,
+ /*  2030 */   109,  123,   92,   93,  123,  123,   85,  123,  123,  123,
+ /*  2040 */    89,  101,  102,   92,   93,  105,  106,  107,  123,  109,
+ /*  2050 */   123,  123,  101,  102,  123,  123,  105,  106,  107,  123,
+ /*  2060 */   109,  123,   85,  123,  123,  123,   89,  123,  123,   92,
+ /*  2070 */    93,  123,  123,   85,  123,  123,  123,   89,  101,  102,
+ /*  2080 */    92,   93,  105,  106,  107,  123,  109,  123,  123,  101,
+ /*  2090 */   102,  123,   85,  105,  106,  107,   89,  109,  123,   92,
+ /*  2100 */    93,  123,  123,  123,  123,  123,  123,  123,  101,  102,
+ /*  2110 */   123,   85,  105,  106,  107,   89,  109,  123,   92,   93,
+ /*  2120 */   123,  123,   85,  123,  123,  123,   89,  101,  102,   92,
+ /*  2130 */    93,  105,  106,  107,  123,  109,  123,  123,  101,  102,
+ /*  2140 */   123,  123,  105,  106,  107,  123,  109,  123,   85,  123,
+ /*  2150 */   123,  123,   89,  123,  123,   92,   93,  123,  123,   85,
+ /*  2160 */   123,  123,  123,   89,  101,  102,   92,   93,  105,  106,
+ /*  2170 */   107,  123,  109,  123,  123,  101,  102,  123,   85,  105,
+ /*  2180 */   106,  107,   89,  109,  123,   92,   93,  123,  123,  123,
+ /*  2190 */   123,  123,  123,  123,  101,  102,  123,   85,  105,  106,
+ /*  2200 */   107,   89,  109,  123,   92,   93,  123,  123,   85,  123,
+ /*  2210 */   123,  123,   89,  101,  102,   92,   93,  105,  106,  107,
+ /*  2220 */   123,  109,  123,  123,  101,  102,  123,  123,  105,  106,
+ /*  2230 */   107,  123,  109,  123,   85,  123,  123,  123,   89,  123,
+ /*  2240 */   123,   92,   93,  123,  123,   85,  123,  123,  123,   89,
+ /*  2250 */   101,  102,   92,   93,  105,  106,  107,  123,  109,  123,
+ /*  2260 */   123,  101,  102,  123,   85,  105,  106,  107,   89,  109,
+ /*  2270 */   123,   92,   93,  123,  123,  123,  123,  123,  123,  123,
+ /*  2280 */   101,  102,  123,   85,  105,  106,  107,   89,  109,  123,
+ /*  2290 */    92,   93,    1,  123,   85,  123,   90,   91,   89,  101,
+ /*  2300 */   102,  123,   93,  105,  106,  107,  100,  109,   17,  103,
+ /*  2310 */   104,  102,   21,  123,  105,  106,  107,  123,  109,  123,
+ /*  2320 */    29,  123,  123,  117,   85,  123,   35,  123,   89,   38,
+ /*  2330 */   123,  123,   93,  123,  123,  123,  123,  123,  123,  123,
+ /*  2340 */    90,   91,  123,  123,  105,  106,  107,  123,  109,  123,
+ /*  2350 */   100,  123,   61,  103,  104,   90,   91,  123,  123,  123,
+ /*  2360 */   123,  123,  123,  123,  123,  100,  123,  117,  103,  104,
+ /*  2370 */   123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
+ /*  2380 */   123,  123,  117,
 );
-    const YY_SHIFT_USE_DFLT = -3;
-    const YY_SHIFT_MAX = 252;
+    const YY_SHIFT_USE_DFLT = -5;
+    const YY_SHIFT_MAX = 256;
     static public $yy_shift_ofst = array(
- /*     0 */    -2, 1385, 1385, 1328, 1157, 1328, 1157, 1157, 1100, 1157,
- /*    10 */  1157, 1157, 1157, 1157, 1157, 1556, 1157, 1157, 1157, 1157,
- /*    20 */  1556, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
- /*    30 */  1157, 1157, 1442, 1157, 1157, 1499, 1157, 1157, 1214, 1157,
- /*    40 */  1157, 1157, 1157, 1442, 1271, 1271, 1670, 1613, 1670, 1670,
- /*    50 */  1670, 1670, 1670,  206,  129,   52,   -1,  259,  259,  259,
- /*    60 */   833,  886,  939,  780,  650,  390,  336,  467,  703,  520,
- /*    70 */   573,  992,  992,  992,  992,  992,  992,  992,  992,  992,
+ /*     0 */    -2, 1271, 1157, 1157, 1271, 1157, 1328, 1328, 1100, 1157,
+ /*    10 */  1157, 1157, 1157, 1157, 1157, 1157, 1499, 1157, 1157, 1157,
+ /*    20 */  1157, 1157, 1556, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
+ /*    30 */  1157, 1157, 1157, 1157, 1385, 1214, 1157, 1157, 1157, 1157,
+ /*    40 */  1157, 1499, 1214, 1157, 1442, 1442, 1613, 1670, 1670, 1670,
+ /*    50 */  1670, 1670, 1670,  206,  153,   76,   -1,  259,  259,  259,
+ /*    60 */   809,  939,  755,  862,  702,  649,  365,  312,  418,  495,
+ /*    70 */   572,  992,  992,  992,  992,  992,  992,  992,  992,  992,
  /*    80 */   992,  992,  992,  992,  992,  992,  992,  992,  992,  992,
- /*    90 */  1033, 1033, 1841,  784,  288,   -2,  338,  125,  463,  209,
- /*   100 */   333,  209,  333,  327,  288,  267,  288,  334,  509, 1745,
- /*   110 */   102,  132,  470,  653,   70,  245,  479,  212,  204,    3,
- /*   120 */   174,  217,  277,  122,  432,  537,  432,  509,  510,  432,
- /*   130 */   432,  382,  668,  506,  432,  432,  531,  563,  432,  382,
- /*   140 */   527,  432,  510,  509,  571,  432,  392,  691,  704,  704,
- /*   150 */   704,  704,  704,  704,  704,  691,  704,   -3, 1341, 1381,
- /*   160 */  1284, 1267,   66, 1108, 1152, 1165, 1210,  536, 1438, 1398,
- /*   170 */  1495, 1512,  466,  777,    0,  128,  781, 1324, 1455, 1227,
- /*   180 */   471,  358,  150,  150,  339,  150,  150,   21,  150,  718,
- /*   190 */   691,  691,  625,  704,  704,  709,  691,  709,    4,    4,
- /*   200 */    -3,   -3,   -3,   -3,   -3, 1727,  202,   75,   44,  361,
- /*   210 */   223,    1,  225,   91,   76,  371,  395,  410,   76,  256,
- /*   220 */   305,  560,  625,  617,  619,  598,  597,  576,  349,  630,
- /*   230 */   637,  639,  666,  682,  661,  643,  644,  613,  591,  528,
- /*   240 */   565,  486,  484,  407,  436,  582,  566,  564,  609,  547,
- /*   250 */   554,  588,  545,
+ /*    90 */  1033, 1033, 2291, 1267,  106,   -2, 1745, 1222, 1165,  157,
+ /*   100 */   157,  492,  492,  499,  106,  106,  274,  493,  142,  497,
+ /*   110 */    49,   79,  942,  652,  246,   17,  328,  300,  236,  223,
+ /*   120 */    80,  147,  532, 1227,  353,  353,  353,  422,  407,  142,
+ /*   130 */   353,  353,  610,  353,  341,  565,  379,  353,  380,  142,
+ /*   140 */   408,  160,  409,  353,  379,  409,  353,  472,  613,  472,
+ /*   150 */   472,  472,  472,  472,  472,  613,  472,   -5, 1284, 1210,
+ /*   160 */    -4, 1108,    0,  156,  575, 1683, 1552, 1512, 1569, 1609,
+ /*   170 */  1666, 1324, 1626,    6, 1495, 1398, 1381, 1341, 1438, 1455,
+ /*   180 */    73,  482,   73,  204,  592,  204,  204,  204,  164,  204,
+ /*   190 */   253,  204,  204,  665,  613,  613,  613,  479,  472,  347,
+ /*   200 */   415,  415,  472,  347,   -5,   -5,   -5,   -5,   -5, 1727,
+ /*   210 */   149,   45,  120,  152,   54,  530,   54,  314,  252,  378,
+ /*   220 */   306,  459,  258,  303,  239,  331,  522,  536,  469,  537,
+ /*   230 */   539,  569,  534,  544,  561,  525,  518,  570,  593,  612,
+ /*   240 */   578,  628,  591,  579,  510,  584,  589,  458,  435,  352,
+ /*   250 */   485,  478,  451,  479,  490,  383,  618,
 );
-    const YY_REDUCE_USE_DFLT = -102;
-    const YY_REDUCE_MAX = 204;
+    const YY_REDUCE_USE_DFLT = -96;
+    const YY_REDUCE_MAX = 208;
     static public $yy_reduce_ofst = array(
- /*     0 */   -28,   46, 1709,  123,  567,  384, 1630,  698, 1961, 1934,
- /*    10 */  1923, 1875, 1898, 1984, 2009, 2106, 2095, 2070, 2020, 2047,
- /*    20 */  1848, 1837, 1402, 1345, 1288, 1174, 1231, 1459, 1516, 1812,
- /*    30 */  1789, 1758, 1573, 1747, 2156, 2133, 2305, 2267, 2181, 2192,
- /*    40 */  1117, 2219, 2242, 2278, 1042, 1728,  258, 1061,  572, 2076,
- /*    50 */  1990, 1904, 1818, 1680, 1871, 1705, 2313, 2335, 2328, 1680,
- /*    60 */   -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
- /*    70 */   -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
- /*    80 */   -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
- /*    90 */   -26,  -26,  224,   94,  196,  236,  273, 1149, 1062,  406,
- /*   100 */   -76,  353,  575,  264,  328,  201,  329,   78,  330,  646,
- /*   110 */   517,  -29,  -29,  -29,  342,  616,  385,  -29,   68,  342,
- /*   120 */   342,  -29,   74,   74,  618,  433,  574,  457,  515,  541,
- /*   130 */   433,  112,   74,  433,  434,  487,  459,  699,  468,  366,
- /*   140 */   -29,  696,  433,  464,  511,  645,  -73, -101,  -29,  -29,
- /*   150 */   -29,  -29,  -29,  -29,  -29,   74,  -29,  -29,  606,  606,
- /*   160 */   606,  606,  620,  606,  606,  606,  606,  596,  606,  606,
- /*   170 */   606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
- /*   180 */   592,  592,  599,  599,  592,  599,  599,  603,  599,  647,
- /*   190 */   622,  622,  623,  592,  592,   -6,  622,   -6,  -13,  220,
- /*   200 */   251,  240,  182,  146,  157,
+ /*     0 */     5,   -7,  489,  566, 1630,  856,   70, 1117, 1865, 1854,
+ /*    10 */  1831, 1812, 1891, 1902, 1977, 1951, 1940, 1921, 1789, 1762,
+ /*    20 */  1402, 1345, 1288, 1231, 1459, 1516, 1751, 1728, 1709, 1573,
+ /*    30 */  1988, 2007, 2123, 2149, 2160, 2198, 2179, 1174, 2093, 2026,
+ /*    40 */  2037, 2063, 2112, 2074, 1042, 2209, 1822, 2239, 1061,  861,
+ /*    50 */   494,  417,  571, 2265, 2250, 2206, 1705, 1785, 1680, 1705,
+ /*    60 */   128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+ /*    70 */   128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+ /*    80 */   128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+ /*    90 */   128,  128,  277,  224,   40,  154,  200,  864, 1062,  170,
+ /*   100 */   330,  574, 1149,   99,  329,  381, 1078,   98,  -34,  201,
+ /*   110 */    15,  125,  125,  125,  -85,  124,  124,  124,  125,  -95,
+ /*   120 */   125,  -95,  332,  354,  573,  616,  617,  460,  615,  307,
+ /*   130 */   385,  540,  256,  -74,  248,  -95,  335,  668,  540,  281,
+ /*   140 */   540,  125,  670,  669,  520,  540,  186,  125,  339,  125,
+ /*   150 */   125,  125,  125,  125,  125,  -95,  125,  125,  554,  554,
+ /*   160 */   550,  554,  554,  554,  554,  554,  554,  554,  554,  554,
+ /*   170 */   554,  554,  554,  542,  554,  554,  554,  554,  554,  554,
+ /*   180 */   595,  -33,  551,  552,  -33,  552,  552,  552,  -33,  552,
+ /*   190 */   597,  552,  552,  596,  594,  594,  594,  599,  -33,  356,
+ /*   200 */   296,  360,  -33,  356,  395,  404,  376,  416,  368,
 );
     static public $yyExpectedTokens = array(
         /* 0 */ array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 22, 23, 28, 32, 33, 34, ),
@@ -828,24 +814,24 @@ static public $yy_action = array(
         /* 50 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 78, ),
         /* 51 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 78, ),
         /* 52 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 78, ),
-        /* 53 */ array(1, 17, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 53 */ array(1, 27, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
         /* 54 */ array(1, 17, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
-        /* 55 */ array(1, 27, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 55 */ array(1, 17, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
         /* 56 */ array(1, 17, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
         /* 57 */ array(1, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
         /* 58 */ array(1, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
         /* 59 */ array(1, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
-        /* 60 */ array(1, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
-        /* 61 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
-        /* 62 */ array(1, 30, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
-        /* 63 */ array(1, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
-        /* 64 */ array(1, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
-        /* 65 */ array(1, 24, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
-        /* 66 */ array(1, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
-        /* 67 */ array(1, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
-        /* 68 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, ),
-        /* 69 */ array(1, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
-        /* 70 */ array(1, 2, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 60 */ array(1, 24, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 61 */ array(1, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 62 */ array(1, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 63 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 64 */ array(1, 2, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 65 */ array(1, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 66 */ array(1, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 67 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, ),
+        /* 68 */ array(1, 30, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 69 */ array(1, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
+        /* 70 */ array(1, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
         /* 71 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
         /* 72 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
         /* 73 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
@@ -875,13 +861,13 @@ static public $yy_action = array(
         /* 97 */ array(16, 19, 29, 31, 35, ),
         /* 98 */ array(16, 19, 29, 31, 35, ),
         /* 99 */ array(1, 17, 29, 35, ),
-        /* 100 */ array(16, 19, 29, 35, ),
-        /* 101 */ array(1, 17, 29, 35, ),
+        /* 100 */ array(1, 17, 29, 35, ),
+        /* 101 */ array(16, 19, 29, 35, ),
         /* 102 */ array(16, 19, 29, 35, ),
-        /* 103 */ array(18, 19, 63, ),
+        /* 103 */ array(1, 2, 17, ),
         /* 104 */ array(1, 29, 35, ),
-        /* 105 */ array(1, 2, 17, ),
-        /* 106 */ array(1, 29, 35, ),
+        /* 105 */ array(1, 29, 35, ),
+        /* 106 */ array(18, 19, 63, ),
         /* 107 */ array(21, 59, 64, ),
         /* 108 */ array(18, 38, ),
         /* 109 */ array(10, 16, 22, 23, 28, 32, 33, 34, 78, 79, 80, ),
@@ -889,41 +875,41 @@ static public $yy_action = array(
         /* 111 */ array(1, 17, 29, 30, 35, 54, ),
         /* 112 */ array(1, 17, 29, 35, 54, ),
         /* 113 */ array(1, 17, 29, 35, 54, ),
-        /* 114 */ array(16, 19, 20, 62, ),
-        /* 115 */ array(16, 19, 20, 25, ),
-        /* 116 */ array(1, 17, 21, ),
-        /* 117 */ array(1, 31, 54, ),
-        /* 118 */ array(17, 29, 35, ),
-        /* 119 */ array(16, 19, 20, ),
-        /* 120 */ array(16, 19, 62, ),
-        /* 121 */ array(1, 17, 54, ),
-        /* 122 */ array(20, 21, 61, ),
-        /* 123 */ array(20, 21, 61, ),
+        /* 114 */ array(16, 19, 20, 25, ),
+        /* 115 */ array(16, 19, 20, 62, ),
+        /* 116 */ array(16, 19, 62, ),
+        /* 117 */ array(16, 19, 20, ),
+        /* 118 */ array(1, 31, 54, ),
+        /* 119 */ array(20, 21, 61, ),
+        /* 120 */ array(1, 17, 54, ),
+        /* 121 */ array(20, 21, 61, ),
+        /* 122 */ array(1, 17, 21, ),
+        /* 123 */ array(17, 29, 35, ),
         /* 124 */ array(16, 19, ),
         /* 125 */ array(16, 19, ),
         /* 126 */ array(16, 19, ),
-        /* 127 */ array(18, 38, ),
+        /* 127 */ array(29, 35, ),
         /* 128 */ array(16, 19, ),
-        /* 129 */ array(16, 19, ),
+        /* 129 */ array(18, 38, ),
         /* 130 */ array(16, 19, ),
-        /* 131 */ array(18, 19, ),
-        /* 132 */ array(21, 61, ),
+        /* 131 */ array(16, 19, ),
+        /* 132 */ array(1, 17, ),
         /* 133 */ array(16, 19, ),
-        /* 134 */ array(16, 19, ),
-        /* 135 */ array(16, 19, ),
-        /* 136 */ array(1, 17, ),
+        /* 134 */ array(29, 35, ),
+        /* 135 */ array(21, 61, ),
+        /* 136 */ array(18, 19, ),
         /* 137 */ array(16, 19, ),
         /* 138 */ array(16, 19, ),
-        /* 139 */ array(18, 19, ),
-        /* 140 */ array(1, 54, ),
-        /* 141 */ array(16, 19, ),
+        /* 139 */ array(18, 38, ),
+        /* 140 */ array(16, 19, ),
+        /* 141 */ array(1, 54, ),
         /* 142 */ array(16, 19, ),
-        /* 143 */ array(18, 38, ),
-        /* 144 */ array(29, 35, ),
+        /* 143 */ array(16, 19, ),
+        /* 144 */ array(18, 19, ),
         /* 145 */ array(16, 19, ),
-        /* 146 */ array(29, 35, ),
-        /* 147 */ array(21, ),
-        /* 148 */ array(1, ),
+        /* 146 */ array(16, 19, ),
+        /* 147 */ array(1, ),
+        /* 148 */ array(21, ),
         /* 149 */ array(1, ),
         /* 150 */ array(1, ),
         /* 151 */ array(1, ),
@@ -935,103 +921,103 @@ static public $yy_action = array(
         /* 157 */ array(),
         /* 158 */ array(17, 29, 35, ),
         /* 159 */ array(17, 29, 35, ),
-        /* 160 */ array(17, 29, 35, ),
+        /* 160 */ array(16, 19, 62, ),
         /* 161 */ array(17, 29, 35, ),
-        /* 162 */ array(16, 18, 19, ),
+        /* 162 */ array(17, 29, 35, ),
         /* 163 */ array(17, 29, 35, ),
         /* 164 */ array(17, 29, 35, ),
         /* 165 */ array(17, 29, 35, ),
         /* 166 */ array(17, 29, 35, ),
-        /* 167 */ array(16, 19, 62, ),
+        /* 167 */ array(17, 29, 35, ),
         /* 168 */ array(17, 29, 35, ),
         /* 169 */ array(17, 29, 35, ),
         /* 170 */ array(17, 29, 35, ),
         /* 171 */ array(17, 29, 35, ),
         /* 172 */ array(17, 29, 35, ),
-        /* 173 */ array(17, 29, 35, ),
+        /* 173 */ array(16, 18, 19, ),
         /* 174 */ array(17, 29, 35, ),
         /* 175 */ array(17, 29, 35, ),
         /* 176 */ array(17, 29, 35, ),
         /* 177 */ array(17, 29, 35, ),
         /* 178 */ array(17, 29, 35, ),
         /* 179 */ array(17, 29, 35, ),
-        /* 180 */ array(1, 17, ),
+        /* 180 */ array(59, 64, ),
         /* 181 */ array(1, 17, ),
         /* 182 */ array(59, 64, ),
         /* 183 */ array(59, 64, ),
         /* 184 */ array(1, 17, ),
         /* 185 */ array(59, 64, ),
         /* 186 */ array(59, 64, ),
-        /* 187 */ array(16, 38, ),
-        /* 188 */ array(59, 64, ),
-        /* 189 */ array(14, ),
-        /* 190 */ array(21, ),
-        /* 191 */ array(21, ),
-        /* 192 */ array(38, ),
-        /* 193 */ array(1, ),
-        /* 194 */ array(1, ),
-        /* 195 */ array(2, ),
+        /* 187 */ array(59, 64, ),
+        /* 188 */ array(1, 17, ),
+        /* 189 */ array(59, 64, ),
+        /* 190 */ array(16, 38, ),
+        /* 191 */ array(59, 64, ),
+        /* 192 */ array(59, 64, ),
+        /* 193 */ array(14, ),
+        /* 194 */ array(21, ),
+        /* 195 */ array(21, ),
         /* 196 */ array(21, ),
-        /* 197 */ array(2, ),
-        /* 198 */ array(29, ),
-        /* 199 */ array(29, ),
-        /* 200 */ array(),
-        /* 201 */ array(),
-        /* 202 */ array(),
-        /* 203 */ array(),
+        /* 197 */ array(38, ),
+        /* 198 */ array(1, ),
+        /* 199 */ array(2, ),
+        /* 200 */ array(29, ),
+        /* 201 */ array(29, ),
+        /* 202 */ array(1, ),
+        /* 203 */ array(2, ),
         /* 204 */ array(),
-        /* 205 */ array(17, 24, 26, 27, 29, 30, 35, 37, 38, 39, 54, 61, 65, 79, ),
-        /* 206 */ array(17, 20, 29, 35, 38, 61, ),
-        /* 207 */ array(38, 59, 61, 65, ),
-        /* 208 */ array(16, 18, 19, 36, ),
-        /* 209 */ array(31, 38, 61, ),
-        /* 210 */ array(19, 62, ),
-        /* 211 */ array(24, 37, ),
-        /* 212 */ array(37, 65, ),
-        /* 213 */ array(20, 59, ),
+        /* 205 */ array(),
+        /* 206 */ array(),
+        /* 207 */ array(),
+        /* 208 */ array(),
+        /* 209 */ array(17, 24, 26, 27, 29, 30, 35, 37, 38, 39, 54, 61, 65, 79, ),
+        /* 210 */ array(17, 20, 29, 35, 38, 61, ),
+        /* 211 */ array(38, 59, 61, 65, ),
+        /* 212 */ array(16, 18, 19, 36, ),
+        /* 213 */ array(31, 38, 61, ),
         /* 214 */ array(38, 61, ),
-        /* 215 */ array(25, 79, ),
-        /* 216 */ array(2, 20, ),
-        /* 217 */ array(37, 39, ),
-        /* 218 */ array(38, 61, ),
-        /* 219 */ array(37, 39, ),
+        /* 215 */ array(2, 20, ),
+        /* 216 */ array(38, 61, ),
+        /* 217 */ array(24, 37, ),
+        /* 218 */ array(37, 65, ),
+        /* 219 */ array(17, 25, ),
         /* 220 */ array(37, 39, ),
-        /* 221 */ array(17, 25, ),
-        /* 222 */ array(38, ),
-        /* 223 */ array(19, ),
-        /* 224 */ array(18, ),
-        /* 225 */ array(36, ),
-        /* 226 */ array(36, ),
-        /* 227 */ array(59, ),
-        /* 228 */ array(25, ),
-        /* 229 */ array(2, ),
-        /* 230 */ array(18, ),
+        /* 221 */ array(20, 59, ),
+        /* 222 */ array(37, 39, ),
+        /* 223 */ array(37, 39, ),
+        /* 224 */ array(25, 79, ),
+        /* 225 */ array(19, 62, ),
+        /* 226 */ array(63, ),
+        /* 227 */ array(19, ),
+        /* 228 */ array(65, ),
+        /* 229 */ array(19, ),
+        /* 230 */ array(19, ),
         /* 231 */ array(19, ),
-        /* 232 */ array(19, ),
-        /* 233 */ array(2, ),
+        /* 232 */ array(25, ),
+        /* 233 */ array(63, ),
         /* 234 */ array(19, ),
-        /* 235 */ array(19, ),
-        /* 236 */ array(20, ),
-        /* 237 */ array(18, ),
+        /* 235 */ array(59, ),
+        /* 236 */ array(36, ),
+        /* 237 */ array(36, ),
         /* 238 */ array(39, ),
-        /* 239 */ array(26, ),
-        /* 240 */ array(18, ),
-        /* 241 */ array(18, ),
-        /* 242 */ array(19, ),
-        /* 243 */ array(19, ),
-        /* 244 */ array(19, ),
-        /* 245 */ array(19, ),
-        /* 246 */ array(38, ),
-        /* 247 */ array(65, ),
-        /* 248 */ array(19, ),
-        /* 249 */ array(63, ),
-        /* 250 */ array(55, ),
-        /* 251 */ array(19, ),
-        /* 252 */ array(63, ),
-        /* 253 */ array(),
-        /* 254 */ array(),
-        /* 255 */ array(),
-        /* 256 */ array(),
+        /* 239 */ array(19, ),
+        /* 240 */ array(55, ),
+        /* 241 */ array(2, ),
+        /* 242 */ array(38, ),
+        /* 243 */ array(18, ),
+        /* 244 */ array(18, ),
+        /* 245 */ array(18, ),
+        /* 246 */ array(19, ),
+        /* 247 */ array(18, ),
+        /* 248 */ array(20, ),
+        /* 249 */ array(19, ),
+        /* 250 */ array(19, ),
+        /* 251 */ array(2, ),
+        /* 252 */ array(26, ),
+        /* 253 */ array(38, ),
+        /* 254 */ array(19, ),
+        /* 255 */ array(19, ),
+        /* 256 */ array(18, ),
         /* 257 */ array(),
         /* 258 */ array(),
         /* 259 */ array(),
@@ -1164,52 +1150,55 @@ static public $yy_action = array(
         /* 386 */ array(),
         /* 387 */ array(),
         /* 388 */ array(),
+        /* 389 */ array(),
+        /* 390 */ array(),
 );
     static public $yy_default = array(
- /*     0 */   392,  574,  591,  591,  545,  591,  545,  545,  591,  591,
- /*    10 */   591,  591,  591,  591,  591,  591,  591,  591,  591,  591,
- /*    20 */   591,  591,  591,  591,  591,  591,  591,  591,  591,  591,
- /*    30 */   591,  591,  591,  591,  591,  591,  591,  591,  591,  591,
- /*    40 */   591,  591,  591,  591,  591,  591,  591,  591,  591,  591,
- /*    50 */   591,  591,  591,  591,  591,  453,  591,  453,  453,  453,
- /*    60 */   591,  591,  458,  591,  591,  591,  591,  591,  591,  591,
- /*    70 */   591,  544,  575,  458,  576,  460,  463,  464,  435,  477,
- /*    80 */   478,  479,  486,  487,  577,  483,  482,  543,  455,  474,
- /*    90 */   490,  491,  502,  466,  453,  389,  591,  453,  453,  473,
- /*   100 */   453,  510,  453,  591,  453,  591,  453,  557,  591,  591,
- /*   110 */   591,  466,  466,  466,  518,  591,  591,  466,  591,  518,
- /*   120 */   518,  466,  511,  511,  591,  591,  591,  591,  591,  591,
- /*   130 */   591,  591,  511,  591,  591,  591,  591,  591,  518,  591,
- /*   140 */   466,  591,  591,  591,  453,  591,  453,  554,  494,  469,
- /*   150 */   489,  476,  495,  470,  493,  511,  471,  552,  591,  591,
- /*   160 */   591,  591,  591,  591,  591,  591,  591,  519,  591,  591,
- /*   170 */   591,  591,  591,  591,  591,  591,  591,  591,  591,  591,
- /*   180 */   591,  591,  536,  535,  591,  538,  516,  518,  537,  408,
- /*   190 */   558,  555,  518,  473,  510,  547,  532,  546,  590,  590,
- /*   200 */   551,  551,  518,  551,  518,  468,  502,  502,  591,  502,
- /*   210 */   591,  591,  591,  498,  488,  492,  530,  591,  502,  591,
- /*   220 */   591,  492,  530,  591,  591,  591,  500,  498,  492,  530,
- /*   230 */   591,  591,  591,  530,  591,  591,  591,  591,  591,  461,
- /*   240 */   591,  591,  591,  591,  591,  591,  556,  591,  591,  591,
- /*   250 */   504,  591,  591,  465,  515,  514,  539,  572,  433,  418,
- /*   260 */   390,  432,  438,  573,  437,  526,  436,  541,  540,  523,
- /*   270 */   553,  531,  542,  442,  504,  443,  571,  589,  524,  454,
- /*   280 */   527,  525,  462,  485,  530,  529,  444,  445,  550,  441,
- /*   290 */   440,  431,  430,  434,  452,  439,  446,  447,  499,  497,
- /*   300 */   501,  507,  467,  496,  450,  448,  548,  549,  449,  451,
- /*   310 */   417,  399,  398,  400,  401,  402,  397,  396,  391,  393,
- /*   320 */   394,  395,  403,  404,  413,  412,  414,  415,  416,  411,
- /*   330 */   410,  405,  406,  407,  409,  468,  512,  423,  422,  424,
- /*   340 */   533,  425,  421,  586,  570,  569,  472,  419,  420,  426,
- /*   350 */   427,  582,  583,  584,  587,  588,  580,  579,  429,  428,
- /*   360 */   585,  578,  568,  567,  506,  505,  508,  475,  509,  503,
- /*   370 */   522,  517,  520,  528,  521,  513,  534,  563,  562,  564,
- /*   380 */   565,  566,  561,  560,  480,  481,  484,  559,  581,
+ /*     0 */   394,  578,  549,  549,  595,  549,  595,  595,  595,  595,
+ /*    10 */   595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+ /*    20 */   595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+ /*    30 */   595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+ /*    40 */   595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+ /*    50 */   595,  595,  595,  455,  595,  595,  595,  455,  455,  455,
+ /*    60 */   595,  595,  595,  595,  595,  595,  595,  595,  460,  595,
+ /*    70 */   595,  466,  465,  484,  547,  579,  581,  548,  580,  489,
+ /*    80 */   488,  480,  479,  481,  457,  485,  462,  476,  460,  437,
+ /*    90 */   492,  493,  504,  468,  455,  391,  595,  455,  455,  475,
+ /*   100 */   512,  455,  455,  595,  455,  455,  595,  561,  595,  595,
+ /*   110 */   595,  468,  468,  468,  595,  522,  522,  522,  468,  513,
+ /*   120 */   468,  513,  595,  595,  595,  595,  595,  455,  595,  595,
+ /*   130 */   595,  595,  595,  595,  455,  513,  595,  595,  595,  595,
+ /*   140 */   595,  468,  595,  595,  595,  595,  522,  473,  558,  491,
+ /*   150 */   478,  472,  497,  495,  496,  513,  471,  556,  595,  595,
+ /*   160 */   523,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+ /*   170 */   595,  595,  595,  595,  595,  595,  595,  595,  595,  595,
+ /*   180 */   516,  595,  518,  519,  595,  520,  540,  542,  595,  539,
+ /*   190 */   522,  517,  541,  410,  562,  559,  536,  522,  475,  551,
+ /*   200 */   594,  594,  512,  550,  522,  555,  555,  555,  522,  470,
+ /*   210 */   504,  504,  595,  504,  490,  534,  504,  595,  595,  494,
+ /*   220 */   595,  500,  595,  595,  494,  595,  595,  595,  595,  595,
+ /*   230 */   595,  595,  494,  595,  595,  500,  502,  595,  595,  595,
+ /*   240 */   506,  534,  560,  595,  595,  595,  595,  595,  595,  595,
+ /*   250 */   595,  534,  463,  534,  595,  595,  595,  401,  543,  400,
+ /*   260 */   402,  546,  445,  398,  397,  393,  464,  438,  593,  467,
+ /*   270 */   435,  395,  440,  434,  439,  396,  399,  456,  531,  420,
+ /*   280 */   529,  392,  528,  506,  527,  535,  444,  557,  545,  544,
+ /*   290 */   530,  412,  453,  526,  505,  419,  507,  525,  532,  470,
+ /*   300 */   514,  521,  524,  508,  510,  482,  483,  416,  415,  417,
+ /*   310 */   418,  477,  511,  515,  538,  469,  509,  534,  533,  432,
+ /*   320 */   446,  447,  443,  442,  436,  454,  433,  441,  554,  448,
+ /*   330 */   498,  499,  501,  503,  452,  451,  449,  450,  552,  553,
+ /*   340 */   486,  487,  589,  430,  582,  583,  584,  431,  429,  426,
+ /*   350 */   537,  427,  428,  406,  587,  575,  404,  577,  576,  405,
+ /*   360 */   585,  586,  588,  591,  592,  425,  424,  569,  568,  570,
+ /*   370 */   571,  572,  567,  566,  414,  563,  564,  565,  573,  574,
+ /*   380 */   422,  590,  407,  423,  421,  408,  474,  413,  411,  409,
+ /*   390 */   403,
 );
     const YYNOCODE = 124;
     const YYSTACKDEPTH = 100;
-    const YYNSTATE = 389;
-    const YYNRULE = 202;
+    const YYNSTATE = 391;
+    const YYNRULE = 204;
     const YYERRORSYMBOL = 81;
     const YYERRSYMDT = 'yy0';
     const YYFALLBACK = 0;
@@ -1399,82 +1388,84 @@ static public $yy_action = array(
  /* 123 */ "variable ::= DOLLAR varvar AT ID",
  /* 124 */ "variable ::= object",
  /* 125 */ "variable ::= HATCH ID HATCH",
- /* 126 */ "variable ::= HATCH variable HATCH",
- /* 127 */ "varindexed ::= DOLLAR varvar arrayindex",
- /* 128 */ "arrayindex ::= arrayindex indexdef",
- /* 129 */ "arrayindex ::=",
- /* 130 */ "indexdef ::= DOT DOLLAR varvar",
- /* 131 */ "indexdef ::= DOT DOLLAR varvar AT ID",
- /* 132 */ "indexdef ::= DOT ID",
- /* 133 */ "indexdef ::= DOT INTEGER",
- /* 134 */ "indexdef ::= DOT LDEL expr RDEL",
- /* 135 */ "indexdef ::= OPENB ID CLOSEB",
- /* 136 */ "indexdef ::= OPENB ID DOT ID CLOSEB",
- /* 137 */ "indexdef ::= OPENB expr CLOSEB",
- /* 138 */ "indexdef ::= OPENB CLOSEB",
- /* 139 */ "varvar ::= varvarele",
- /* 140 */ "varvar ::= varvar varvarele",
- /* 141 */ "varvarele ::= ID",
- /* 142 */ "varvarele ::= LDEL expr RDEL",
- /* 143 */ "object ::= varindexed objectchain",
- /* 144 */ "objectchain ::= objectelement",
- /* 145 */ "objectchain ::= objectchain objectelement",
- /* 146 */ "objectelement ::= PTR ID arrayindex",
- /* 147 */ "objectelement ::= PTR DOLLAR varvar arrayindex",
- /* 148 */ "objectelement ::= PTR LDEL expr RDEL arrayindex",
- /* 149 */ "objectelement ::= PTR ID LDEL expr RDEL arrayindex",
- /* 150 */ "objectelement ::= PTR method",
- /* 151 */ "function ::= ID OPENP params CLOSEP",
- /* 152 */ "method ::= ID OPENP params CLOSEP",
- /* 153 */ "method ::= DOLLAR ID OPENP params CLOSEP",
- /* 154 */ "params ::= params COMMA expr",
- /* 155 */ "params ::= expr",
- /* 156 */ "params ::=",
- /* 157 */ "modifierlist ::= modifierlist modifier modparameters",
- /* 158 */ "modifierlist ::= modifier modparameters",
- /* 159 */ "modifier ::= VERT AT ID",
- /* 160 */ "modifier ::= VERT ID",
- /* 161 */ "modparameters ::= modparameters modparameter",
- /* 162 */ "modparameters ::=",
- /* 163 */ "modparameter ::= COLON value",
- /* 164 */ "modparameter ::= COLON array",
- /* 165 */ "static_class_access ::= method",
- /* 166 */ "static_class_access ::= method objectchain",
- /* 167 */ "static_class_access ::= ID",
- /* 168 */ "static_class_access ::= DOLLAR ID arrayindex",
- /* 169 */ "static_class_access ::= DOLLAR ID arrayindex objectchain",
- /* 170 */ "ifcond ::= EQUALS",
- /* 171 */ "ifcond ::= NOTEQUALS",
- /* 172 */ "ifcond ::= GREATERTHAN",
- /* 173 */ "ifcond ::= LESSTHAN",
- /* 174 */ "ifcond ::= GREATEREQUAL",
- /* 175 */ "ifcond ::= LESSEQUAL",
- /* 176 */ "ifcond ::= IDENTITY",
- /* 177 */ "ifcond ::= NONEIDENTITY",
- /* 178 */ "ifcond ::= MOD",
- /* 179 */ "lop ::= LAND",
- /* 180 */ "lop ::= LOR",
- /* 181 */ "lop ::= LXOR",
- /* 182 */ "array ::= OPENB arrayelements CLOSEB",
- /* 183 */ "arrayelements ::= arrayelement",
- /* 184 */ "arrayelements ::= arrayelements COMMA arrayelement",
- /* 185 */ "arrayelements ::=",
- /* 186 */ "arrayelement ::= value APTR expr",
- /* 187 */ "arrayelement ::= ID APTR expr",
- /* 188 */ "arrayelement ::= expr",
- /* 189 */ "doublequoted_with_quotes ::= QUOTE QUOTE",
- /* 190 */ "doublequoted_with_quotes ::= QUOTE doublequoted QUOTE",
- /* 191 */ "doublequoted ::= doublequoted doublequotedcontent",
- /* 192 */ "doublequoted ::= doublequotedcontent",
- /* 193 */ "doublequotedcontent ::= BACKTICK variable BACKTICK",
- /* 194 */ "doublequotedcontent ::= BACKTICK expr BACKTICK",
- /* 195 */ "doublequotedcontent ::= DOLLARID",
- /* 196 */ "doublequotedcontent ::= LDEL variable RDEL",
- /* 197 */ "doublequotedcontent ::= LDEL expr RDEL",
- /* 198 */ "doublequotedcontent ::= smartytag",
- /* 199 */ "doublequotedcontent ::= TEXT",
- /* 200 */ "optspace ::= SPACE",
- /* 201 */ "optspace ::=",
+ /* 126 */ "variable ::= HATCH ID HATCH arrayindex",
+ /* 127 */ "variable ::= HATCH variable HATCH",
+ /* 128 */ "variable ::= HATCH variable HATCH arrayindex",
+ /* 129 */ "varindexed ::= DOLLAR varvar arrayindex",
+ /* 130 */ "arrayindex ::= arrayindex indexdef",
+ /* 131 */ "arrayindex ::=",
+ /* 132 */ "indexdef ::= DOT DOLLAR varvar",
+ /* 133 */ "indexdef ::= DOT DOLLAR varvar AT ID",
+ /* 134 */ "indexdef ::= DOT ID",
+ /* 135 */ "indexdef ::= DOT INTEGER",
+ /* 136 */ "indexdef ::= DOT LDEL expr RDEL",
+ /* 137 */ "indexdef ::= OPENB ID CLOSEB",
+ /* 138 */ "indexdef ::= OPENB ID DOT ID CLOSEB",
+ /* 139 */ "indexdef ::= OPENB expr CLOSEB",
+ /* 140 */ "indexdef ::= OPENB CLOSEB",
+ /* 141 */ "varvar ::= varvarele",
+ /* 142 */ "varvar ::= varvar varvarele",
+ /* 143 */ "varvarele ::= ID",
+ /* 144 */ "varvarele ::= LDEL expr RDEL",
+ /* 145 */ "object ::= varindexed objectchain",
+ /* 146 */ "objectchain ::= objectelement",
+ /* 147 */ "objectchain ::= objectchain objectelement",
+ /* 148 */ "objectelement ::= PTR ID arrayindex",
+ /* 149 */ "objectelement ::= PTR DOLLAR varvar arrayindex",
+ /* 150 */ "objectelement ::= PTR LDEL expr RDEL arrayindex",
+ /* 151 */ "objectelement ::= PTR ID LDEL expr RDEL arrayindex",
+ /* 152 */ "objectelement ::= PTR method",
+ /* 153 */ "function ::= ID OPENP params CLOSEP",
+ /* 154 */ "method ::= ID OPENP params CLOSEP",
+ /* 155 */ "method ::= DOLLAR ID OPENP params CLOSEP",
+ /* 156 */ "params ::= params COMMA expr",
+ /* 157 */ "params ::= expr",
+ /* 158 */ "params ::=",
+ /* 159 */ "modifierlist ::= modifierlist modifier modparameters",
+ /* 160 */ "modifierlist ::= modifier modparameters",
+ /* 161 */ "modifier ::= VERT AT ID",
+ /* 162 */ "modifier ::= VERT ID",
+ /* 163 */ "modparameters ::= modparameters modparameter",
+ /* 164 */ "modparameters ::=",
+ /* 165 */ "modparameter ::= COLON value",
+ /* 166 */ "modparameter ::= COLON array",
+ /* 167 */ "static_class_access ::= method",
+ /* 168 */ "static_class_access ::= method objectchain",
+ /* 169 */ "static_class_access ::= ID",
+ /* 170 */ "static_class_access ::= DOLLAR ID arrayindex",
+ /* 171 */ "static_class_access ::= DOLLAR ID arrayindex objectchain",
+ /* 172 */ "ifcond ::= EQUALS",
+ /* 173 */ "ifcond ::= NOTEQUALS",
+ /* 174 */ "ifcond ::= GREATERTHAN",
+ /* 175 */ "ifcond ::= LESSTHAN",
+ /* 176 */ "ifcond ::= GREATEREQUAL",
+ /* 177 */ "ifcond ::= LESSEQUAL",
+ /* 178 */ "ifcond ::= IDENTITY",
+ /* 179 */ "ifcond ::= NONEIDENTITY",
+ /* 180 */ "ifcond ::= MOD",
+ /* 181 */ "lop ::= LAND",
+ /* 182 */ "lop ::= LOR",
+ /* 183 */ "lop ::= LXOR",
+ /* 184 */ "array ::= OPENB arrayelements CLOSEB",
+ /* 185 */ "arrayelements ::= arrayelement",
+ /* 186 */ "arrayelements ::= arrayelements COMMA arrayelement",
+ /* 187 */ "arrayelements ::=",
+ /* 188 */ "arrayelement ::= value APTR expr",
+ /* 189 */ "arrayelement ::= ID APTR expr",
+ /* 190 */ "arrayelement ::= expr",
+ /* 191 */ "doublequoted_with_quotes ::= QUOTE QUOTE",
+ /* 192 */ "doublequoted_with_quotes ::= QUOTE doublequoted QUOTE",
+ /* 193 */ "doublequoted ::= doublequoted doublequotedcontent",
+ /* 194 */ "doublequoted ::= doublequotedcontent",
+ /* 195 */ "doublequotedcontent ::= BACKTICK variable BACKTICK",
+ /* 196 */ "doublequotedcontent ::= BACKTICK expr BACKTICK",
+ /* 197 */ "doublequotedcontent ::= DOLLARID",
+ /* 198 */ "doublequotedcontent ::= LDEL variable RDEL",
+ /* 199 */ "doublequotedcontent ::= LDEL expr RDEL",
+ /* 200 */ "doublequotedcontent ::= smartytag",
+ /* 201 */ "doublequotedcontent ::= TEXT",
+ /* 202 */ "optspace ::= SPACE",
+ /* 203 */ "optspace ::=",
     );
 
     function tokenName($tokenType)
@@ -1734,7 +1725,7 @@ static public $yy_action = array(
 
     $this->internalError = true;
     $this->compiler->trigger_template_error("Stack overflow in template parser");
-#line 1733 "smarty_internal_templateparser.php"
+#line 1724 "smarty_internal_templateparser.php"
             return;
         }
         $yytos = new TP_yyStackEntry;
@@ -1881,7 +1872,9 @@ static public $yy_action = array(
   array( 'lhs' => 105, 'rhs' => 4 ),
   array( 'lhs' => 105, 'rhs' => 1 ),
   array( 'lhs' => 105, 'rhs' => 3 ),
+  array( 'lhs' => 105, 'rhs' => 4 ),
   array( 'lhs' => 105, 'rhs' => 3 ),
+  array( 'lhs' => 105, 'rhs' => 4 ),
   array( 'lhs' => 93, 'rhs' => 3 ),
   array( 'lhs' => 110, 'rhs' => 2 ),
   array( 'lhs' => 110, 'rhs' => 0 ),
@@ -1977,15 +1970,15 @@ static public $yy_action = array(
         15 => 15,
         16 => 16,
         19 => 16,
-        201 => 16,
+        203 => 16,
         17 => 17,
         76 => 17,
         18 => 18,
         104 => 18,
         106 => 18,
         107 => 18,
-        128 => 18,
-        166 => 18,
+        130 => 18,
+        168 => 18,
         20 => 20,
         21 => 20,
         47 => 20,
@@ -2001,12 +1994,12 @@ static public $yy_action = array(
         116 => 20,
         117 => 20,
         124 => 20,
-        139 => 20,
-        165 => 20,
+        141 => 20,
         167 => 20,
-        183 => 20,
-        188 => 20,
-        200 => 20,
+        169 => 20,
+        185 => 20,
+        190 => 20,
+        202 => 20,
         22 => 22,
         23 => 22,
         24 => 24,
@@ -2049,13 +2042,13 @@ static public $yy_action = array(
         62 => 62,
         63 => 63,
         72 => 63,
-        155 => 63,
-        159 => 63,
-        163 => 63,
-        164 => 63,
+        157 => 63,
+        161 => 63,
+        165 => 63,
+        166 => 63,
         64 => 64,
-        156 => 64,
-        162 => 64,
+        158 => 64,
+        164 => 64,
         65 => 65,
         66 => 66,
         67 => 66,
@@ -2102,19 +2095,19 @@ static public $yy_action = array(
         125 => 125,
         126 => 126,
         127 => 127,
+        128 => 128,
         129 => 129,
-        185 => 129,
-        130 => 130,
         131 => 131,
+        187 => 131,
         132 => 132,
         133 => 133,
         134 => 134,
-        137 => 134,
         135 => 135,
         136 => 136,
+        139 => 136,
+        137 => 137,
         138 => 138,
         140 => 140,
-        141 => 141,
         142 => 142,
         143 => 143,
         144 => 144,
@@ -2128,12 +2121,12 @@ static public $yy_action = array(
         152 => 152,
         153 => 153,
         154 => 154,
-        157 => 157,
-        158 => 158,
+        155 => 155,
+        156 => 156,
+        159 => 159,
         160 => 160,
-        161 => 161,
-        168 => 168,
-        169 => 169,
+        162 => 162,
+        163 => 163,
         170 => 170,
         171 => 171,
         172 => 172,
@@ -2147,31 +2140,33 @@ static public $yy_action = array(
         180 => 180,
         181 => 181,
         182 => 182,
+        183 => 183,
         184 => 184,
         186 => 186,
-        187 => 187,
+        188 => 188,
         189 => 189,
-        190 => 190,
         191 => 191,
         192 => 192,
         193 => 193,
-        194 => 193,
-        196 => 193,
+        194 => 194,
         195 => 195,
+        196 => 195,
+        198 => 195,
         197 => 197,
-        198 => 198,
         199 => 199,
+        200 => 200,
+        201 => 201,
     );
 #line 95 "smarty_internal_templateparser.y"
     function yy_r0(){
     $this->_retvalue = $this->root_buffer->to_smarty_php();
     }
-#line 2165 "smarty_internal_templateparser.php"
+#line 2160 "smarty_internal_templateparser.php"
 #line 103 "smarty_internal_templateparser.y"
     function yy_r1(){
     $this->current_buffer->append_subtree($this->yystack[$this->yyidx + 0]->minor);
     }
-#line 2170 "smarty_internal_templateparser.php"
+#line 2165 "smarty_internal_templateparser.php"
 #line 119 "smarty_internal_templateparser.y"
     function yy_r4(){
     if ($this->compiler->has_code) {
@@ -2183,17 +2178,17 @@ static public $yy_action = array(
     $this->compiler->has_variable_string = false;
     $this->block_nesting_level = count($this->compiler->_tag_stack);
     }
-#line 2182 "smarty_internal_templateparser.php"
+#line 2177 "smarty_internal_templateparser.php"
 #line 131 "smarty_internal_templateparser.y"
     function yy_r5(){
     $this->_retvalue = new _smarty_tag($this, '');
     }
-#line 2187 "smarty_internal_templateparser.php"
+#line 2182 "smarty_internal_templateparser.php"
 #line 136 "smarty_internal_templateparser.y"
     function yy_r6(){
     $this->_retvalue = new _smarty_text($this, $this->yystack[$this->yyidx + 0]->minor);
     }
-#line 2192 "smarty_internal_templateparser.php"
+#line 2187 "smarty_internal_templateparser.php"
 #line 141 "smarty_internal_templateparser.y"
     function yy_r7(){
     if ($this->php_handling == Smarty::PHP_PASSTHRU) {
@@ -2209,7 +2204,7 @@ static public $yy_action = array(
         $this->_retvalue = new _smarty_text($this, '');
     }
     }
-#line 2208 "smarty_internal_templateparser.php"
+#line 2203 "smarty_internal_templateparser.php"
 #line 157 "smarty_internal_templateparser.y"
     function yy_r8(){
     if ($this->is_xml) {
@@ -2228,7 +2223,7 @@ static public $yy_action = array(
         $this->_retvalue = new _smarty_text($this, '');
     }
     }
-#line 2227 "smarty_internal_templateparser.php"
+#line 2222 "smarty_internal_templateparser.php"
 #line 176 "smarty_internal_templateparser.y"
     function yy_r9(){
     if ($this->php_handling == Smarty::PHP_PASSTHRU) {
@@ -2252,7 +2247,7 @@ static public $yy_action = array(
         }
     }
     }
-#line 2251 "smarty_internal_templateparser.php"
+#line 2246 "smarty_internal_templateparser.php"
 #line 200 "smarty_internal_templateparser.y"
     function yy_r10(){
     if ($this->php_handling == Smarty::PHP_PASSTHRU) {
@@ -2273,7 +2268,7 @@ static public $yy_action = array(
         }
     }
     }
-#line 2272 "smarty_internal_templateparser.php"
+#line 2267 "smarty_internal_templateparser.php"
 #line 220 "smarty_internal_templateparser.y"
     function yy_r11(){
     if ($this->strip) {
@@ -2282,7 +2277,7 @@ static public $yy_action = array(
         $this->_retvalue = new _smarty_text($this, self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor));
     }
     }
-#line 2281 "smarty_internal_templateparser.php"
+#line 2276 "smarty_internal_templateparser.php"
 #line 229 "smarty_internal_templateparser.y"
     function yy_r12(){
     $this->compiler->tag_nocache = true;
@@ -2291,7 +2286,7 @@ static public $yy_action = array(
     $this->_retvalue = new _smarty_text($this, $this->compiler->processNocacheCode("<?php echo '<?xml';?>", $this->compiler, true));
     $this->template->has_nocache_code = $save;
     }
-#line 2290 "smarty_internal_templateparser.php"
+#line 2285 "smarty_internal_templateparser.php"
 #line 238 "smarty_internal_templateparser.y"
     function yy_r13(){
     if ($this->strip) {
@@ -2300,235 +2295,235 @@ static public $yy_action = array(
         $this->_retvalue = new _smarty_text($this, $this->yystack[$this->yyidx + 0]->minor);
     }
     }
-#line 2299 "smarty_internal_templateparser.php"
+#line 2294 "smarty_internal_templateparser.php"
 #line 247 "smarty_internal_templateparser.y"
     function yy_r14(){
     $this->strip = true;
     $this->_retvalue = new _smarty_text($this, '');
     }
-#line 2305 "smarty_internal_templateparser.php"
+#line 2300 "smarty_internal_templateparser.php"
 #line 252 "smarty_internal_templateparser.y"
     function yy_r15(){
     $this->strip = false;
     $this->_retvalue = new _smarty_text($this, '');
     }
-#line 2311 "smarty_internal_templateparser.php"
+#line 2306 "smarty_internal_templateparser.php"
 #line 258 "smarty_internal_templateparser.y"
     function yy_r16(){
     $this->_retvalue = '';
     }
-#line 2316 "smarty_internal_templateparser.php"
+#line 2311 "smarty_internal_templateparser.php"
 #line 262 "smarty_internal_templateparser.y"
     function yy_r17(){
     $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
     }
-#line 2321 "smarty_internal_templateparser.php"
+#line 2316 "smarty_internal_templateparser.php"
 #line 266 "smarty_internal_templateparser.y"
     function yy_r18(){
     $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
     }
-#line 2326 "smarty_internal_templateparser.php"
+#line 2321 "smarty_internal_templateparser.php"
 #line 274 "smarty_internal_templateparser.y"
     function yy_r20(){
     $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
     }
-#line 2331 "smarty_internal_templateparser.php"
+#line 2326 "smarty_internal_templateparser.php"
 #line 282 "smarty_internal_templateparser.y"
     function yy_r22(){
     $this->_retvalue = self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor);
     }
-#line 2336 "smarty_internal_templateparser.php"
+#line 2331 "smarty_internal_templateparser.php"
 #line 290 "smarty_internal_templateparser.y"
     function yy_r24(){
     $this->_retvalue = self::escape_end_tag($this->yystack[$this->yyidx + 0]->minor);
     }
-#line 2341 "smarty_internal_templateparser.php"
+#line 2336 "smarty_internal_templateparser.php"
 #line 294 "smarty_internal_templateparser.y"
     function yy_r25(){
     $this->_retvalue = '<<?php ?>%';
     }
-#line 2346 "smarty_internal_templateparser.php"
+#line 2341 "smarty_internal_templateparser.php"
 #line 298 "smarty_internal_templateparser.y"
     function yy_r26(){
     $this->_retvalue = '%<?php ?>>';
     }
-#line 2351 "smarty_internal_templateparser.php"
+#line 2346 "smarty_internal_templateparser.php"
 #line 307 "smarty_internal_templateparser.y"
     function yy_r27(){
     $this->_retvalue = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$this->yystack[$this->yyidx + -1]->minor));
     }
-#line 2356 "smarty_internal_templateparser.php"
+#line 2351 "smarty_internal_templateparser.php"
 #line 311 "smarty_internal_templateparser.y"
     function yy_r28(){
     $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + -1]->minor,array('value'=>$this->yystack[$this->yyidx + -3]->minor, 'modifierlist'=>$this->yystack[$this->yyidx + -2]->minor));
     }
-#line 2361 "smarty_internal_templateparser.php"
+#line 2356 "smarty_internal_templateparser.php"
 #line 315 "smarty_internal_templateparser.y"
     function yy_r29(){
     $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + -1]->minor,array('value'=>$this->yystack[$this->yyidx + -2]->minor));
     }
-#line 2366 "smarty_internal_templateparser.php"
+#line 2361 "smarty_internal_templateparser.php"
 #line 319 "smarty_internal_templateparser.y"
     function yy_r30(){
     $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + -1]->minor,array('value'=>$this->yystack[$this->yyidx + -3]->minor,'modifierlist'=>$this->yystack[$this->yyidx + -2]->minor));
     }
-#line 2371 "smarty_internal_templateparser.php"
+#line 2366 "smarty_internal_templateparser.php"
 #line 332 "smarty_internal_templateparser.y"
     function yy_r32(){
     $this->_retvalue = $this->compiler->compileTag('assign',array(array('value'=>$this->yystack[$this->yyidx + -1]->minor),array('var'=>"'".$this->yystack[$this->yyidx + -3]->minor."'")));
     }
-#line 2376 "smarty_internal_templateparser.php"
+#line 2371 "smarty_internal_templateparser.php"
 #line 340 "smarty_internal_templateparser.y"
     function yy_r34(){
     $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + -2]->minor),array('var'=>"'".$this->yystack[$this->yyidx + -4]->minor."'")),$this->yystack[$this->yyidx + -1]->minor));
     }
-#line 2381 "smarty_internal_templateparser.php"
+#line 2376 "smarty_internal_templateparser.php"
 #line 344 "smarty_internal_templateparser.y"
     function yy_r35(){
     $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + -2]->minor),array('var'=>$this->yystack[$this->yyidx + -4]->minor['var'])),$this->yystack[$this->yyidx + -1]->minor),array('smarty_internal_index'=>$this->yystack[$this->yyidx + -4]->minor['smarty_internal_index']));
     }
-#line 2386 "smarty_internal_templateparser.php"
+#line 2381 "smarty_internal_templateparser.php"
 #line 349 "smarty_internal_templateparser.y"
     function yy_r36(){
     $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + -1]->minor);
     }
-#line 2391 "smarty_internal_templateparser.php"
+#line 2386 "smarty_internal_templateparser.php"
 #line 353 "smarty_internal_templateparser.y"
     function yy_r37(){
     $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,array());
     }
-#line 2396 "smarty_internal_templateparser.php"
+#line 2391 "smarty_internal_templateparser.php"
 #line 358 "smarty_internal_templateparser.y"
     function yy_r38(){
     $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor,array('object_methode'=>$this->yystack[$this->yyidx + -2]->minor));
     }
-#line 2401 "smarty_internal_templateparser.php"
+#line 2396 "smarty_internal_templateparser.php"
 #line 363 "smarty_internal_templateparser.y"
     function yy_r39(){
     $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,$this->yystack[$this->yyidx + -1]->minor).'<?php echo ';
     $this->_retvalue .= $this->compiler->compileTag('private_modifier',array(),array('modifierlist'=>$this->yystack[$this->yyidx + -2]->minor,'value'=>'ob_get_clean()')).'?>';
     }
-#line 2407 "smarty_internal_templateparser.php"
+#line 2402 "smarty_internal_templateparser.php"
 #line 369 "smarty_internal_templateparser.y"
     function yy_r40(){
     $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -5]->minor,$this->yystack[$this->yyidx + -1]->minor,array('object_methode'=>$this->yystack[$this->yyidx + -3]->minor)).'<?php echo ';
     $this->_retvalue .= $this->compiler->compileTag('private_modifier',array(),array('modifierlist'=>$this->yystack[$this->yyidx + -2]->minor,'value'=>'ob_get_clean()')).'?>';
     }
-#line 2413 "smarty_internal_templateparser.php"
+#line 2408 "smarty_internal_templateparser.php"
 #line 375 "smarty_internal_templateparser.y"
     function yy_r41(){
     $tag = trim(substr($this->yystack[$this->yyidx + -2]->minor,$this->lex->ldel_length));
     $this->_retvalue = $this->compiler->compileTag(($tag == 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + -1]->minor));
     }
-#line 2419 "smarty_internal_templateparser.php"
+#line 2414 "smarty_internal_templateparser.php"
 #line 380 "smarty_internal_templateparser.y"
     function yy_r42(){
     $tag = trim(substr($this->yystack[$this->yyidx + -3]->minor,$this->lex->ldel_length));
     $this->_retvalue = $this->compiler->compileTag(($tag == 'else if')? 'elseif' : $tag,$this->yystack[$this->yyidx + -1]->minor,array('if condition'=>$this->yystack[$this->yyidx + -2]->minor));
     }
-#line 2425 "smarty_internal_templateparser.php"
+#line 2420 "smarty_internal_templateparser.php"
 #line 385 "smarty_internal_templateparser.y"
     function yy_r43(){
     $tag = trim(substr($this->yystack[$this->yyidx + -2]->minor,$this->lex->ldel_length));
     $this->_retvalue = $this->compiler->compileTag(($tag == 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + -1]->minor));
     }
-#line 2431 "smarty_internal_templateparser.php"
+#line 2426 "smarty_internal_templateparser.php"
 #line 396 "smarty_internal_templateparser.y"
     function yy_r45(){
     $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('start'=>$this->yystack[$this->yyidx + -10]->minor),array('ifexp'=>$this->yystack[$this->yyidx + -7]->minor),array('var'=>$this->yystack[$this->yyidx + -3]->minor),array('step'=>$this->yystack[$this->yyidx + -2]->minor))),1);
     }
-#line 2436 "smarty_internal_templateparser.php"
+#line 2431 "smarty_internal_templateparser.php"
 #line 400 "smarty_internal_templateparser.y"
     function yy_r46(){
     $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor;
     }
-#line 2441 "smarty_internal_templateparser.php"
+#line 2436 "smarty_internal_templateparser.php"
 #line 408 "smarty_internal_templateparser.y"
     function yy_r48(){
     $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('start'=>$this->yystack[$this->yyidx + -4]->minor),array('to'=>$this->yystack[$this->yyidx + -2]->minor))),0);
     }
-#line 2446 "smarty_internal_templateparser.php"
+#line 2441 "smarty_internal_templateparser.php"
 #line 412 "smarty_internal_templateparser.y"
     function yy_r49(){
     $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('start'=>$this->yystack[$this->yyidx + -6]->minor),array('to'=>$this->yystack[$this->yyidx + -4]->minor),array('step'=>$this->yystack[$this->yyidx + -2]->minor))),0);
     }
-#line 2451 "smarty_internal_templateparser.php"
+#line 2446 "smarty_internal_templateparser.php"
 #line 417 "smarty_internal_templateparser.y"
     function yy_r50(){
     $this->_retvalue = $this->compiler->compileTag('foreach',$this->yystack[$this->yyidx + -1]->minor);
     }
-#line 2456 "smarty_internal_templateparser.php"
+#line 2451 "smarty_internal_templateparser.php"
 #line 422 "smarty_internal_templateparser.y"
     function yy_r51(){
     $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('from'=>$this->yystack[$this->yyidx + -5]->minor),array('item'=>$this->yystack[$this->yyidx + -2]->minor))));
     }
-#line 2461 "smarty_internal_templateparser.php"
+#line 2456 "smarty_internal_templateparser.php"
 #line 426 "smarty_internal_templateparser.y"
     function yy_r52(){
     $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('from'=>$this->yystack[$this->yyidx + -8]->minor),array('item'=>$this->yystack[$this->yyidx + -2]->minor),array('key'=>$this->yystack[$this->yyidx + -5]->minor))));
     }
-#line 2466 "smarty_internal_templateparser.php"
+#line 2461 "smarty_internal_templateparser.php"
 #line 430 "smarty_internal_templateparser.y"
     function yy_r53(){
     $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('from'=>$this->yystack[$this->yyidx + -5]->minor),array('item'=>$this->yystack[$this->yyidx + -2]->minor))));
     }
-#line 2471 "smarty_internal_templateparser.php"
+#line 2466 "smarty_internal_templateparser.php"
 #line 434 "smarty_internal_templateparser.y"
     function yy_r54(){
     $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('from'=>$this->yystack[$this->yyidx + -8]->minor),array('item'=>$this->yystack[$this->yyidx + -2]->minor),array('key'=>$this->yystack[$this->yyidx + -5]->minor))));
     }
-#line 2476 "smarty_internal_templateparser.php"
+#line 2471 "smarty_internal_templateparser.php"
 #line 439 "smarty_internal_templateparser.y"
     function yy_r55(){
     $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array(array_merge(array($this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor))));
     }
-#line 2481 "smarty_internal_templateparser.php"
+#line 2476 "smarty_internal_templateparser.php"
 #line 443 "smarty_internal_templateparser.y"
     function yy_r56(){
     $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array_merge(array(array_merge(array($this->yystack[$this->yyidx + -3]->minor),$this->yystack[$this->yyidx + -2]->minor)),$this->yystack[$this->yyidx + -1]->minor)));
     }
-#line 2486 "smarty_internal_templateparser.php"
+#line 2481 "smarty_internal_templateparser.php"
 #line 448 "smarty_internal_templateparser.y"
     function yy_r57(){
     $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileChildBlock($this->compiler);
     }
-#line 2491 "smarty_internal_templateparser.php"
+#line 2486 "smarty_internal_templateparser.php"
 #line 454 "smarty_internal_templateparser.y"
     function yy_r58(){
     $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',array());
     }
-#line 2496 "smarty_internal_templateparser.php"
+#line 2491 "smarty_internal_templateparser.php"
 #line 458 "smarty_internal_templateparser.y"
     function yy_r59(){
     $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',array(),array('modifier_list'=>$this->yystack[$this->yyidx + -1]->minor));
     }
-#line 2501 "smarty_internal_templateparser.php"
+#line 2496 "smarty_internal_templateparser.php"
 #line 463 "smarty_internal_templateparser.y"
     function yy_r60(){
     $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array(),array('object_methode'=>$this->yystack[$this->yyidx + -1]->minor));
     }
-#line 2506 "smarty_internal_templateparser.php"
+#line 2501 "smarty_internal_templateparser.php"
 #line 467 "smarty_internal_templateparser.y"
     function yy_r61(){
     $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor.'close',array(),array('object_methode'=>$this->yystack[$this->yyidx + -2]->minor, 'modifier_list'=>$this->yystack[$this->yyidx + -1]->minor));
     }
-#line 2511 "smarty_internal_templateparser.php"
+#line 2506 "smarty_internal_templateparser.php"
 #line 475 "smarty_internal_templateparser.y"
     function yy_r62(){
     $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
     $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor;
     }
-#line 2517 "smarty_internal_templateparser.php"
+#line 2512 "smarty_internal_templateparser.php"
 #line 481 "smarty_internal_templateparser.y"
     function yy_r63(){
     $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
     }
-#line 2522 "smarty_internal_templateparser.php"
+#line 2517 "smarty_internal_templateparser.php"
 #line 486 "smarty_internal_templateparser.y"
     function yy_r64(){
     $this->_retvalue = array();
     }
-#line 2527 "smarty_internal_templateparser.php"
+#line 2522 "smarty_internal_templateparser.php"
 #line 491 "smarty_internal_templateparser.y"
     function yy_r65(){
     if (preg_match('~^true$~i', $this->yystack[$this->yyidx + 0]->minor)) {
@@ -2541,130 +2536,130 @@ static public $yy_action = array(
         $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>"'".$this->yystack[$this->yyidx + 0]->minor."'");
     }
     }
-#line 2540 "smarty_internal_templateparser.php"
+#line 2535 "smarty_internal_templateparser.php"
 #line 503 "smarty_internal_templateparser.y"
     function yy_r66(){
     $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor," =\n\r\t")=>$this->yystack[$this->yyidx + 0]->minor);
     }
-#line 2545 "smarty_internal_templateparser.php"
+#line 2540 "smarty_internal_templateparser.php"
 #line 511 "smarty_internal_templateparser.y"
     function yy_r68(){
     $this->_retvalue = "'".$this->yystack[$this->yyidx + 0]->minor."'";
     }
-#line 2550 "smarty_internal_templateparser.php"
+#line 2545 "smarty_internal_templateparser.php"
 #line 523 "smarty_internal_templateparser.y"
     function yy_r71(){
     $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor);
     }
-#line 2555 "smarty_internal_templateparser.php"
+#line 2550 "smarty_internal_templateparser.php"
 #line 536 "smarty_internal_templateparser.y"
     function yy_r73(){
     $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor;
     $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor;
     }
-#line 2561 "smarty_internal_templateparser.php"
+#line 2556 "smarty_internal_templateparser.php"
 #line 541 "smarty_internal_templateparser.y"
     function yy_r74(){
     $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor);
     }
-#line 2566 "smarty_internal_templateparser.php"
+#line 2561 "smarty_internal_templateparser.php"
 #line 569 "smarty_internal_templateparser.y"
     function yy_r79(){
     $this->_retvalue = '$_smarty_tpl->getStreamVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'://'. $this->yystack[$this->yyidx + 0]->minor . '\')';
     }
-#line 2571 "smarty_internal_templateparser.php"
+#line 2566 "smarty_internal_templateparser.php"
 #line 574 "smarty_internal_templateparser.y"
     function yy_r80(){
     $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . trim($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor;
     }
-#line 2576 "smarty_internal_templateparser.php"
+#line 2571 "smarty_internal_templateparser.php"
 #line 593 "smarty_internal_templateparser.y"
     function yy_r84(){
     $this->_retvalue = $this->compiler->compileTag('private_modifier',array(),array('value'=>$this->yystack[$this->yyidx + -1]->minor,'modifierlist'=>$this->yystack[$this->yyidx + 0]->minor));
     }
-#line 2581 "smarty_internal_templateparser.php"
+#line 2576 "smarty_internal_templateparser.php"
 #line 599 "smarty_internal_templateparser.y"
     function yy_r85(){
     $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
     }
-#line 2586 "smarty_internal_templateparser.php"
+#line 2581 "smarty_internal_templateparser.php"
 #line 603 "smarty_internal_templateparser.y"
     function yy_r86(){
     $this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')';
     }
-#line 2591 "smarty_internal_templateparser.php"
+#line 2586 "smarty_internal_templateparser.php"
 #line 607 "smarty_internal_templateparser.y"
     function yy_r87(){
     $this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')';
     }
-#line 2596 "smarty_internal_templateparser.php"
+#line 2591 "smarty_internal_templateparser.php"
 #line 615 "smarty_internal_templateparser.y"
     function yy_r89(){
     $this->_retvalue = '!('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')';
     }
-#line 2601 "smarty_internal_templateparser.php"
+#line 2596 "smarty_internal_templateparser.php"
 #line 619 "smarty_internal_templateparser.y"
     function yy_r90(){
     $this->_retvalue = '('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')';
     }
-#line 2606 "smarty_internal_templateparser.php"
+#line 2601 "smarty_internal_templateparser.php"
 #line 623 "smarty_internal_templateparser.y"
     function yy_r91(){
     $this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -1]->minor.')';
     }
-#line 2611 "smarty_internal_templateparser.php"
+#line 2606 "smarty_internal_templateparser.php"
 #line 627 "smarty_internal_templateparser.y"
     function yy_r92(){
     $this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -1]->minor.')';
     }
-#line 2616 "smarty_internal_templateparser.php"
+#line 2611 "smarty_internal_templateparser.php"
 #line 631 "smarty_internal_templateparser.y"
     function yy_r93(){
     $this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')';
     }
-#line 2621 "smarty_internal_templateparser.php"
+#line 2616 "smarty_internal_templateparser.php"
 #line 635 "smarty_internal_templateparser.y"
     function yy_r94(){
     $this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')';
     }
-#line 2626 "smarty_internal_templateparser.php"
+#line 2621 "smarty_internal_templateparser.php"
 #line 659 "smarty_internal_templateparser.y"
     function yy_r100(){
     $this->prefix_number++;
     $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'='.$this->yystack[$this->yyidx + 0]->minor.';?>';
     $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.'$_tmp'.$this->prefix_number;
     }
-#line 2633 "smarty_internal_templateparser.php"
+#line 2628 "smarty_internal_templateparser.php"
 #line 668 "smarty_internal_templateparser.y"
     function yy_r101(){
     $this->_retvalue = $this->yystack[$this->yyidx + -6]->minor.' ? '. $this->compileVariable("'".$this->yystack[$this->yyidx + -2]->minor."'") . ' : '.$this->yystack[$this->yyidx + 0]->minor;
     }
-#line 2638 "smarty_internal_templateparser.php"
+#line 2633 "smarty_internal_templateparser.php"
 #line 672 "smarty_internal_templateparser.y"
     function yy_r102(){
     $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor;
     }
-#line 2643 "smarty_internal_templateparser.php"
+#line 2638 "smarty_internal_templateparser.php"
 #line 687 "smarty_internal_templateparser.y"
     function yy_r105(){
     $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor;
     }
-#line 2648 "smarty_internal_templateparser.php"
+#line 2643 "smarty_internal_templateparser.php"
 #line 708 "smarty_internal_templateparser.y"
     function yy_r110(){
     $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
     }
-#line 2653 "smarty_internal_templateparser.php"
+#line 2648 "smarty_internal_templateparser.php"
 #line 712 "smarty_internal_templateparser.y"
     function yy_r111(){
     $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.';
     }
-#line 2658 "smarty_internal_templateparser.php"
+#line 2653 "smarty_internal_templateparser.php"
 #line 716 "smarty_internal_templateparser.y"
     function yy_r112(){
     $this->_retvalue = '.'.$this->yystack[$this->yyidx + 0]->minor;
     }
-#line 2663 "smarty_internal_templateparser.php"
+#line 2658 "smarty_internal_templateparser.php"
 #line 721 "smarty_internal_templateparser.y"
     function yy_r113(){
     if (preg_match('~^true$~i', $this->yystack[$this->yyidx + 0]->minor)) {
@@ -2677,12 +2672,12 @@ static public $yy_action = array(
         $this->_retvalue = "'".$this->yystack[$this->yyidx + 0]->minor."'";
     }
     }
-#line 2676 "smarty_internal_templateparser.php"
+#line 2671 "smarty_internal_templateparser.php"
 #line 739 "smarty_internal_templateparser.y"
     function yy_r115(){
     $this->_retvalue = "(". $this->yystack[$this->yyidx + -1]->minor .")";
     }
-#line 2681 "smarty_internal_templateparser.php"
+#line 2676 "smarty_internal_templateparser.php"
 #line 754 "smarty_internal_templateparser.y"
     function yy_r118(){
     if (!$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)) {
@@ -2695,7 +2690,7 @@ static public $yy_action = array(
         $this->compiler->trigger_template_error ("static class '".$this->yystack[$this->yyidx + -2]->minor."' is undefined or not allowed by security setting");
     }
     }
-#line 2694 "smarty_internal_templateparser.php"
+#line 2689 "smarty_internal_templateparser.php"
 #line 766 "smarty_internal_templateparser.y"
     function yy_r119(){
     if ($this->yystack[$this->yyidx + -2]->minor['var'] == '\'smarty\'') {
@@ -2704,14 +2699,14 @@ static public $yy_action = array(
         $this->_retvalue = $this->compileVariable($this->yystack[$this->yyidx + -2]->minor['var']).$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index'].'::'.$this->yystack[$this->yyidx + 0]->minor;
     }
     }
-#line 2703 "smarty_internal_templateparser.php"
+#line 2698 "smarty_internal_templateparser.php"
 #line 775 "smarty_internal_templateparser.y"
     function yy_r120(){
     $this->prefix_number++;
     $this->compiler->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + 0]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>';
     $this->_retvalue = '$_tmp'.$this->prefix_number;
     }
-#line 2710 "smarty_internal_templateparser.php"
+#line 2705 "smarty_internal_templateparser.php"
 #line 790 "smarty_internal_templateparser.y"
     function yy_r122(){
     if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') {
@@ -2724,145 +2719,155 @@ static public $yy_action = array(
         $this->_retvalue = $this->compileVariable($this->yystack[$this->yyidx + 0]->minor['var']).$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
     }
     }
-#line 2723 "smarty_internal_templateparser.php"
+#line 2718 "smarty_internal_templateparser.php"
 #line 803 "smarty_internal_templateparser.y"
     function yy_r123(){
     $this->_retvalue = '$_smarty_tpl->tpl_vars['. $this->yystack[$this->yyidx + -2]->minor .']->'.$this->yystack[$this->yyidx + 0]->minor;
     }
-#line 2728 "smarty_internal_templateparser.php"
+#line 2723 "smarty_internal_templateparser.php"
 #line 813 "smarty_internal_templateparser.y"
     function yy_r125(){
     $this->_retvalue = '$_smarty_tpl->getConfigVariable(\''. $this->yystack[$this->yyidx + -1]->minor .'\')';
     }
-#line 2733 "smarty_internal_templateparser.php"
+#line 2728 "smarty_internal_templateparser.php"
 #line 817 "smarty_internal_templateparser.y"
     function yy_r126(){
+    $this->_retvalue = '(is_array($tmp = $_smarty_tpl->getConfigVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'\')) ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' :null)';
+    }
+#line 2733 "smarty_internal_templateparser.php"
+#line 821 "smarty_internal_templateparser.y"
+    function yy_r127(){
     $this->_retvalue = '$_smarty_tpl->getConfigVariable('. $this->yystack[$this->yyidx + -1]->minor .')';
     }
 #line 2738 "smarty_internal_templateparser.php"
-#line 821 "smarty_internal_templateparser.y"
-    function yy_r127(){
-    $this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor);
+#line 825 "smarty_internal_templateparser.y"
+    function yy_r128(){
+    $this->_retvalue = '(is_array($tmp = $_smarty_tpl->getConfigVariable('. $this->yystack[$this->yyidx + -2]->minor .')) ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' : null)';
     }
 #line 2743 "smarty_internal_templateparser.php"
-#line 834 "smarty_internal_templateparser.y"
+#line 829 "smarty_internal_templateparser.y"
     function yy_r129(){
-    return;
+    $this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor);
     }
 #line 2748 "smarty_internal_templateparser.php"
-#line 840 "smarty_internal_templateparser.y"
-    function yy_r130(){
-    $this->_retvalue = '['.$this->compileVariable($this->yystack[$this->yyidx + 0]->minor).']';
+#line 842 "smarty_internal_templateparser.y"
+    function yy_r131(){
+    return;
     }
 #line 2753 "smarty_internal_templateparser.php"
-#line 844 "smarty_internal_templateparser.y"
-    function yy_r131(){
-    $this->_retvalue = '['.$this->compileVariable($this->yystack[$this->yyidx + -2]->minor).'->'.$this->yystack[$this->yyidx + 0]->minor.']';
-    }
-#line 2758 "smarty_internal_templateparser.php"
 #line 848 "smarty_internal_templateparser.y"
     function yy_r132(){
-    $this->_retvalue = "['". $this->yystack[$this->yyidx + 0]->minor ."']";
+    $this->_retvalue = '['.$this->compileVariable($this->yystack[$this->yyidx + 0]->minor).']';
     }
-#line 2763 "smarty_internal_templateparser.php"
+#line 2758 "smarty_internal_templateparser.php"
 #line 852 "smarty_internal_templateparser.y"
     function yy_r133(){
-    $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]";
+    $this->_retvalue = '['.$this->compileVariable($this->yystack[$this->yyidx + -2]->minor).'->'.$this->yystack[$this->yyidx + 0]->minor.']';
     }
-#line 2768 "smarty_internal_templateparser.php"
+#line 2763 "smarty_internal_templateparser.php"
 #line 856 "smarty_internal_templateparser.y"
     function yy_r134(){
-    $this->_retvalue = "[". $this->yystack[$this->yyidx + -1]->minor ."]";
+    $this->_retvalue = "['". $this->yystack[$this->yyidx + 0]->minor ."']";
+    }
+#line 2768 "smarty_internal_templateparser.php"
+#line 860 "smarty_internal_templateparser.y"
+    function yy_r135(){
+    $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]";
     }
 #line 2773 "smarty_internal_templateparser.php"
-#line 861 "smarty_internal_templateparser.y"
-    function yy_r135(){
-    $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']';
+#line 864 "smarty_internal_templateparser.y"
+    function yy_r136(){
+    $this->_retvalue = "[". $this->yystack[$this->yyidx + -1]->minor ."]";
     }
 #line 2778 "smarty_internal_templateparser.php"
-#line 865 "smarty_internal_templateparser.y"
-    function yy_r136(){
-    $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']';
+#line 869 "smarty_internal_templateparser.y"
+    function yy_r137(){
+    $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']';
     }
 #line 2783 "smarty_internal_templateparser.php"
-#line 875 "smarty_internal_templateparser.y"
+#line 873 "smarty_internal_templateparser.y"
     function yy_r138(){
-    $this->_retvalue = '[]';
+    $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']';
     }
 #line 2788 "smarty_internal_templateparser.php"
-#line 888 "smarty_internal_templateparser.y"
+#line 883 "smarty_internal_templateparser.y"
     function yy_r140(){
-    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
+    $this->_retvalue = '[]';
     }
 #line 2793 "smarty_internal_templateparser.php"
-#line 893 "smarty_internal_templateparser.y"
-    function yy_r141(){
-    $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';
+#line 896 "smarty_internal_templateparser.y"
+    function yy_r142(){
+    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
     }
 #line 2798 "smarty_internal_templateparser.php"
-#line 898 "smarty_internal_templateparser.y"
-    function yy_r142(){
-    $this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')';
+#line 901 "smarty_internal_templateparser.y"
+    function yy_r143(){
+    $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';
     }
 #line 2803 "smarty_internal_templateparser.php"
-#line 905 "smarty_internal_templateparser.y"
-    function yy_r143(){
+#line 906 "smarty_internal_templateparser.y"
+    function yy_r144(){
+    $this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')';
+    }
+#line 2808 "smarty_internal_templateparser.php"
+#line 913 "smarty_internal_templateparser.y"
+    function yy_r145(){
     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 2812 "smarty_internal_templateparser.php"
-#line 914 "smarty_internal_templateparser.y"
-    function yy_r144(){
+#line 2817 "smarty_internal_templateparser.php"
+#line 922 "smarty_internal_templateparser.y"
+    function yy_r146(){
     $this->_retvalue  = $this->yystack[$this->yyidx + 0]->minor;
     }
-#line 2817 "smarty_internal_templateparser.php"
-#line 919 "smarty_internal_templateparser.y"
-    function yy_r145(){
+#line 2822 "smarty_internal_templateparser.php"
+#line 927 "smarty_internal_templateparser.y"
+    function yy_r147(){
     $this->_retvalue  = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
     }
-#line 2822 "smarty_internal_templateparser.php"
-#line 924 "smarty_internal_templateparser.y"
-    function yy_r146(){
+#line 2827 "smarty_internal_templateparser.php"
+#line 932 "smarty_internal_templateparser.y"
+    function yy_r148(){
     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 2830 "smarty_internal_templateparser.php"
-#line 931 "smarty_internal_templateparser.y"
-    function yy_r147(){
+#line 2835 "smarty_internal_templateparser.php"
+#line 939 "smarty_internal_templateparser.y"
+    function yy_r149(){
     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 2838 "smarty_internal_templateparser.php"
-#line 938 "smarty_internal_templateparser.y"
-    function yy_r148(){
+#line 2843 "smarty_internal_templateparser.php"
+#line 946 "smarty_internal_templateparser.y"
+    function yy_r150(){
     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 2846 "smarty_internal_templateparser.php"
-#line 945 "smarty_internal_templateparser.y"
-    function yy_r149(){
+#line 2851 "smarty_internal_templateparser.php"
+#line 953 "smarty_internal_templateparser.y"
+    function yy_r151(){
     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 2854 "smarty_internal_templateparser.php"
-#line 953 "smarty_internal_templateparser.y"
-    function yy_r150(){
-    $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor;
-    }
 #line 2859 "smarty_internal_templateparser.php"
 #line 961 "smarty_internal_templateparser.y"
-    function yy_r151(){
+    function yy_r152(){
+    $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor;
+    }
+#line 2864 "smarty_internal_templateparser.php"
+#line 969 "smarty_internal_templateparser.y"
+    function yy_r153(){
     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);
@@ -2896,17 +2901,17 @@ static public $yy_action = array(
         }
     }
     }
-#line 2895 "smarty_internal_templateparser.php"
-#line 999 "smarty_internal_templateparser.y"
-    function yy_r152(){
+#line 2900 "smarty_internal_templateparser.php"
+#line 1007 "smarty_internal_templateparser.y"
+    function yy_r154(){
     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 2903 "smarty_internal_templateparser.php"
-#line 1006 "smarty_internal_templateparser.y"
-    function yy_r153(){
+#line 2908 "smarty_internal_templateparser.php"
+#line 1014 "smarty_internal_templateparser.y"
+    function yy_r155(){
     if ($this->security) {
         $this->compiler->trigger_template_error (self::Err2);
     }
@@ -2914,168 +2919,168 @@ static public $yy_action = array(
     $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'='.$this->compileVariable("'".$this->yystack[$this->yyidx + -3]->minor."'").';?>';
     $this->_retvalue = '$_tmp'.$this->prefix_number.'('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')';
     }
-#line 2913 "smarty_internal_templateparser.php"
-#line 1017 "smarty_internal_templateparser.y"
-    function yy_r154(){
+#line 2918 "smarty_internal_templateparser.php"
+#line 1025 "smarty_internal_templateparser.y"
+    function yy_r156(){
     $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array($this->yystack[$this->yyidx + 0]->minor));
     }
-#line 2918 "smarty_internal_templateparser.php"
-#line 1034 "smarty_internal_templateparser.y"
-    function yy_r157(){
-    $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 2923 "smarty_internal_templateparser.php"
-#line 1038 "smarty_internal_templateparser.y"
-    function yy_r158(){
-    $this->_retvalue = array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor));
+#line 1042 "smarty_internal_templateparser.y"
+    function yy_r159(){
+    $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 2928 "smarty_internal_templateparser.php"
 #line 1046 "smarty_internal_templateparser.y"
     function yy_r160(){
-    $this->_retvalue =  array($this->yystack[$this->yyidx + 0]->minor);
+    $this->_retvalue = array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor));
     }
 #line 2933 "smarty_internal_templateparser.php"
 #line 1054 "smarty_internal_templateparser.y"
-    function yy_r161(){
-    $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
+    function yy_r162(){
+    $this->_retvalue =  array($this->yystack[$this->yyidx + 0]->minor);
     }
 #line 2938 "smarty_internal_templateparser.php"
-#line 1088 "smarty_internal_templateparser.y"
-    function yy_r168(){
-    $this->_retvalue = '$'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+#line 1062 "smarty_internal_templateparser.y"
+    function yy_r163(){
+    $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
     }
 #line 2943 "smarty_internal_templateparser.php"
-#line 1093 "smarty_internal_templateparser.y"
-    function yy_r169(){
-    $this->_retvalue = '$'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+#line 1096 "smarty_internal_templateparser.y"
+    function yy_r170(){
+    $this->_retvalue = '$'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
     }
 #line 2948 "smarty_internal_templateparser.php"
-#line 1099 "smarty_internal_templateparser.y"
-    function yy_r170(){
-    $this->_retvalue = '==';
+#line 1101 "smarty_internal_templateparser.y"
+    function yy_r171(){
+    $this->_retvalue = '$'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
     }
 #line 2953 "smarty_internal_templateparser.php"
-#line 1103 "smarty_internal_templateparser.y"
-    function yy_r171(){
-    $this->_retvalue = '!=';
-    }
-#line 2958 "smarty_internal_templateparser.php"
 #line 1107 "smarty_internal_templateparser.y"
     function yy_r172(){
-    $this->_retvalue = '>';
+    $this->_retvalue = '==';
     }
-#line 2963 "smarty_internal_templateparser.php"
+#line 2958 "smarty_internal_templateparser.php"
 #line 1111 "smarty_internal_templateparser.y"
     function yy_r173(){
-    $this->_retvalue = '<';
+    $this->_retvalue = '!=';
     }
-#line 2968 "smarty_internal_templateparser.php"
+#line 2963 "smarty_internal_templateparser.php"
 #line 1115 "smarty_internal_templateparser.y"
     function yy_r174(){
-    $this->_retvalue = '>=';
+    $this->_retvalue = '>';
     }
-#line 2973 "smarty_internal_templateparser.php"
+#line 2968 "smarty_internal_templateparser.php"
 #line 1119 "smarty_internal_templateparser.y"
     function yy_r175(){
-    $this->_retvalue = '<=';
+    $this->_retvalue = '<';
     }
-#line 2978 "smarty_internal_templateparser.php"
+#line 2973 "smarty_internal_templateparser.php"
 #line 1123 "smarty_internal_templateparser.y"
     function yy_r176(){
-    $this->_retvalue = '===';
+    $this->_retvalue = '>=';
     }
-#line 2983 "smarty_internal_templateparser.php"
+#line 2978 "smarty_internal_templateparser.php"
 #line 1127 "smarty_internal_templateparser.y"
     function yy_r177(){
-    $this->_retvalue = '!==';
+    $this->_retvalue = '<=';
     }
-#line 2988 "smarty_internal_templateparser.php"
+#line 2983 "smarty_internal_templateparser.php"
 #line 1131 "smarty_internal_templateparser.y"
     function yy_r178(){
-    $this->_retvalue = '%';
+    $this->_retvalue = '===';
     }
-#line 2993 "smarty_internal_templateparser.php"
+#line 2988 "smarty_internal_templateparser.php"
 #line 1135 "smarty_internal_templateparser.y"
     function yy_r179(){
-    $this->_retvalue = '&&';
+    $this->_retvalue = '!==';
     }
-#line 2998 "smarty_internal_templateparser.php"
+#line 2993 "smarty_internal_templateparser.php"
 #line 1139 "smarty_internal_templateparser.y"
     function yy_r180(){
-    $this->_retvalue = '||';
+    $this->_retvalue = '%';
     }
-#line 3003 "smarty_internal_templateparser.php"
+#line 2998 "smarty_internal_templateparser.php"
 #line 1143 "smarty_internal_templateparser.y"
     function yy_r181(){
-    $this->_retvalue = ' XOR ';
+    $this->_retvalue = '&&';
+    }
+#line 3003 "smarty_internal_templateparser.php"
+#line 1147 "smarty_internal_templateparser.y"
+    function yy_r182(){
+    $this->_retvalue = '||';
     }
 #line 3008 "smarty_internal_templateparser.php"
-#line 1150 "smarty_internal_templateparser.y"
-    function yy_r182(){
-    $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')';
+#line 1151 "smarty_internal_templateparser.y"
+    function yy_r183(){
+    $this->_retvalue = ' XOR ';
     }
 #line 3013 "smarty_internal_templateparser.php"
 #line 1158 "smarty_internal_templateparser.y"
     function yy_r184(){
-    $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor;
+    $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')';
     }
 #line 3018 "smarty_internal_templateparser.php"
 #line 1166 "smarty_internal_templateparser.y"
     function yy_r186(){
-    $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor;
+    $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor;
     }
 #line 3023 "smarty_internal_templateparser.php"
-#line 1170 "smarty_internal_templateparser.y"
-    function yy_r187(){
-    $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor;
+#line 1174 "smarty_internal_templateparser.y"
+    function yy_r188(){
+    $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor;
     }
 #line 3028 "smarty_internal_templateparser.php"
-#line 1182 "smarty_internal_templateparser.y"
+#line 1178 "smarty_internal_templateparser.y"
     function yy_r189(){
-    $this->_retvalue = "''";
+    $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor;
     }
 #line 3033 "smarty_internal_templateparser.php"
-#line 1186 "smarty_internal_templateparser.y"
-    function yy_r190(){
-    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php();
+#line 1190 "smarty_internal_templateparser.y"
+    function yy_r191(){
+    $this->_retvalue = "''";
     }
 #line 3038 "smarty_internal_templateparser.php"
-#line 1191 "smarty_internal_templateparser.y"
-    function yy_r191(){
+#line 1194 "smarty_internal_templateparser.y"
+    function yy_r192(){
+    $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php();
+    }
+#line 3043 "smarty_internal_templateparser.php"
+#line 1199 "smarty_internal_templateparser.y"
+    function yy_r193(){
     $this->yystack[$this->yyidx + -1]->minor->append_subtree($this->yystack[$this->yyidx + 0]->minor);
     $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
     }
-#line 3044 "smarty_internal_templateparser.php"
-#line 1196 "smarty_internal_templateparser.y"
-    function yy_r192(){
-    $this->_retvalue = new _smarty_doublequoted($this, $this->yystack[$this->yyidx + 0]->minor);
-    }
 #line 3049 "smarty_internal_templateparser.php"
-#line 1200 "smarty_internal_templateparser.y"
-    function yy_r193(){
-    $this->_retvalue = new _smarty_code($this, '(string)'.$this->yystack[$this->yyidx + -1]->minor);
+#line 1204 "smarty_internal_templateparser.y"
+    function yy_r194(){
+    $this->_retvalue = new _smarty_doublequoted($this, $this->yystack[$this->yyidx + 0]->minor);
     }
 #line 3054 "smarty_internal_templateparser.php"
 #line 1208 "smarty_internal_templateparser.y"
     function yy_r195(){
-    $this->_retvalue = new _smarty_code($this, '(string)$_smarty_tpl->tpl_vars[\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\']->value');
+    $this->_retvalue = new _smarty_code($this, '(string)'.$this->yystack[$this->yyidx + -1]->minor);
     }
 #line 3059 "smarty_internal_templateparser.php"
 #line 1216 "smarty_internal_templateparser.y"
     function yy_r197(){
-    $this->_retvalue = new _smarty_code($this, '(string)('.$this->yystack[$this->yyidx + -1]->minor.')');
+    $this->_retvalue = new _smarty_code($this, '(string)$_smarty_tpl->tpl_vars[\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\']->value');
     }
 #line 3064 "smarty_internal_templateparser.php"
-#line 1220 "smarty_internal_templateparser.y"
-    function yy_r198(){
-    $this->_retvalue = new _smarty_tag($this, $this->yystack[$this->yyidx + 0]->minor);
-    }
-#line 3069 "smarty_internal_templateparser.php"
 #line 1224 "smarty_internal_templateparser.y"
     function yy_r199(){
-    $this->_retvalue = new _smarty_dq_content($this, $this->yystack[$this->yyidx + 0]->minor);
+    $this->_retvalue = new _smarty_code($this, '(string)('.$this->yystack[$this->yyidx + -1]->minor.')');
+    }
+#line 3069 "smarty_internal_templateparser.php"
+#line 1228 "smarty_internal_templateparser.y"
+    function yy_r200(){
+    $this->_retvalue = new _smarty_tag($this, $this->yystack[$this->yyidx + 0]->minor);
     }
 #line 3074 "smarty_internal_templateparser.php"
+#line 1232 "smarty_internal_templateparser.y"
+    function yy_r201(){
+    $this->_retvalue = new _smarty_dq_content($this, $this->yystack[$this->yyidx + 0]->minor);
+    }
+#line 3079 "smarty_internal_templateparser.php"
 
     private $_retvalue;
 
@@ -3137,7 +3142,7 @@ static public $yy_action = array(
     $this->internalError = true;
     $this->yymajor = $yymajor;
     $this->compiler->trigger_template_error();
-#line 3137 "smarty_internal_templateparser.php"
+#line 3142 "smarty_internal_templateparser.php"
     }
 
     function yy_accept()
@@ -3154,7 +3159,7 @@ static public $yy_action = array(
     $this->internalError = false;
     $this->retvalue = $this->_retvalue;
     //echo $this->retvalue."\n\n";
-#line 3155 "smarty_internal_templateparser.php"
+#line 3160 "smarty_internal_templateparser.php"
     }
 
     function doParse($yymajor, $yytokenvalue)
@@ -3247,4 +3252,3 @@ static public $yy_action = array(
         } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
     }
 }
-?>
\ No newline at end of file
diff --git a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_utility.php b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_utility.php
index 3e362855..e169653f 100644
--- a/bundled-libs/Smarty/libs/sysplugins/smarty_internal_utility.php
+++ b/bundled-libs/Smarty/libs/sysplugins/smarty_internal_utility.php
@@ -72,7 +72,7 @@ class Smarty_Internal_Utility {
             $_compileDirs = new RecursiveDirectoryIterator($_dir);
             $_compile = new RecursiveIteratorIterator($_compileDirs);
             foreach ($_compile as $_fileinfo) {
-                if (substr($_fileinfo->getBasename(),0,1) == '.' || strpos($_fileinfo, '.svn') !== false) continue;
+                if (substr(basename($_file->getPathname()),0,1) == '.' || strpos($_fileinfo, '.svn') !== false) continue;
                 $_file = $_fileinfo->getFilename();
                 if (!substr_compare($_file, $extention, - strlen($extention)) == 0) continue;
                 if ($_fileinfo->getPath() == substr($_dir, 0, -1)) {
@@ -136,7 +136,7 @@ class Smarty_Internal_Utility {
             $_compileDirs = new RecursiveDirectoryIterator($_dir);
             $_compile = new RecursiveIteratorIterator($_compileDirs);
             foreach ($_compile as $_fileinfo) {
-                if (substr($_fileinfo->getBasename(),0,1) == '.' || strpos($_fileinfo, '.svn') !== false) continue;
+                if (substr(basename($_fileinfo->getPathname()),0,1) == '.' || strpos($_fileinfo, '.svn') !== false) continue;
                 $_file = $_fileinfo->getFilename();
                 if (!substr_compare($_file, $extention, - strlen($extention)) == 0) continue;
                 if ($_fileinfo->getPath() == substr($_dir, 0, -1)) {
@@ -231,7 +231,7 @@ class Smarty_Internal_Utility {
         }
         $_compile = new RecursiveIteratorIterator($_compileDirs, RecursiveIteratorIterator::CHILD_FIRST);
         foreach ($_compile as $_file) {
-            if (substr($_file->getBasename(), 0, 1) == '.' || strpos($_file, '.svn') !== false)
+            if (substr(basename($_file->getPathname()), 0, 1) == '.' || strpos($_file, '.svn') !== false)
                 continue;
 
             $_filepath = (string) $_file;
diff --git a/bundled-libs/Smarty/libs/sysplugins/smarty_resource.php b/bundled-libs/Smarty/libs/sysplugins/smarty_resource.php
index f79373af..55f1497f 100644
--- a/bundled-libs/Smarty/libs/sysplugins/smarty_resource.php
+++ b/bundled-libs/Smarty/libs/sysplugins/smarty_resource.php
@@ -159,16 +159,18 @@ abstract class Smarty_Resource {
             $_path = str_replace('\\', '/', $_path);
         }
         
+        $offset = 0;
+        
         // resolve simples
         $_path = preg_replace('#(/\./(\./)*)|/{2,}#', '/', $_path);
         // resolve parents
         while (true) {
-            $_parent = strpos($_path, '/../');
-            if ($_parent === false) {
-                break;
-            } else if ($_parent === 0) {
-                $_path = substr($_path, 3);
+            $_parent = strpos($_path, '/../', $offset);
+            if (!$_parent) {
                 break;
+            } else if ($_path[$_parent - 1] === '.') {
+                $offset = $_parent + 3;
+                continue;
             }
             
             $_pos = strrpos($_path, '/', $_parent - strlen($_path) - 1);
@@ -226,7 +228,6 @@ abstract class Smarty_Resource {
         if (!preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $file)) {
             // don't we all just love windows?
             $_path = str_replace('\\', '/', $file);
-            $_was_relative_prefix = $file[0] == '.' ? substr($file, 0, strpos($_path, '/')) : null;
             $_path = DS . trim($file, '/');
             $_was_relative = true;
         } else {
@@ -240,11 +241,7 @@ abstract class Smarty_Resource {
         }
         // revert to relative
         if (isset($_was_relative)) {
-            if (isset($_was_relative_prefix)){
-                $_path = $_was_relative_prefix . $_path;
-            } else {
-                $_path = substr($_path, 1);
-            }
+            $_path = substr($_path, 1);
         }
 
         // this is only required for directories