2017-12-21 03:49:06 +00:00
var Handlebars = function ( ) { var y = function ( ) { function l ( h ) { this . string = h } l . prototype . toString = function ( ) { return "" + this . string } ; return l } ( ) , v = function ( l ) { function h ( a ) { return b [ a ] || "&" } var g = { } , b = { "&" : "&" , "<" : "<" , ">" : ">" , '"' : """ , "'" : "'" , "`" : "`" , '=' : '=' } , a = /[&<>"'`=]/g , c = /[&<>"'`=]/ ; g . extend = function ( a , b ) { for ( var k in b ) Object . prototype . hasOwnProperty . call ( b , k ) && ( a [ k ] = b [ k ] ) } ; var d = Object . prototype . toString ; g . toString = d ; var e = function ( a ) { return "function" === typeof a } ; e ( /x/ ) && ( e = function ( a ) { return "function" ===
2014-06-04 20:03:55 +00:00
typeof a && "[object Function]" === d . call ( a ) } ) ; g . isFunction = e ; var x = Array . isArray || function ( a ) { return a && "object" === typeof a ? "[object Array]" === d . call ( a ) : ! 1 } ; g . isArray = x ; g . escapeExpression = function ( b ) { if ( b instanceof l ) return b . toString ( ) ; if ( ! b && 0 !== b ) return "" ; b = "" + b ; return ! c . test ( b ) ? b : b . replace ( a , h ) } ; g . isEmpty = function ( a ) { return ! a && 0 !== a ? ! 0 : x ( a ) && 0 === a . length ? ! 0 : ! 1 } ; return g } ( y ) , p = function ( ) { function l ( g , b ) { var a ; b && b . firstLine && ( a = b . firstLine , g += " - " + a + ":" + b . firstColumn ) ; for ( var c = Error . prototype . constructor . call ( this ,
g ) , d = 0 ; d < h . length ; d ++ ) this [ h [ d ] ] = c [ h [ d ] ] ; a && ( this . lineNumber = a , this . column = b . firstColumn ) } var h = "description fileName lineNumber message name number stack" . split ( " " ) ; l . prototype = Error ( ) ; return l } ( ) , z = function ( l , h ) { function g ( a , k ) { this . helpers = a || { } ; this . partials = k || { } ; b ( this ) } function b ( a ) { a . registerHelper ( "helperMissing" , function ( a ) { if ( 2 !== arguments . length ) throw new e ( "Missing helper: '" + a + "'" ) ; } ) ; a . registerHelper ( "blockHelperMissing" , function ( b , k ) { var c = k . inverse || function ( ) { } , n = k . fn ; f ( b ) && ( b =
b . call ( this ) ) ; return ! 0 === b ? n ( this ) : ! 1 === b || null == b ? c ( this ) : x ( b ) ? 0 < b . length ? a . helpers . each ( b , k ) : c ( this ) : n ( b ) } ) ; a . registerHelper ( "each" , function ( a , b ) { var k = b . fn , c = b . inverse , e = 0 , t = "" , d ; f ( a ) && ( a = a . call ( this ) ) ; b . data && ( d = n ( b . data ) ) ; if ( a && "object" === typeof a ) if ( x ( a ) ) for ( var g = a . length ; e < g ; e ++ ) d && ( d . index = e , d . first = 0 === e , d . last = e === a . length - 1 ) , t += k ( a [ e ] , { data : d } ) ; else for ( g in a ) a . hasOwnProperty ( g ) && ( d && ( d . key = g , d . index = e , d . first = 0 === e ) , t += k ( a [ g ] , { data : d } ) , e ++ ) ; 0 === e && ( t = c ( this ) ) ; return t } ) ; a . registerHelper ( "if" ,
function ( a , b ) { f ( a ) && ( a = a . call ( this ) ) ; return ! b . hash . includeZero && ! a || d . isEmpty ( a ) ? b . inverse ( this ) : b . fn ( this ) } ) ; a . registerHelper ( "unless" , function ( b , k ) { return a . helpers [ "if" ] . call ( this , b , { fn : k . inverse , inverse : k . fn , hash : k . hash } ) } ) ; a . registerHelper ( "with" , function ( a , b ) { f ( a ) && ( a = a . call ( this ) ) ; if ( ! d . isEmpty ( a ) ) return b . fn ( a ) } ) ; a . registerHelper ( "log" , function ( b , k ) { var c = k . data && null != k . data . level ? parseInt ( k . data . level , 10 ) : 1 ; a . log ( c , b ) } ) } function a ( a , b ) { k . log ( a , b ) } var c = { } , d = l , e = h ; c . VERSION = "1.3.0" ; c . COMPILER _REVISION =
4 ; c . REVISION _CHANGES = { 1 : "<= 1.0.rc.2" , 2 : "== 1.0.0-rc.3" , 3 : "== 1.0.0-rc.4" , 4 : ">= 1.0.0" } ; var x = d . isArray , f = d . isFunction , r = d . toString ; c . HandlebarsEnvironment = g ; g . prototype = { constructor : g , logger : k , log : a , registerHelper : function ( a , b , k ) { if ( "[object Object]" === r . call ( a ) ) { if ( k || b ) throw new e ( "Arg not supported with multiple helpers" ) ; d . extend ( this . helpers , a ) } else k && ( b . not = k ) , this . helpers [ a ] = b } , registerPartial : function ( a , b ) { "[object Object]" === r . call ( a ) ? d . extend ( this . partials , a ) : this . partials [ a ] = b } } ; var k =
{ methodMap : { 0 : "debug" , 1 : "info" , 2 : "warn" , 3 : "error" } , DEBUG : 0 , INFO : 1 , WARN : 2 , ERROR : 3 , level : 3 , log : function ( a , b ) { if ( k . level <= a ) { var c = k . methodMap [ a ] ; "undefined" !== typeof console && console [ c ] && console [ c ] . call ( console , b ) } } } ; c . logger = k ; c . log = a ; var n = function ( a ) { var b = { } ; d . extend ( b , a ) ; return b } ; c . createFrame = n ; return c } ( v , p ) , A = function ( l , h , g ) { function b ( a , b , c ) { var d = function ( a , n ) { n = n || { } ; return b ( a , n . data || c ) } ; d . program = a ; d . depth = 0 ; return d } var a = { } , c = g . COMPILER _REVISION , d = g . REVISION _CHANGES ; a . checkRevision =
function ( a ) { var b = a && a [ 0 ] || 1 ; if ( b !== c ) { if ( b < c ) throw new h ( "Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version (" + d [ c ] + ") or downgrade your runtime to an older version (" + d [ b ] + ")." ) ; throw new h ( "Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version (" + a [ 1 ] + ")." ) ; } } ; a . template = function ( a , c ) { if ( ! c ) throw new h ( "No environment passed to template" ) ;
var d = { escapeExpression : l . escapeExpression , invokePartial : function ( a , b , n , e , d , f ) { var g = c . VM . invokePartial . apply ( this , arguments ) ; if ( null != g ) return g ; if ( c . compile ) return g = { helpers : e , partials : d , data : f } , d [ b ] = c . compile ( a , { data : void 0 !== f } , c ) , d [ b ] ( n , g ) ; throw new h ( "The partial " + b + " could not be compiled when running in runtime-only mode" ) ; } , programs : [ ] , program : function ( a , k , c ) { var e = this . programs [ a ] ; c ? e = b ( a , k , c ) : e || ( e = this . programs [ a ] = b ( a , k ) ) ; return e } , merge : function ( a , b ) { var c = a || b ; a && ( b && a !== b ) && ( c = { } ,
l . extend ( c , b ) , l . extend ( c , a ) ) ; return c } , programWithDepth : c . VM . programWithDepth , noop : c . VM . noop , compilerInfo : null } ; return function ( b , k ) { k = k || { } ; var n = k . partial ? k : c , t , m ; k . partial || ( t = k . helpers , m = k . partials ) ; n = a . call ( d , n , b , t , m , k . data ) ; k . partial || c . VM . checkRevision ( d . compilerInfo ) ; return n } } ; a . programWithDepth = function ( a , b , c ) { var d = Array . prototype . slice . call ( arguments , 3 ) , k = function ( a , k ) { k = k || { } ; return b . apply ( this , [ a , k . data || c ] . concat ( d ) ) } ; k . program = a ; k . depth = d . length ; return k } ; a . program = b ; a . invokePartial =
function ( a , b , c , d , k , n ) { d = { partial : ! 0 , helpers : d , partials : k , data : n } ; if ( void 0 === a ) throw new h ( "The partial " + b + " could not be found" ) ; if ( a instanceof Function ) return a ( c , d ) } ; a . noop = function ( ) { return "" } ; return a } ( v , p , z ) , y = function ( l , h , g , b , a ) { var c = function ( ) { var c = new l . HandlebarsEnvironment ; b . extend ( c , l ) ; c . SafeString = h ; c . Exception = g ; c . Utils = b ; c . VM = a ; c . template = function ( b ) { return a . template ( b , c ) } ; return c } , d = c ( ) ; d . create = c ; return d } ( z , y , p , v , A ) , v = function ( l ) { function h ( b ) { b = b || { } ; this . firstLine = b . first _line ;
this . firstColumn = b . first _column ; this . lastColumn = b . last _column ; this . lastLine = b . last _line } var g = { ProgramNode : function ( b , a , c , d ) { var e ; 3 === arguments . length ? ( d = c , c = null ) : 2 === arguments . length && ( d = a , a = null ) ; h . call ( this , d ) ; this . type = "program" ; this . statements = b ; this . strip = { } ; c ? ( ( e = c [ 0 ] ) ? ( e = { first _line : e . firstLine , last _line : e . lastLine , last _column : e . lastColumn , first _column : e . firstColumn } , this . inverse = new g . ProgramNode ( c , a , e ) ) : this . inverse = new g . ProgramNode ( c , a ) , this . strip . right = a . left ) : a && ( this . strip . left = a . right ) } ,
MustacheNode : function ( b , a , c , d , e ) { h . call ( this , e ) ; this . type = "mustache" ; this . strip = d ; null != c && c . charAt ? ( c = c . charAt ( 3 ) || c . charAt ( 2 ) , this . escaped = "{" !== c && "&" !== c ) : this . escaped = ! ! c ; this . sexpr = b instanceof g . SexprNode ? b : new g . SexprNode ( b , a ) ; this . sexpr . isRoot = ! 0 ; this . id = this . sexpr . id ; this . params = this . sexpr . params ; this . hash = this . sexpr . hash ; this . eligibleHelper = this . sexpr . eligibleHelper ; this . isHelper = this . sexpr . isHelper } , SexprNode : function ( b , a , c ) { h . call ( this , c ) ; this . type = "sexpr" ; this . hash = a ; c = this . id = b [ 0 ] ;
b = this . params = b . slice ( 1 ) ; this . isHelper = ( this . eligibleHelper = c . isSimple ) && ( b . length || a ) } , PartialNode : function ( b , a , c , d ) { h . call ( this , d ) ; this . type = "partial" ; this . partialName = b ; this . context = a ; this . strip = c } , BlockNode : function ( b , a , c , d , e ) { h . call ( this , e ) ; if ( b . sexpr . id . original !== d . path . original ) throw new l ( b . sexpr . id . original + " doesn't match " + d . path . original , this ) ; this . type = "block" ; this . mustache = b ; this . program = a ; this . inverse = c ; this . strip = { left : b . strip . left , right : d . strip . right } ; ( a || c ) . strip . left = b . strip . right ;
( c || a ) . strip . right = d . strip . left ; c && ! a && ( this . isInverse = ! 0 ) } , ContentNode : function ( b , a ) { h . call ( this , a ) ; this . type = "content" ; this . string = b } , HashNode : function ( b , a ) { h . call ( this , a ) ; this . type = "hash" ; this . pairs = b } , IdNode : function ( b , a ) { h . call ( this , a ) ; this . type = "ID" ; for ( var c = "" , d = [ ] , e = 0 , g = 0 , f = b . length ; g < f ; g ++ ) { var r = b [ g ] . part , c = c + ( ( b [ g ] . separator || "" ) + r ) ; if ( ".." === r || "." === r || "this" === r ) { if ( 0 < d . length ) throw new l ( "Invalid path: " + c , this ) ; ".." === r ? e ++ : this . isScoped = ! 0 } else d . push ( r ) } this . original = c ; this . parts =
d ; this . string = d . join ( "." ) ; this . depth = e ; this . isSimple = 1 === b . length && ! this . isScoped && 0 === e ; this . stringModeValue = this . string } , PartialNameNode : function ( b , a ) { h . call ( this , a ) ; this . type = "PARTIAL_NAME" ; this . name = b . original } , DataNode : function ( b , a ) { h . call ( this , a ) ; this . type = "DATA" ; this . id = b } , StringNode : function ( b , a ) { h . call ( this , a ) ; this . type = "STRING" ; this . original = this . string = this . stringModeValue = b } , IntegerNode : function ( b , a ) { h . call ( this , a ) ; this . type = "INTEGER" ; this . original = this . integer = b ; this . stringModeValue =
Number ( b ) } , BooleanNode : function ( b , a ) { h . call ( this , a ) ; this . type = "BOOLEAN" ; this . bool = b ; this . stringModeValue = "true" === b } , CommentNode : function ( b , a ) { h . call ( this , a ) ; this . type = "comment" ; this . comment = b } } ; return g } ( p ) , A = function ( l , h ) { var g = { } ; g . parser = l ; g . parse = function ( b ) { if ( b . constructor === h . ProgramNode ) return b ; l . yy = h ; return l . parse ( b ) } ; return g } ( function ( ) { return function ( ) { function l ( a , b ) { return { left : "~" === a . charAt ( 2 ) , right : "~" === b . charAt ( 0 ) || "~" === b . charAt ( 1 ) } } function h ( ) { this . yy = { } } var g = { trace : function ( ) { } ,
yy : { } , symbols _ : { error : 2 , root : 3 , statements : 4 , EOF : 5 , program : 6 , simpleInverse : 7 , statement : 8 , openInverse : 9 , closeBlock : 10 , openBlock : 11 , mustache : 12 , partial : 13 , CONTENT : 14 , COMMENT : 15 , OPEN _BLOCK : 16 , sexpr : 17 , CLOSE : 18 , OPEN _INVERSE : 19 , OPEN _ENDBLOCK : 20 , path : 21 , OPEN : 22 , OPEN _UNESCAPED : 23 , CLOSE _UNESCAPED : 24 , OPEN _PARTIAL : 25 , partialName : 26 , partial _option0 : 27 , sexpr _repetition0 : 28 , sexpr _option0 : 29 , dataName : 30 , param : 31 , STRING : 32 , INTEGER : 33 , BOOLEAN : 34 , OPEN _SEXPR : 35 , CLOSE _SEXPR : 36 , hash : 37 , hash _repetition _plus0 : 38 , hashSegment : 39 ,
ID : 40 , EQUALS : 41 , DATA : 42 , pathSegments : 43 , SEP : 44 , $accept : 0 , $end : 1 } , terminals _ : { 2 : "error" , 5 : "EOF" , 14 : "CONTENT" , 15 : "COMMENT" , 16 : "OPEN_BLOCK" , 18 : "CLOSE" , 19 : "OPEN_INVERSE" , 20 : "OPEN_ENDBLOCK" , 22 : "OPEN" , 23 : "OPEN_UNESCAPED" , 24 : "CLOSE_UNESCAPED" , 25 : "OPEN_PARTIAL" , 32 : "STRING" , 33 : "INTEGER" , 34 : "BOOLEAN" , 35 : "OPEN_SEXPR" , 36 : "CLOSE_SEXPR" , 40 : "ID" , 41 : "EQUALS" , 42 : "DATA" , 44 : "SEP" } , productions _ : [ 0 , [ 3 , 2 ] , [ 3 , 1 ] , [ 6 , 2 ] , [ 6 , 3 ] , [ 6 , 2 ] , [ 6 , 1 ] , [ 6 , 1 ] , [ 6 , 0 ] , [ 4 , 1 ] , [ 4 , 2 ] , [ 8 , 3 ] , [ 8 , 3 ] , [ 8 , 1 ] , [ 8 , 1 ] , [ 8 , 1 ] , [ 8 , 1 ] , [ 11 , 3 ] , [ 9 , 3 ] , [ 10 , 3 ] , [ 12 ,
3 ] , [ 12 , 3 ] , [ 13 , 4 ] , [ 7 , 2 ] , [ 17 , 3 ] , [ 17 , 1 ] , [ 31 , 1 ] , [ 31 , 1 ] , [ 31 , 1 ] , [ 31 , 1 ] , [ 31 , 1 ] , [ 31 , 3 ] , [ 37 , 1 ] , [ 39 , 3 ] , [ 26 , 1 ] , [ 26 , 1 ] , [ 26 , 1 ] , [ 30 , 2 ] , [ 21 , 1 ] , [ 43 , 3 ] , [ 43 , 1 ] , [ 27 , 0 ] , [ 27 , 1 ] , [ 28 , 0 ] , [ 28 , 2 ] , [ 29 , 0 ] , [ 29 , 1 ] , [ 38 , 1 ] , [ 38 , 2 ] ] , performAction : function ( a , b , d , e , g , f , h ) { a = f . length - 1 ; switch ( g ) { case 1 : return new e . ProgramNode ( f [ a - 1 ] , this . _$ ) ; case 2 : return new e . ProgramNode ( [ ] , this . _$ ) ; case 3 : this . $ = new e . ProgramNode ( [ ] , f [ a - 1 ] , f [ a ] , this . _$ ) ; break ; case 4 : this . $ = new e . ProgramNode ( f [ a - 2 ] , f [ a - 1 ] , f [ a ] , this . _$ ) ; break ; case 5 : this . $ = new e . ProgramNode ( f [ a -
1 ] , f [ a ] , [ ] , this . _$ ) ; break ; case 6 : this . $ = new e . ProgramNode ( f [ a ] , this . _$ ) ; break ; case 7 : this . $ = new e . ProgramNode ( [ ] , this . _$ ) ; break ; case 8 : this . $ = new e . ProgramNode ( [ ] , this . _$ ) ; break ; case 9 : this . $ = [ f [ a ] ] ; break ; case 10 : f [ a - 1 ] . push ( f [ a ] ) ; this . $ = f [ a - 1 ] ; break ; case 11 : this . $ = new e . BlockNode ( f [ a - 2 ] , f [ a - 1 ] . inverse , f [ a - 1 ] , f [ a ] , this . _$ ) ; break ; case 12 : this . $ = new e . BlockNode ( f [ a - 2 ] , f [ a - 1 ] , f [ a - 1 ] . inverse , f [ a ] , this . _$ ) ; break ; case 13 : this . $ = f [ a ] ; break ; case 14 : this . $ = f [ a ] ; break ; case 15 : this . $ = new e . ContentNode ( f [ a ] ,
this . _$ ) ; break ; case 16 : this . $ = new e . CommentNode ( f [ a ] , this . _$ ) ; break ; case 17 : this . $ = new e . MustacheNode ( f [ a - 1 ] , null , f [ a - 2 ] , l ( f [ a - 2 ] , f [ a ] ) , this . _$ ) ; break ; case 18 : this . $ = new e . MustacheNode ( f [ a - 1 ] , null , f [ a - 2 ] , l ( f [ a - 2 ] , f [ a ] ) , this . _$ ) ; break ; case 19 : this . $ = { path : f [ a - 1 ] , strip : l ( f [ a - 2 ] , f [ a ] ) } ; break ; case 20 : this . $ = new e . MustacheNode ( f [ a - 1 ] , null , f [ a - 2 ] , l ( f [ a - 2 ] , f [ a ] ) , this . _$ ) ; break ; case 21 : this . $ = new e . MustacheNode ( f [ a - 1 ] , null , f [ a - 2 ] , l ( f [ a - 2 ] , f [ a ] ) , this . _$ ) ; break ; case 22 : this . $ = new e . PartialNode ( f [ a - 2 ] , f [ a - 1 ] ,
l ( f [ a - 3 ] , f [ a ] ) , this . _$ ) ; break ; case 23 : this . $ = l ( f [ a - 1 ] , f [ a ] ) ; break ; case 24 : this . $ = new e . SexprNode ( [ f [ a - 2 ] ] . concat ( f [ a - 1 ] ) , f [ a ] , this . _$ ) ; break ; case 25 : this . $ = new e . SexprNode ( [ f [ a ] ] , null , this . _$ ) ; break ; case 26 : this . $ = f [ a ] ; break ; case 27 : this . $ = new e . StringNode ( f [ a ] , this . _$ ) ; break ; case 28 : this . $ = new e . IntegerNode ( f [ a ] , this . _$ ) ; break ; case 29 : this . $ = new e . BooleanNode ( f [ a ] , this . _$ ) ; break ; case 30 : this . $ = f [ a ] ; break ; case 31 : f [ a - 1 ] . isHelper = ! 0 ; this . $ = f [ a - 1 ] ; break ; case 32 : this . $ = new e . HashNode ( f [ a ] , this . _$ ) ; break ;
case 33 : this . $ = [ f [ a - 2 ] , f [ a ] ] ; break ; case 34 : this . $ = new e . PartialNameNode ( f [ a ] , this . _$ ) ; break ; case 35 : this . $ = new e . PartialNameNode ( new e . StringNode ( f [ a ] , this . _$ ) , this . _$ ) ; break ; case 36 : this . $ = new e . PartialNameNode ( new e . IntegerNode ( f [ a ] , this . _$ ) ) ; break ; case 37 : this . $ = new e . DataNode ( f [ a ] , this . _$ ) ; break ; case 38 : this . $ = new e . IdNode ( f [ a ] , this . _$ ) ; break ; case 39 : f [ a - 2 ] . push ( { part : f [ a ] , separator : f [ a - 1 ] } ) ; this . $ = f [ a - 2 ] ; break ; case 40 : this . $ = [ { part : f [ a ] } ] ; break ; case 43 : this . $ = [ ] ; break ; case 44 : f [ a - 1 ] . push ( f [ a ] ) ;
break ; case 47 : this . $ = [ f [ a ] ] ; break ; case 48 : f [ a - 1 ] . push ( f [ a ] ) } } , table : [ { 3 : 1 , 4 : 2 , 5 : [ 1 , 3 ] , 8 : 4 , 9 : 5 , 11 : 6 , 12 : 7 , 13 : 8 , 14 : [ 1 , 9 ] , 15 : [ 1 , 10 ] , 16 : [ 1 , 12 ] , 19 : [ 1 , 11 ] , 22 : [ 1 , 13 ] , 23 : [ 1 , 14 ] , 25 : [ 1 , 15 ] } , { 1 : [ 3 ] } , { 5 : [ 1 , 16 ] , 8 : 17 , 9 : 5 , 11 : 6 , 12 : 7 , 13 : 8 , 14 : [ 1 , 9 ] , 15 : [ 1 , 10 ] , 16 : [ 1 , 12 ] , 19 : [ 1 , 11 ] , 22 : [ 1 , 13 ] , 23 : [ 1 , 14 ] , 25 : [ 1 , 15 ] } , { 1 : [ 2 , 2 ] } , { 5 : [ 2 , 9 ] , 14 : [ 2 , 9 ] , 15 : [ 2 , 9 ] , 16 : [ 2 , 9 ] , 19 : [ 2 , 9 ] , 20 : [ 2 , 9 ] , 22 : [ 2 , 9 ] , 23 : [ 2 , 9 ] , 25 : [ 2 , 9 ] } , { 4 : 20 , 6 : 18 , 7 : 19 , 8 : 4 , 9 : 5 , 11 : 6 , 12 : 7 , 13 : 8 , 14 : [ 1 , 9 ] , 15 : [ 1 , 10 ] , 16 : [ 1 , 12 ] , 19 : [ 1 , 21 ] , 20 : [ 2 , 8 ] , 22 : [ 1 , 13 ] , 23 : [ 1 , 14 ] , 25 : [ 1 , 15 ] } ,
{ 4 : 20 , 6 : 22 , 7 : 19 , 8 : 4 , 9 : 5 , 11 : 6 , 12 : 7 , 13 : 8 , 14 : [ 1 , 9 ] , 15 : [ 1 , 10 ] , 16 : [ 1 , 12 ] , 19 : [ 1 , 21 ] , 20 : [ 2 , 8 ] , 22 : [ 1 , 13 ] , 23 : [ 1 , 14 ] , 25 : [ 1 , 15 ] } , { 5 : [ 2 , 13 ] , 14 : [ 2 , 13 ] , 15 : [ 2 , 13 ] , 16 : [ 2 , 13 ] , 19 : [ 2 , 13 ] , 20 : [ 2 , 13 ] , 22 : [ 2 , 13 ] , 23 : [ 2 , 13 ] , 25 : [ 2 , 13 ] } , { 5 : [ 2 , 14 ] , 14 : [ 2 , 14 ] , 15 : [ 2 , 14 ] , 16 : [ 2 , 14 ] , 19 : [ 2 , 14 ] , 20 : [ 2 , 14 ] , 22 : [ 2 , 14 ] , 23 : [ 2 , 14 ] , 25 : [ 2 , 14 ] } , { 5 : [ 2 , 15 ] , 14 : [ 2 , 15 ] , 15 : [ 2 , 15 ] , 16 : [ 2 , 15 ] , 19 : [ 2 , 15 ] , 20 : [ 2 , 15 ] , 22 : [ 2 , 15 ] , 23 : [ 2 , 15 ] , 25 : [ 2 , 15 ] } , { 5 : [ 2 , 16 ] , 14 : [ 2 , 16 ] , 15 : [ 2 , 16 ] , 16 : [ 2 , 16 ] , 19 : [ 2 , 16 ] , 20 : [ 2 , 16 ] , 22 : [ 2 , 16 ] , 23 : [ 2 , 16 ] , 25 : [ 2 , 16 ] } , { 17 : 23 , 21 : 24 , 30 : 25 ,
40 : [ 1 , 28 ] , 42 : [ 1 , 27 ] , 43 : 26 } , { 17 : 29 , 21 : 24 , 30 : 25 , 40 : [ 1 , 28 ] , 42 : [ 1 , 27 ] , 43 : 26 } , { 17 : 30 , 21 : 24 , 30 : 25 , 40 : [ 1 , 28 ] , 42 : [ 1 , 27 ] , 43 : 26 } , { 17 : 31 , 21 : 24 , 30 : 25 , 40 : [ 1 , 28 ] , 42 : [ 1 , 27 ] , 43 : 26 } , { 21 : 33 , 26 : 32 , 32 : [ 1 , 34 ] , 33 : [ 1 , 35 ] , 40 : [ 1 , 28 ] , 43 : 26 } , { 1 : [ 2 , 1 ] } , { 5 : [ 2 , 10 ] , 14 : [ 2 , 10 ] , 15 : [ 2 , 10 ] , 16 : [ 2 , 10 ] , 19 : [ 2 , 10 ] , 20 : [ 2 , 10 ] , 22 : [ 2 , 10 ] , 23 : [ 2 , 10 ] , 25 : [ 2 , 10 ] } , { 10 : 36 , 20 : [ 1 , 37 ] } , { 4 : 38 , 8 : 4 , 9 : 5 , 11 : 6 , 12 : 7 , 13 : 8 , 14 : [ 1 , 9 ] , 15 : [ 1 , 10 ] , 16 : [ 1 , 12 ] , 19 : [ 1 , 11 ] , 20 : [ 2 , 7 ] , 22 : [ 1 , 13 ] , 23 : [ 1 , 14 ] , 25 : [ 1 , 15 ] } , { 7 : 39 , 8 : 17 , 9 : 5 , 11 : 6 , 12 : 7 , 13 : 8 , 14 : [ 1 , 9 ] , 15 : [ 1 , 10 ] , 16 : [ 1 , 12 ] ,
19 : [ 1 , 21 ] , 20 : [ 2 , 6 ] , 22 : [ 1 , 13 ] , 23 : [ 1 , 14 ] , 25 : [ 1 , 15 ] } , { 17 : 23 , 18 : [ 1 , 40 ] , 21 : 24 , 30 : 25 , 40 : [ 1 , 28 ] , 42 : [ 1 , 27 ] , 43 : 26 } , { 10 : 41 , 20 : [ 1 , 37 ] } , { 18 : [ 1 , 42 ] } , { 18 : [ 2 , 43 ] , 24 : [ 2 , 43 ] , 28 : 43 , 32 : [ 2 , 43 ] , 33 : [ 2 , 43 ] , 34 : [ 2 , 43 ] , 35 : [ 2 , 43 ] , 36 : [ 2 , 43 ] , 40 : [ 2 , 43 ] , 42 : [ 2 , 43 ] } , { 18 : [ 2 , 25 ] , 24 : [ 2 , 25 ] , 36 : [ 2 , 25 ] } , { 18 : [ 2 , 38 ] , 24 : [ 2 , 38 ] , 32 : [ 2 , 38 ] , 33 : [ 2 , 38 ] , 34 : [ 2 , 38 ] , 35 : [ 2 , 38 ] , 36 : [ 2 , 38 ] , 40 : [ 2 , 38 ] , 42 : [ 2 , 38 ] , 44 : [ 1 , 44 ] } , { 21 : 45 , 40 : [ 1 , 28 ] , 43 : 26 } , { 18 : [ 2 , 40 ] , 24 : [ 2 , 40 ] , 32 : [ 2 , 40 ] , 33 : [ 2 , 40 ] , 34 : [ 2 , 40 ] , 35 : [ 2 , 40 ] , 36 : [ 2 , 40 ] , 40 : [ 2 , 40 ] , 42 : [ 2 , 40 ] , 44 : [ 2 , 40 ] } , { 18 : [ 1 ,
46 ] } , { 18 : [ 1 , 47 ] } , { 24 : [ 1 , 48 ] } , { 18 : [ 2 , 41 ] , 21 : 50 , 27 : 49 , 40 : [ 1 , 28 ] , 43 : 26 } , { 18 : [ 2 , 34 ] , 40 : [ 2 , 34 ] } , { 18 : [ 2 , 35 ] , 40 : [ 2 , 35 ] } , { 18 : [ 2 , 36 ] , 40 : [ 2 , 36 ] } , { 5 : [ 2 , 11 ] , 14 : [ 2 , 11 ] , 15 : [ 2 , 11 ] , 16 : [ 2 , 11 ] , 19 : [ 2 , 11 ] , 20 : [ 2 , 11 ] , 22 : [ 2 , 11 ] , 23 : [ 2 , 11 ] , 25 : [ 2 , 11 ] } , { 21 : 51 , 40 : [ 1 , 28 ] , 43 : 26 } , { 8 : 17 , 9 : 5 , 11 : 6 , 12 : 7 , 13 : 8 , 14 : [ 1 , 9 ] , 15 : [ 1 , 10 ] , 16 : [ 1 , 12 ] , 19 : [ 1 , 11 ] , 20 : [ 2 , 3 ] , 22 : [ 1 , 13 ] , 23 : [ 1 , 14 ] , 25 : [ 1 , 15 ] } , { 4 : 52 , 8 : 4 , 9 : 5 , 11 : 6 , 12 : 7 , 13 : 8 , 14 : [ 1 , 9 ] , 15 : [ 1 , 10 ] , 16 : [ 1 , 12 ] , 19 : [ 1 , 11 ] , 20 : [ 2 , 5 ] , 22 : [ 1 , 13 ] , 23 : [ 1 , 14 ] , 25 : [ 1 , 15 ] } , { 14 : [ 2 , 23 ] , 15 : [ 2 , 23 ] , 16 : [ 2 , 23 ] , 19 : [ 2 , 23 ] ,
20 : [ 2 , 23 ] , 22 : [ 2 , 23 ] , 23 : [ 2 , 23 ] , 25 : [ 2 , 23 ] } , { 5 : [ 2 , 12 ] , 14 : [ 2 , 12 ] , 15 : [ 2 , 12 ] , 16 : [ 2 , 12 ] , 19 : [ 2 , 12 ] , 20 : [ 2 , 12 ] , 22 : [ 2 , 12 ] , 23 : [ 2 , 12 ] , 25 : [ 2 , 12 ] } , { 14 : [ 2 , 18 ] , 15 : [ 2 , 18 ] , 16 : [ 2 , 18 ] , 19 : [ 2 , 18 ] , 20 : [ 2 , 18 ] , 22 : [ 2 , 18 ] , 23 : [ 2 , 18 ] , 25 : [ 2 , 18 ] } , { 18 : [ 2 , 45 ] , 21 : 56 , 24 : [ 2 , 45 ] , 29 : 53 , 30 : 60 , 31 : 54 , 32 : [ 1 , 57 ] , 33 : [ 1 , 58 ] , 34 : [ 1 , 59 ] , 35 : [ 1 , 61 ] , 36 : [ 2 , 45 ] , 37 : 55 , 38 : 62 , 39 : 63 , 40 : [ 1 , 64 ] , 42 : [ 1 , 27 ] , 43 : 26 } , { 40 : [ 1 , 65 ] } , { 18 : [ 2 , 37 ] , 24 : [ 2 , 37 ] , 32 : [ 2 , 37 ] , 33 : [ 2 , 37 ] , 34 : [ 2 , 37 ] , 35 : [ 2 , 37 ] , 36 : [ 2 , 37 ] , 40 : [ 2 , 37 ] , 42 : [ 2 , 37 ] } , { 14 : [ 2 , 17 ] , 15 : [ 2 , 17 ] , 16 : [ 2 , 17 ] , 19 : [ 2 , 17 ] , 20 : [ 2 ,
17 ] , 22 : [ 2 , 17 ] , 23 : [ 2 , 17 ] , 25 : [ 2 , 17 ] } , { 5 : [ 2 , 20 ] , 14 : [ 2 , 20 ] , 15 : [ 2 , 20 ] , 16 : [ 2 , 20 ] , 19 : [ 2 , 20 ] , 20 : [ 2 , 20 ] , 22 : [ 2 , 20 ] , 23 : [ 2 , 20 ] , 25 : [ 2 , 20 ] } , { 5 : [ 2 , 21 ] , 14 : [ 2 , 21 ] , 15 : [ 2 , 21 ] , 16 : [ 2 , 21 ] , 19 : [ 2 , 21 ] , 20 : [ 2 , 21 ] , 22 : [ 2 , 21 ] , 23 : [ 2 , 21 ] , 25 : [ 2 , 21 ] } , { 18 : [ 1 , 66 ] } , { 18 : [ 2 , 42 ] } , { 18 : [ 1 , 67 ] } , { 8 : 17 , 9 : 5 , 11 : 6 , 12 : 7 , 13 : 8 , 14 : [ 1 , 9 ] , 15 : [ 1 , 10 ] , 16 : [ 1 , 12 ] , 19 : [ 1 , 11 ] , 20 : [ 2 , 4 ] , 22 : [ 1 , 13 ] , 23 : [ 1 , 14 ] , 25 : [ 1 , 15 ] } , { 18 : [ 2 , 24 ] , 24 : [ 2 , 24 ] , 36 : [ 2 , 24 ] } , { 18 : [ 2 , 44 ] , 24 : [ 2 , 44 ] , 32 : [ 2 , 44 ] , 33 : [ 2 , 44 ] , 34 : [ 2 , 44 ] , 35 : [ 2 , 44 ] , 36 : [ 2 , 44 ] , 40 : [ 2 , 44 ] , 42 : [ 2 , 44 ] } , { 18 : [ 2 , 46 ] , 24 : [ 2 , 46 ] ,
36 : [ 2 , 46 ] } , { 18 : [ 2 , 26 ] , 24 : [ 2 , 26 ] , 32 : [ 2 , 26 ] , 33 : [ 2 , 26 ] , 34 : [ 2 , 26 ] , 35 : [ 2 , 26 ] , 36 : [ 2 , 26 ] , 40 : [ 2 , 26 ] , 42 : [ 2 , 26 ] } , { 18 : [ 2 , 27 ] , 24 : [ 2 , 27 ] , 32 : [ 2 , 27 ] , 33 : [ 2 , 27 ] , 34 : [ 2 , 27 ] , 35 : [ 2 , 27 ] , 36 : [ 2 , 27 ] , 40 : [ 2 , 27 ] , 42 : [ 2 , 27 ] } , { 18 : [ 2 , 28 ] , 24 : [ 2 , 28 ] , 32 : [ 2 , 28 ] , 33 : [ 2 , 28 ] , 34 : [ 2 , 28 ] , 35 : [ 2 , 28 ] , 36 : [ 2 , 28 ] , 40 : [ 2 , 28 ] , 42 : [ 2 , 28 ] } , { 18 : [ 2 , 29 ] , 24 : [ 2 , 29 ] , 32 : [ 2 , 29 ] , 33 : [ 2 , 29 ] , 34 : [ 2 , 29 ] , 35 : [ 2 , 29 ] , 36 : [ 2 , 29 ] , 40 : [ 2 , 29 ] , 42 : [ 2 , 29 ] } , { 18 : [ 2 , 30 ] , 24 : [ 2 , 30 ] , 32 : [ 2 , 30 ] , 33 : [ 2 , 30 ] , 34 : [ 2 , 30 ] , 35 : [ 2 , 30 ] , 36 : [ 2 , 30 ] , 40 : [ 2 , 30 ] , 42 : [ 2 , 30 ] } , { 17 : 68 , 21 : 24 , 30 : 25 , 40 : [ 1 , 28 ] , 42 : [ 1 ,
27 ] , 43 : 26 } , { 18 : [ 2 , 32 ] , 24 : [ 2 , 32 ] , 36 : [ 2 , 32 ] , 39 : 69 , 40 : [ 1 , 70 ] } , { 18 : [ 2 , 47 ] , 24 : [ 2 , 47 ] , 36 : [ 2 , 47 ] , 40 : [ 2 , 47 ] } , { 18 : [ 2 , 40 ] , 24 : [ 2 , 40 ] , 32 : [ 2 , 40 ] , 33 : [ 2 , 40 ] , 34 : [ 2 , 40 ] , 35 : [ 2 , 40 ] , 36 : [ 2 , 40 ] , 40 : [ 2 , 40 ] , 41 : [ 1 , 71 ] , 42 : [ 2 , 40 ] , 44 : [ 2 , 40 ] } , { 18 : [ 2 , 39 ] , 24 : [ 2 , 39 ] , 32 : [ 2 , 39 ] , 33 : [ 2 , 39 ] , 34 : [ 2 , 39 ] , 35 : [ 2 , 39 ] , 36 : [ 2 , 39 ] , 40 : [ 2 , 39 ] , 42 : [ 2 , 39 ] , 44 : [ 2 , 39 ] } , { 5 : [ 2 , 22 ] , 14 : [ 2 , 22 ] , 15 : [ 2 , 22 ] , 16 : [ 2 , 22 ] , 19 : [ 2 , 22 ] , 20 : [ 2 , 22 ] , 22 : [ 2 , 22 ] , 23 : [ 2 , 22 ] , 25 : [ 2 , 22 ] } , { 5 : [ 2 , 19 ] , 14 : [ 2 , 19 ] , 15 : [ 2 , 19 ] , 16 : [ 2 , 19 ] , 19 : [ 2 , 19 ] , 20 : [ 2 , 19 ] , 22 : [ 2 , 19 ] , 23 : [ 2 , 19 ] , 25 : [ 2 , 19 ] } , { 36 : [ 1 ,
72 ] } , { 18 : [ 2 , 48 ] , 24 : [ 2 , 48 ] , 36 : [ 2 , 48 ] , 40 : [ 2 , 48 ] } , { 41 : [ 1 , 71 ] } , { 21 : 56 , 30 : 60 , 31 : 73 , 32 : [ 1 , 57 ] , 33 : [ 1 , 58 ] , 34 : [ 1 , 59 ] , 35 : [ 1 , 61 ] , 40 : [ 1 , 28 ] , 42 : [ 1 , 27 ] , 43 : 26 } , { 18 : [ 2 , 31 ] , 24 : [ 2 , 31 ] , 32 : [ 2 , 31 ] , 33 : [ 2 , 31 ] , 34 : [ 2 , 31 ] , 35 : [ 2 , 31 ] , 36 : [ 2 , 31 ] , 40 : [ 2 , 31 ] , 42 : [ 2 , 31 ] } , { 18 : [ 2 , 33 ] , 24 : [ 2 , 33 ] , 36 : [ 2 , 33 ] , 40 : [ 2 , 33 ] } ] , defaultActions : { 3 : [ 2 , 2 ] , 16 : [ 2 , 1 ] , 50 : [ 2 , 42 ] } , parseError : function ( a , b ) { throw Error ( a ) ; } , parse : function ( a ) { var b = [ 0 ] , d = [ null ] , e = [ ] , g = this . table , f = "" , h = 0 , k = 0 , n = 0 ; this . lexer . setInput ( a ) ; this . lexer . yy = this . yy ; this . yy . lexer = this . lexer ;
this . yy . parser = this ; "undefined" == typeof this . lexer . yylloc && ( this . lexer . yylloc = { } ) ; a = this . lexer . yylloc ; e . push ( a ) ; var t = this . lexer . options && this . lexer . options . ranges ; "function" === typeof this . yy . parseError && ( this . parseError = this . yy . parseError ) ; for ( var m , l , u , q , w = { } , p , s ; ; ) { u = b [ b . length - 1 ] ; if ( this . defaultActions [ u ] ) q = this . defaultActions [ u ] ; else { if ( null === m || "undefined" == typeof m ) m = void 0 , m = this . lexer . lex ( ) || 1 , "number" !== typeof m && ( m = this . symbols _ [ m ] || m ) ; q = g [ u ] && g [ u ] [ m ] } if ( "undefined" === typeof q || ! q . length ||
! q [ 0 ] ) { var v = "" ; if ( ! n ) { s = [ ] ; for ( p in g [ u ] ) this . terminals _ [ p ] && 2 < p && s . push ( "'" + this . terminals _ [ p ] + "'" ) ; v = this . lexer . showPosition ? "Parse error on line " + ( h + 1 ) + ":\n" + this . lexer . showPosition ( ) + "\nExpecting " + s . join ( ", " ) + ", got '" + ( this . terminals _ [ m ] || m ) + "'" : "Parse error on line " + ( h + 1 ) + ": Unexpected " + ( 1 == m ? "end of input" : "'" + ( this . terminals _ [ m ] || m ) + "'" ) ; this . parseError ( v , { text : this . lexer . match , token : this . terminals _ [ m ] || m , line : this . lexer . yylineno , loc : a , expected : s } ) } } if ( q [ 0 ] instanceof Array && 1 < q . length ) throw Error ( "Parse Error: multiple actions possible at state: " +
u + ", token: " + m ) ; switch ( q [ 0 ] ) { case 1 : b . push ( m ) ; d . push ( this . lexer . yytext ) ; e . push ( this . lexer . yylloc ) ; b . push ( q [ 1 ] ) ; m = null ; l ? ( m = l , l = null ) : ( k = this . lexer . yyleng , f = this . lexer . yytext , h = this . lexer . yylineno , a = this . lexer . yylloc , 0 < n && n -- ) ; break ; case 2 : s = this . productions _ [ q [ 1 ] ] [ 1 ] ; w . $ = d [ d . length - s ] ; w . _$ = { first _line : e [ e . length - ( s || 1 ) ] . first _line , last _line : e [ e . length - 1 ] . last _line , first _column : e [ e . length - ( s || 1 ) ] . first _column , last _column : e [ e . length - 1 ] . last _column } ; t && ( w . _$ . range = [ e [ e . length - ( s || 1 ) ] . range [ 0 ] , e [ e . length -
1 ] . range [ 1 ] ] ) ; u = this . performAction . call ( w , f , k , h , this . yy , q [ 1 ] , d , e ) ; if ( "undefined" !== typeof u ) return u ; s && ( b = b . slice ( 0 , - 2 * s ) , d = d . slice ( 0 , - 1 * s ) , e = e . slice ( 0 , - 1 * s ) ) ; b . push ( this . productions _ [ q [ 1 ] ] [ 0 ] ) ; d . push ( w . $ ) ; e . push ( w . _$ ) ; q = g [ b [ b . length - 2 ] ] [ b [ b . length - 1 ] ] ; b . push ( q ) ; break ; case 3 : return ! 0 } } return ! 0 } } , b = function ( ) { return { EOF : 1 , parseError : function ( a , b ) { if ( this . yy . parser ) this . yy . parser . parseError ( a , b ) ; else throw Error ( a ) ; } , setInput : function ( a ) { this . _input = a ; this . _more = this . _less = this . done = ! 1 ; this . yylineno =
this . yyleng = 0 ; this . yytext = this . matched = this . match = "" ; this . conditionStack = [ "INITIAL" ] ; this . yylloc = { first _line : 1 , first _column : 0 , last _line : 1 , last _column : 0 } ; this . options . ranges && ( this . yylloc . range = [ 0 , 0 ] ) ; this . offset = 0 ; return this } , input : function ( ) { var a = this . _input [ 0 ] ; this . yytext += a ; this . yyleng ++ ; this . offset ++ ; this . match += a ; this . matched += a ; a . match ( /(?:\r\n?|\n).*/g ) ? ( this . yylineno ++ , this . yylloc . last _line ++ ) : this . yylloc . last _column ++ ; this . options . ranges && this . yylloc . range [ 1 ] ++ ; this . _input = this . _input . slice ( 1 ) ;
return a } , unput : function ( a ) { var b = a . length , d = a . split ( /(?:\r\n?|\n)/g ) ; this . _input = a + this . _input ; this . yytext = this . yytext . substr ( 0 , this . yytext . length - b - 1 ) ; this . offset -= b ; a = this . match . split ( /(?:\r\n?|\n)/g ) ; this . match = this . match . substr ( 0 , this . match . length - 1 ) ; this . matched = this . matched . substr ( 0 , this . matched . length - 1 ) ; d . length - 1 && ( this . yylineno -= d . length - 1 ) ; var e = this . yylloc . range ; this . yylloc = { first _line : this . yylloc . first _line , last _line : this . yylineno + 1 , first _column : this . yylloc . first _column , last _column : d ?
( d . length === a . length ? this . yylloc . first _column : 0 ) + a [ a . length - d . length ] . length - d [ 0 ] . length : this . yylloc . first _column - b } ; this . options . ranges && ( this . yylloc . range = [ e [ 0 ] , e [ 0 ] + this . yyleng - b ] ) ; return this } , more : function ( ) { this . _more = ! 0 ; return this } , less : function ( a ) { this . unput ( this . match . slice ( a ) ) } , pastInput : function ( ) { var a = this . matched . substr ( 0 , this . matched . length - this . match . length ) ; return ( 20 < a . length ? "..." : "" ) + a . substr ( - 20 ) . replace ( /\n/g , "" ) } , upcomingInput : function ( ) { var a = this . match ; 20 > a . length && ( a += this . _input . substr ( 0 ,
20 - a . length ) ) ; return ( a . substr ( 0 , 20 ) + ( 20 < a . length ? "..." : "" ) ) . replace ( /\n/g , "" ) } , showPosition : function ( ) { var a = this . pastInput ( ) , b = Array ( a . length + 1 ) . join ( "-" ) ; return a + this . upcomingInput ( ) + "\n" + b + "^" } , next : function ( ) { if ( this . done ) return this . EOF ; this . _input || ( this . done = ! 0 ) ; var a , b , d ; this . _more || ( this . match = this . yytext = "" ) ; for ( var e = this . _currentRules ( ) , g = 0 ; g < e . length ; g ++ ) if ( ( b = this . _input . match ( this . rules [ e [ g ] ] ) ) && ( ! a || b [ 0 ] . length > a [ 0 ] . length ) ) if ( a = b , d = g , ! this . options . flex ) break ; if ( a ) { if ( b = a [ 0 ] . match ( /(?:\r\n?|\n).*/g ) ) this . yylineno +=
b . length ; this . yylloc = { first _line : this . yylloc . last _line , last _line : this . yylineno + 1 , first _column : this . yylloc . last _column , last _column : b ? b [ b . length - 1 ] . length - b [ b . length - 1 ] . match ( /\r?\n?/ ) [ 0 ] . length : this . yylloc . last _column + a [ 0 ] . length } ; this . yytext += a [ 0 ] ; this . match += a [ 0 ] ; this . matches = a ; this . yyleng = this . yytext . length ; this . options . ranges && ( this . yylloc . range = [ this . offset , this . offset += this . yyleng ] ) ; this . _more = ! 1 ; this . _input = this . _input . slice ( a [ 0 ] . length ) ; this . matched += a [ 0 ] ; a = this . performAction . call ( this , this . yy ,
this , e [ d ] , this . conditionStack [ this . conditionStack . length - 1 ] ) ; this . done && this . _input && ( this . done = ! 1 ) ; if ( a ) return a } else return "" === this . _input ? this . EOF : this . parseError ( "Lexical error on line " + ( this . yylineno + 1 ) + ". Unrecognized text.\n" + this . showPosition ( ) , { text : "" , token : null , line : this . yylineno } ) } , lex : function ( ) { var a = this . next ( ) ; return "undefined" !== typeof a ? a : this . lex ( ) } , begin : function ( a ) { this . conditionStack . push ( a ) } , popState : function ( ) { return this . conditionStack . pop ( ) } , _currentRules : function ( ) { return this . conditions [ this . conditionStack [ this . conditionStack . length -
1 ] ] . rules } , topState : function ( ) { return this . conditionStack [ this . conditionStack . length - 2 ] } , pushState : function ( a ) { this . begin ( a ) } , options : { } , performAction : function ( a , b , d , e ) { function g ( a , d ) { return b . yytext = b . yytext . substr ( a , b . yyleng - d ) } switch ( d ) { case 0 : "\\\\" === b . yytext . slice ( - 2 ) ? ( g ( 0 , 1 ) , this . begin ( "mu" ) ) : "\\" === b . yytext . slice ( - 1 ) ? ( g ( 0 , 1 ) , this . begin ( "emu" ) ) : this . begin ( "mu" ) ; if ( b . yytext ) return 14 ; break ; case 1 : return 14 ; case 2 : return this . popState ( ) , 14 ; case 3 : return g ( 0 , 4 ) , this . popState ( ) , 15 ; case 4 : return 35 ;
case 5 : return 36 ; case 6 : return 25 ; case 7 : return 16 ; case 8 : return 20 ; case 9 : return 19 ; case 10 : return 19 ; case 11 : return 23 ; case 12 : return 22 ; case 13 : this . popState ( ) ; this . begin ( "com" ) ; break ; case 14 : return g ( 3 , 5 ) , this . popState ( ) , 15 ; case 15 : return 22 ; case 16 : return 41 ; case 17 : return 40 ; case 18 : return 40 ; case 19 : return 44 ; case 21 : return this . popState ( ) , 24 ; case 22 : return this . popState ( ) , 18 ; case 23 : return b . yytext = g ( 1 , 2 ) . replace ( /\\"/g , '"' ) , 32 ; case 24 : return b . yytext = g ( 1 , 2 ) . replace ( /\\'/g , "'" ) , 32 ; case 25 : return 42 ;
case 26 : return 34 ; case 27 : return 34 ; case 28 : return 33 ; case 29 : return 40 ; case 30 : return b . yytext = g ( 1 , 2 ) , 40 ; case 31 : return "INVALID" ; case 32 : return 5 } } , rules : [ /^(?:[^\x00]*?(?=(\{\{)))/ , /^(?:[^\x00]+)/ , /^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/ , /^(?:[\s\S]*?--\}\})/ , /^(?:\()/ , /^(?:\))/ , /^(?:\{\{(~)?>)/ , /^(?:\{\{(~)?#)/ , /^(?:\{\{(~)?\/)/ , /^(?:\{\{(~)?\^)/ , /^(?:\{\{(~)?\s*else\b)/ , /^(?:\{\{(~)?\{)/ , /^(?:\{\{(~)?&)/ , /^(?:\{\{!--)/ , /^(?:\{\{![\s\S]*?\}\})/ , /^(?:\{\{(~)?)/ , /^(?:=)/ , /^(?:\.\.)/ , /^(?:\.(?=([=~}\s\/.)])))/ ,
/^(?:[\/.])/ , /^(?:\s+)/ , /^(?:\}(~)?\}\})/ , /^(?:(~)?\}\})/ , /^(?:"(\\["]|[^"])*")/ , /^(?:'(\\[']|[^'])*')/ , /^(?:@)/ , /^(?:true(?=([~}\s)])))/ , /^(?:false(?=([~}\s)])))/ , /^(?:-?[0-9]+(?=([~}\s)])))/ , /^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)]))))/ , /^(?:\[[^\]]*\])/ , /^(?:.)/ , /^(?:$)/ ] , conditions : { mu : { rules : [ 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 ] , inclusive : ! 1 } , emu : { rules : [ 2 ] , inclusive : ! 1 } , com : { rules : [ 3 ] , inclusive : ! 1 } , INITIAL : { rules : [ 0 , 1 , 32 ] , inclusive : ! 0 } } } } ( ) ;
g . lexer = b ; h . prototype = g ; g . Parser = h ; return new h } ( ) } ( ) , v ) , B = function ( l ) { function h ( ) { } var g = { } ; g . Compiler = h ; h . prototype = { compiler : h , disassemble : function ( ) { for ( var b = this . opcodes , a , c = [ ] , d , e , g = 0 , f = b . length ; g < f ; g ++ ) if ( a = b [ g ] , "DECLARE" === a . opcode ) c . push ( "DECLARE " + a . name + "=" + a . value ) ; else { d = [ ] ; for ( var h = 0 ; h < a . args . length ; h ++ ) e = a . args [ h ] , "string" === typeof e && ( e = '"' + e . replace ( "\n" , "\\n" ) + '"' ) , d . push ( e ) ; c . push ( a . opcode + " " + d . join ( " " ) ) } return c . join ( "\n" ) } , equals : function ( b ) { var a = this . opcodes . length ; if ( b . opcodes . length !==
a ) return ! 1 ; for ( var c = 0 ; c < a ; c ++ ) { var d = this . opcodes [ c ] , e = b . opcodes [ c ] ; if ( d . opcode !== e . opcode || d . args . length !== e . args . length ) return ! 1 ; for ( var g = 0 ; g < d . args . length ; g ++ ) if ( d . args [ g ] !== e . args [ g ] ) return ! 1 } a = this . children . length ; if ( b . children . length !== a ) return ! 1 ; for ( c = 0 ; c < a ; c ++ ) if ( ! this . children [ c ] . equals ( b . children [ c ] ) ) return ! 1 ; return ! 0 } , guid : 0 , compile : function ( b , a ) { this . opcodes = [ ] ; this . children = [ ] ; this . depths = { list : [ ] } ; this . options = a ; var c = this . options . knownHelpers ; this . options . knownHelpers = { helperMissing : ! 0 ,
blockHelperMissing : ! 0 , each : ! 0 , "if" : ! 0 , unless : ! 0 , "with" : ! 0 , log : ! 0 } ; if ( c ) for ( var d in c ) this . options . knownHelpers [ d ] = c [ d ] ; return this . accept ( b ) } , accept : function ( b ) { var a = b . strip || { } ; a . left && this . opcode ( "strip" ) ; b = this [ b . type ] ( b ) ; a . right && this . opcode ( "strip" ) ; return b } , program : function ( b ) { b = b . statements ; for ( var a = 0 , c = b . length ; a < c ; a ++ ) this . accept ( b [ a ] ) ; this . isSimple = 1 === c ; this . depths . list = this . depths . list . sort ( function ( a , b ) { return a - b } ) ; return this } , compileProgram : function ( b ) { b = ( new this . compiler ) . compile ( b ,
this . options ) ; var a = this . guid ++ , c ; this . usePartial = this . usePartial || b . usePartial ; this . children [ a ] = b ; for ( var d = 0 , e = b . depths . list . length ; d < e ; d ++ ) c = b . depths . list [ d ] , 2 > c || this . addDepth ( c - 1 ) ; return a } , block : function ( b ) { var a = b . mustache , c = b . program ; b = b . inverse ; c && ( c = this . compileProgram ( c ) ) ; b && ( b = this . compileProgram ( b ) ) ; var a = a . sexpr , d = this . classifySexpr ( a ) ; "helper" === d ? this . helperSexpr ( a , c , b ) : "simple" === d ? ( this . simpleSexpr ( a ) , this . opcode ( "pushProgram" , c ) , this . opcode ( "pushProgram" , b ) , this . opcode ( "emptyHash" ) ,
this . opcode ( "blockValue" ) ) : ( this . ambiguousSexpr ( a , c , b ) , this . opcode ( "pushProgram" , c ) , this . opcode ( "pushProgram" , b ) , this . opcode ( "emptyHash" ) , this . opcode ( "ambiguousBlockValue" ) ) ; this . opcode ( "append" ) } , hash : function ( b ) { b = b . pairs ; var a , c ; this . opcode ( "pushHash" ) ; for ( var d = 0 , e = b . length ; d < e ; d ++ ) a = b [ d ] , c = a [ 1 ] , this . options . stringParams ? ( c . depth && this . addDepth ( c . depth ) , this . opcode ( "getContext" , c . depth || 0 ) , this . opcode ( "pushStringParam" , c . stringModeValue , c . type ) , "sexpr" === c . type && this . sexpr ( c ) ) : this . accept ( c ) ,
this . opcode ( "assignToHash" , a [ 0 ] ) ; this . opcode ( "popHash" ) } , partial : function ( b ) { var a = b . partialName ; this . usePartial = ! 0 ; b . context ? this . ID ( b . context ) : this . opcode ( "push" , "depth0" ) ; this . opcode ( "invokePartial" , a . name ) ; this . opcode ( "append" ) } , content : function ( b ) { this . opcode ( "appendContent" , b . string ) } , mustache : function ( b ) { this . sexpr ( b . sexpr ) ; b . escaped && ! this . options . noEscape ? this . opcode ( "appendEscaped" ) : this . opcode ( "append" ) } , ambiguousSexpr : function ( b , a , c ) { b = b . id ; var d = b . parts [ 0 ] , e = null != a || null != c ; this . opcode ( "getContext" ,
b . depth ) ; this . opcode ( "pushProgram" , a ) ; this . opcode ( "pushProgram" , c ) ; this . opcode ( "invokeAmbiguous" , d , e ) } , simpleSexpr : function ( b ) { b = b . id ; "DATA" === b . type ? this . DATA ( b ) : b . parts . length ? this . ID ( b ) : ( this . addDepth ( b . depth ) , this . opcode ( "getContext" , b . depth ) , this . opcode ( "pushContext" ) ) ; this . opcode ( "resolvePossibleLambda" ) } , helperSexpr : function ( b , a , c ) { a = this . setupFullMustacheParams ( b , a , c ) ; c = b . id . parts [ 0 ] ; if ( this . options . knownHelpers [ c ] ) this . opcode ( "invokeKnownHelper" , a . length , c ) ; else { if ( this . options . knownHelpersOnly ) throw new l ( "You specified knownHelpersOnly, but used the unknown helper " +
c , b ) ; this . opcode ( "invokeHelper" , a . length , c , b . isRoot ) } } , sexpr : function ( b ) { var a = this . classifySexpr ( b ) ; "simple" === a ? this . simpleSexpr ( b ) : "helper" === a ? this . helperSexpr ( b ) : this . ambiguousSexpr ( b ) } , ID : function ( b ) { this . addDepth ( b . depth ) ; this . opcode ( "getContext" , b . depth ) ; b . parts [ 0 ] ? this . opcode ( "lookupOnContext" , b . parts [ 0 ] ) : this . opcode ( "pushContext" ) ; for ( var a = 1 , c = b . parts . length ; a < c ; a ++ ) this . opcode ( "lookup" , b . parts [ a ] ) } , DATA : function ( b ) { this . options . data = ! 0 ; if ( b . id . isScoped || b . id . depth ) throw new l ( "Scoped data references are not supported: " +
b . original , b ) ; this . opcode ( "lookupData" ) ; b = b . id . parts ; for ( var a = 0 , c = b . length ; a < c ; a ++ ) this . opcode ( "lookup" , b [ a ] ) } , STRING : function ( b ) { this . opcode ( "pushString" , b . string ) } , INTEGER : function ( b ) { this . opcode ( "pushLiteral" , b . integer ) } , BOOLEAN : function ( b ) { this . opcode ( "pushLiteral" , b . bool ) } , comment : function ( ) { } , opcode : function ( b ) { this . opcodes . push ( { opcode : b , args : [ ] . slice . call ( arguments , 1 ) } ) } , declare : function ( b , a ) { this . opcodes . push ( { opcode : "DECLARE" , name : b , value : a } ) } , addDepth : function ( b ) { 0 !== b && ! this . depths [ b ] &&
( this . depths [ b ] = ! 0 , this . depths . list . push ( b ) ) } , classifySexpr : function ( b ) { var a = b . isHelper , c = b . eligibleHelper , d = this . options ; c && ! a && ( d . knownHelpers [ b . id . parts [ 0 ] ] ? a = ! 0 : d . knownHelpersOnly && ( c = ! 1 ) ) ; return a ? "helper" : c ? "ambiguous" : "simple" } , pushParams : function ( b ) { for ( var a = b . length , c ; a -- ; ) if ( c = b [ a ] , this . options . stringParams ) c . depth && this . addDepth ( c . depth ) , this . opcode ( "getContext" , c . depth || 0 ) , this . opcode ( "pushStringParam" , c . stringModeValue , c . type ) , "sexpr" === c . type && this . sexpr ( c ) ; else this [ c . type ] ( c ) } , setupFullMustacheParams : function ( b ,
a , c ) { var d = b . params ; this . pushParams ( d ) ; this . opcode ( "pushProgram" , a ) ; this . opcode ( "pushProgram" , c ) ; b . hash ? this . hash ( b . hash ) : this . opcode ( "emptyHash" ) ; return d } } ; g . precompile = function ( b , a , c ) { if ( null == b || "string" !== typeof b && b . constructor !== c . AST . ProgramNode ) throw new l ( "You must pass a string or Handlebars AST to Handlebars.precompile. You passed " + b ) ; a = a || { } ; "data" in a || ( a . data = ! 0 ) ; b = c . parse ( b ) ; b = ( new c . Compiler ) . compile ( b , a ) ; return ( new c . JavaScriptCompiler ) . compile ( b , a ) } ; g . compile = function ( b , a , c ) { if ( null ==
b || "string" !== typeof b && b . constructor !== c . AST . ProgramNode ) throw new l ( "You must pass a string or Handlebars AST to Handlebars.compile. You passed " + b ) ; a = a || { } ; "data" in a || ( a . data = ! 0 ) ; var d ; return function ( e , g ) { if ( ! d ) { var f = c . parse ( b ) , f = ( new c . Compiler ) . compile ( f , a ) , f = ( new c . JavaScriptCompiler ) . compile ( f , a , void 0 , ! 0 ) ; d = c . template ( f ) } return d . call ( this , e , g ) } } ; return g } ( p ) , p = function ( l , h ) { function g ( a ) { this . value = a } function b ( ) { } var a = l . COMPILER _REVISION , c = l . REVISION _CHANGES , d = l . log ; b . prototype = { nameLookup : function ( a ,
c ) { var d , e ; 0 === a . indexOf ( "depth" ) && ( d = ! 0 ) ; e = /^[0-9]+$/ . test ( c ) ? a + "[" + c + "]" : b . isValidJavaScriptVariableName ( c ) ? a + "." + c : a + "['" + c + "']" ; return d ? "(" + a + " && " + e + ")" : e } , compilerInfo : function ( ) { return "this.compilerInfo = [" + a + ",'" + c [ a ] + "'];\n" } , appendToBuffer : function ( a ) { return this . environment . isSimple ? "return " + a + ";" : { appendToBuffer : ! 0 , content : a , toString : function ( ) { return "buffer += " + a + ";" } } } , initializeBuffer : function ( ) { return this . quotedString ( "" ) } , namespace : "Handlebars" , compile : function ( a , b , c , e ) { this . environment =
a ; this . options = b || { } ; d ( "debug" , this . environment . disassemble ( ) + "\n\n" ) ; this . name = this . environment . name ; this . isChild = ! ! c ; this . context = c || { programs : [ ] , environments : [ ] , aliases : { } } ; this . preamble ( ) ; this . stackSlot = 0 ; this . stackVars = [ ] ; this . registers = { list : [ ] } ; this . hashes = [ ] ; this . compileStack = [ ] ; this . inlineStack = [ ] ; this . compileChildren ( a , b ) ; a = a . opcodes ; this . i = 0 ; for ( c = a . length ; this . i < c ; this . i ++ ) b = a [ this . i ] , "DECLARE" === b . opcode ? this [ b . name ] = b . value : this [ b . opcode ] . apply ( this , b . args ) , b . opcode !== this . stripNext &&
( this . stripNext = ! 1 ) ; this . pushSource ( "" ) ; if ( this . stackSlot || this . inlineStack . length || this . compileStack . length ) throw new h ( "Compile completed with content left on stack" ) ; return this . createFunctionContext ( e ) } , preamble : function ( ) { var a = [ ] ; if ( this . isChild ) a . push ( "" ) ; else { var b = this . namespace , c = "helpers = this.merge(helpers, " + b + ".helpers);" ; this . environment . usePartial && ( c = c + " partials = this.merge(partials, " + b + ".partials);" ) ; this . options . data && ( c += " data = data || {};" ) ; a . push ( c ) } this . environment . isSimple ?
a . push ( "" ) : a . push ( ", buffer = " + this . initializeBuffer ( ) ) ; this . lastContext = 0 ; this . source = a } , createFunctionContext : function ( a ) { var b = this . stackVars . concat ( this . registers . list ) ; 0 < b . length && ( this . source [ 1 ] = this . source [ 1 ] + ", " + b . join ( ", " ) ) ; if ( ! this . isChild ) for ( var c in this . context . aliases ) this . context . aliases . hasOwnProperty ( c ) && ( this . source [ 1 ] = this . source [ 1 ] + ", " + c + "=" + this . context . aliases [ c ] ) ; this . source [ 1 ] && ( this . source [ 1 ] = "var " + this . source [ 1 ] . substring ( 2 ) + ";" ) ; this . isChild || ( this . source [ 1 ] += "\n" +
this . context . programs . join ( "\n" ) + "\n" ) ; this . environment . isSimple || this . pushSource ( "return buffer;" ) ; b = this . isChild ? [ "depth0" , "data" ] : [ "Handlebars" , "depth0" , "helpers" , "partials" , "data" ] ; c = 0 ; for ( var e = this . environment . depths . list . length ; c < e ; c ++ ) b . push ( "depth" + this . environment . depths . list [ c ] ) ; c = this . mergeSource ( ) ; this . isChild || ( c = this . compilerInfo ( ) + c ) ; if ( a ) return b . push ( c ) , Function . apply ( this , b ) ; a = "function " + ( this . name || "" ) + "(" + b . join ( "," ) + ") {\n " + c + "}" ; d ( "debug" , a + "\n\n" ) ; return a } , mergeSource : function ( ) { for ( var a =
"" , b , c = 0 , d = this . source . length ; c < d ; c ++ ) { var e = this . source [ c ] ; e . appendToBuffer ? b = b ? b + "\n + " + e . content : e . content : ( b && ( a += "buffer += " + b + ";\n " , b = void 0 ) , a += e + "\n " ) } return a } , blockValue : function ( ) { this . context . aliases . blockHelperMissing = "helpers.blockHelperMissing" ; var a = [ "depth0" ] ; this . setupParams ( 0 , a ) ; this . replaceStack ( function ( b ) { a . splice ( 1 , 0 , b ) ; return "blockHelperMissing.call(" + a . join ( ", " ) + ")" } ) } , ambiguousBlockValue : function ( ) { this . context . aliases . blockHelperMissing = "helpers.blockHelperMissing" ;
var a = [ "depth0" ] ; this . setupParams ( 0 , a ) ; var b = this . topStack ( ) ; a . splice ( 1 , 0 , b ) ; this . pushSource ( "if (!" + this . lastHelper + ") { " + b + " = blockHelperMissing.call(" + a . join ( ", " ) + "); }" ) } , appendContent : function ( a ) { this . pendingContent && ( a = this . pendingContent + a ) ; this . stripNext && ( a = a . replace ( /^\s+/ , "" ) ) ; this . pendingContent = a } , strip : function ( ) { this . pendingContent && ( this . pendingContent = this . pendingContent . replace ( /\s+$/ , "" ) ) ; this . stripNext = "strip" } , append : function ( ) { this . flushInline ( ) ; var a = this . popStack ( ) ; this . pushSource ( "if(" +
a + " || " + a + " === 0) { " + this . appendToBuffer ( a ) + " }" ) ; this . environment . isSimple && this . pushSource ( "else { " + this . appendToBuffer ( "''" ) + " }" ) } , appendEscaped : function ( ) { this . context . aliases . escapeExpression = "this.escapeExpression" ; this . pushSource ( this . appendToBuffer ( "escapeExpression(" + this . popStack ( ) + ")" ) ) } , getContext : function ( a ) { this . lastContext !== a && ( this . lastContext = a ) } , lookupOnContext : function ( a ) { this . push ( this . nameLookup ( "depth" + this . lastContext , a , "context" ) ) } , pushContext : function ( ) { this . pushStackLiteral ( "depth" +
this . lastContext ) } , resolvePossibleLambda : function ( ) { this . context . aliases . functionType = '"function"' ; this . replaceStack ( function ( a ) { return "typeof " + a + " === functionType ? " + a + ".apply(depth0) : " + a } ) } , lookup : function ( a ) { this . replaceStack ( function ( b ) { return b + " == null || " + b + " === false ? " + b + " : " + this . nameLookup ( b , a , "context" ) } ) } , lookupData : function ( ) { this . pushStackLiteral ( "data" ) } , pushStringParam : function ( a , b ) { this . pushStackLiteral ( "depth" + this . lastContext ) ; this . pushString ( b ) ; "sexpr" !== b && ( "string" ===
typeof a ? this . pushString ( a ) : this . pushStackLiteral ( a ) ) } , emptyHash : function ( ) { this . pushStackLiteral ( "{}" ) ; this . options . stringParams && ( this . push ( "{}" ) , this . push ( "{}" ) ) } , pushHash : function ( ) { this . hash && this . hashes . push ( this . hash ) ; this . hash = { values : [ ] , types : [ ] , contexts : [ ] } } , popHash : function ( ) { var a = this . hash ; this . hash = this . hashes . pop ( ) ; this . options . stringParams && ( this . push ( "{" + a . contexts . join ( "," ) + "}" ) , this . push ( "{" + a . types . join ( "," ) + "}" ) ) ; this . push ( "{\n " + a . values . join ( ",\n " ) + "\n }" ) } , pushString : function ( a ) { this . pushStackLiteral ( this . quotedString ( a ) ) } ,
push : function ( a ) { this . inlineStack . push ( a ) ; return a } , pushLiteral : function ( a ) { this . pushStackLiteral ( a ) } , pushProgram : function ( a ) { null != a ? this . pushStackLiteral ( this . programExpression ( a ) ) : this . pushStackLiteral ( null ) } , invokeHelper : function ( a , b , c ) { this . context . aliases . helperMissing = "helpers.helperMissing" ; this . useRegister ( "helper" ) ; a = this . lastHelper = this . setupHelper ( a , b , ! 0 ) ; b = this . nameLookup ( "depth" + this . lastContext , b , "context" ) ; b = "helper = " + a . name + " || " + b ; a . paramsInit && ( b += "," + a . paramsInit ) ; this . push ( "(" +
b + ",helper ? helper.call(" + a . callParams + ") : helperMissing.call(" + a . helperMissingParams + "))" ) ; c || this . flushInline ( ) } , invokeKnownHelper : function ( a , b ) { var c = this . setupHelper ( a , b ) ; this . push ( c . name + ".call(" + c . callParams + ")" ) } , invokeAmbiguous : function ( a , b ) { this . context . aliases . functionType = '"function"' ; this . useRegister ( "helper" ) ; this . emptyHash ( ) ; var c = this . setupHelper ( 0 , a , b ) , d = this . lastHelper = this . nameLookup ( "helpers" , a , "helper" ) , e = this . nameLookup ( "depth" + this . lastContext , a , "context" ) , f = this . nextStack ( ) ;
c . paramsInit && this . pushSource ( c . paramsInit ) ; this . pushSource ( "if (helper = " + d + ") { " + f + " = helper.call(" + c . callParams + "); }" ) ; this . pushSource ( "else { helper = " + e + "; " + f + " = typeof helper === functionType ? helper.call(" + c . callParams + ") : helper; }" ) } , invokePartial : function ( a ) { a = [ this . nameLookup ( "partials" , a , "partial" ) , "'" + a + "'" , this . popStack ( ) , "helpers" , "partials" ] ; this . options . data && a . push ( "data" ) ; this . context . aliases . self = "this" ; this . push ( "self.invokePartial(" + a . join ( ", " ) + ")" ) } , assignToHash : function ( a ) { var b =
this . popStack ( ) , c , d ; this . options . stringParams && ( d = this . popStack ( ) , c = this . popStack ( ) ) ; var e = this . hash ; c && e . contexts . push ( "'" + a + "': " + c ) ; d && e . types . push ( "'" + a + "': " + d ) ; e . values . push ( "'" + a + "': (" + b + ")" ) } , compiler : b , compileChildren : function ( a , b ) { for ( var c = a . children , d , e , f = 0 , g = c . length ; f < g ; f ++ ) { d = c [ f ] ; e = new this . compiler ; var h = this . matchExistingProgram ( d ) ; null == h ? ( this . context . programs . push ( "" ) , h = this . context . programs . length , d . index = h , d . name = "program" + h , this . context . programs [ h ] = e . compile ( d , b , this . context ) ,
this . context . environments [ h ] = d ) : ( d . index = h , d . name = "program" + h ) } } , matchExistingProgram : function ( a ) { for ( var b = 0 , c = this . context . environments . length ; b < c ; b ++ ) { var d = this . context . environments [ b ] ; if ( d && d . equals ( a ) ) return b } } , programExpression : function ( a ) { this . context . aliases . self = "this" ; if ( null == a ) return "self.noop" ; var b = this . environment . children [ a ] ; a = b . depths . list ; for ( var c = [ b . index , b . name , "data" ] , d = 0 , e = a . length ; d < e ; d ++ ) b = a [ d ] , 1 === b ? c . push ( "depth0" ) : c . push ( "depth" + ( b - 1 ) ) ; return ( 0 === a . length ? "self.program(" :
"self.programWithDepth(" ) + c . join ( ", " ) + ")" } , register : function ( a , b ) { this . useRegister ( a ) ; this . pushSource ( a + " = " + b + ";" ) } , useRegister : function ( a ) { this . registers [ a ] || ( this . registers [ a ] = ! 0 , this . registers . list . push ( a ) ) } , pushStackLiteral : function ( a ) { return this . push ( new g ( a ) ) } , pushSource : function ( a ) { this . pendingContent && ( this . source . push ( this . appendToBuffer ( this . quotedString ( this . pendingContent ) ) ) , this . pendingContent = void 0 ) ; a && this . source . push ( a ) } , pushStack : function ( a ) { this . flushInline ( ) ; var b = this . incrStack ( ) ;
a && this . pushSource ( b + " = " + a + ";" ) ; this . compileStack . push ( b ) ; return b } , replaceStack : function ( a ) { var b = "" , c = this . isInline ( ) , d , e , f ; c ? ( d = this . popStack ( ! 0 ) , d instanceof g ? ( d = d . value , f = ! 0 ) : ( e = ! this . stackSlot , b = ! e ? this . topStackName ( ) : this . incrStack ( ) , b = "(" + this . push ( b ) + " = " + d + ")," , d = this . topStack ( ) ) ) : d = this . topStack ( ) ; a = a . call ( this , d ) ; c ? ( f || this . popStack ( ) , e && this . stackSlot -- , this . push ( "(" + b + a + ")" ) ) : ( /^stack/ . test ( d ) || ( d = this . nextStack ( ) ) , this . pushSource ( d + " = (" + b + a + ");" ) ) ; return d } , nextStack : function ( ) { return this . pushStack ( ) } ,
incrStack : function ( ) { this . stackSlot ++ ; this . stackSlot > this . stackVars . length && this . stackVars . push ( "stack" + this . stackSlot ) ; return this . topStackName ( ) } , topStackName : function ( ) { return "stack" + this . stackSlot } , flushInline : function ( ) { var a = this . inlineStack ; if ( a . length ) { this . inlineStack = [ ] ; for ( var b = 0 , c = a . length ; b < c ; b ++ ) { var d = a [ b ] ; d instanceof g ? this . compileStack . push ( d ) : this . pushStack ( d ) } } } , isInline : function ( ) { return this . inlineStack . length } , popStack : function ( a ) { var b = this . isInline ( ) , c = ( b ? this . inlineStack :
this . compileStack ) . pop ( ) ; if ( ! a && c instanceof g ) return c . value ; if ( ! b ) { if ( ! this . stackSlot ) throw new h ( "Invalid stack pop" ) ; this . stackSlot -- } return c } , topStack : function ( a ) { var b = this . isInline ( ) ? this . inlineStack : this . compileStack , b = b [ b . length - 1 ] ; return ! a && b instanceof g ? b . value : b } , quotedString : function ( a ) { return '"' + a . replace ( /\\/g , "\\\\" ) . replace ( /"/g , '\\"' ) . replace ( /\n/g , "\\n" ) . replace ( /\r/g , "\\r" ) . replace ( /\u2028/g , "\\u2028" ) . replace ( /\u2029/g , "\\u2029" ) + '"' } , setupHelper : function ( a , b , c ) { var d = [ ] ; a =
this . setupParams ( a , d , c ) ; var e = this . nameLookup ( "helpers" , b , "helper" ) ; return { params : d , paramsInit : a , name : e , callParams : [ "depth0" ] . concat ( d ) . join ( ", " ) , helperMissingParams : c && [ "depth0" , this . quotedString ( b ) ] . concat ( d ) . join ( ", " ) } } , setupOptions : function ( a , b ) { var c = [ ] , d = [ ] , e = [ ] , f , g ; c . push ( "hash:" + this . popStack ( ) ) ; this . options . stringParams && ( c . push ( "hashTypes:" + this . popStack ( ) ) , c . push ( "hashContexts:" + this . popStack ( ) ) ) ; f = this . popStack ( ) ; if ( ( g = this . popStack ( ) ) || f ) g || ( this . context . aliases . self = "this" , g = "self.noop" ) ,
f || ( this . context . aliases . self = "this" , f = "self.noop" ) , c . push ( "inverse:" + f ) , c . push ( "fn:" + g ) ; for ( g = 0 ; g < a ; g ++ ) f = this . popStack ( ) , b . push ( f ) , this . options . stringParams && ( e . push ( this . popStack ( ) ) , d . push ( this . popStack ( ) ) ) ; this . options . stringParams && ( c . push ( "contexts:[" + d . join ( "," ) + "]" ) , c . push ( "types:[" + e . join ( "," ) + "]" ) ) ; this . options . data && c . push ( "data:data" ) ; return c } , setupParams : function ( a , b , c ) { a = "{" + this . setupOptions ( a , b ) . join ( "," ) + "}" ; if ( c ) return this . useRegister ( "options" ) , b . push ( "options" ) , "options=" + a ;
b . push ( a ) ; return "" } } ; for ( var e = "break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield" . split ( " " ) , p = b . RESERVED _WORDS = { } , f = 0 , r = e . length ; f < r ; f ++ ) p [ e [ f ] ] = ! 0 ; b . isValidJavaScriptVariableName =
function ( a ) { return ! b . RESERVED _WORDS [ a ] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/ . test ( a ) ? ! 0 : ! 1 } ; return b } ( z , p ) ; return function ( l , h , g , b , a ) { var c = g . parser , d = g . parse , e = b . Compiler , p = b . compile , f = b . precompile , r = l . create ; g = function ( ) { var b = r ( ) ; b . compile = function ( a , c ) { return p ( a , c , b ) } ; b . precompile = function ( a , c ) { return f ( a , c , b ) } ; b . AST = h ; b . Compiler = e ; b . JavaScriptCompiler = a ; b . Parser = c ; b . parse = d ; return b } ; l = g ( ) ; l . create = g ; return l } ( y , v , A , B , p ) } ( ) ;