aboutsummaryrefslogtreecommitdiff
path: root/src/libs/nunjucks.min.js
blob: 7074a8c364c4b55d6cebba882fd8d103fe19fe4c (plain)
1
2
3
4
/*! Browser bundle of nunjucks 3.0.0  */
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.nunjucks=t():e.nunjucks=t()}(this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";var i=n(1),r=n(2),s=n(15),o=n(14),a=n(3);e.exports={},e.exports.Environment=r.Environment,e.exports.Template=r.Template,e.exports.Loader=s,e.exports.FileSystemLoader=o.FileSystemLoader,e.exports.PrecompiledLoader=o.PrecompiledLoader,e.exports.WebLoader=o.WebLoader,e.exports.compiler=n(7),e.exports.parser=n(8),e.exports.lexer=n(9),e.exports.runtime=n(12),e.exports.lib=i,e.exports.nodes=n(10),e.exports.installJinjaCompat=n(21);var l;e.exports.configure=function(e,t){t=t||{},i.isObject(e)&&(t=e,e=null);var n;return o.FileSystemLoader?n=new o.FileSystemLoader(e,{watch:t.watch,noCache:t.noCache}):o.WebLoader&&(n=new o.WebLoader(e,{useCache:t.web&&t.web.useCache,async:t.web&&t.web.async})),l=new r.Environment(n,t),t&&t.express&&l.express(t.express),l},e.exports.compile=function(t,n,i,r){return l||e.exports.configure(),new e.exports.Template(t,n,i,r)},e.exports.render=function(t,n,i){return l||e.exports.configure(),l.render(t,n,i)},e.exports.renderString=function(t,n,i){return l||e.exports.configure(),l.renderString(t,n,i)},a&&(e.exports.precompile=a.precompile,e.exports.precompileString=a.precompileString)},function(e,t){"use strict";var n=Array.prototype,i=Object.prototype,r={"&":"&amp;",'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;"},s=/[&"'<>]/g,o=function(e){return r[e]},t=e.exports={};t.prettifyError=function(e,n,i){if(i.Update||(i=new t.TemplateError(i)),i.Update(e),!n){var r=i;i=new Error(r.message),i.name=r.name}return i},t.TemplateError=function(e,t,n){var i=this;if(e instanceof Error){i=e,e=e.name+": "+e.message;try{i.name=""}catch(r){i=this}}else Error.captureStackTrace&&Error.captureStackTrace(i);return i.name="Template render error",i.message=e,i.lineno=t,i.colno=n,i.firstUpdate=!0,i.Update=function(e){var t="("+(e||"unknown path")+")";return this.firstUpdate&&(this.lineno&&this.colno?t+=" [Line "+this.lineno+", Column "+this.colno+"]":this.lineno&&(t+=" [Line "+this.lineno+"]")),t+="\n ",this.firstUpdate&&(t+=" "),this.message=t+(this.message||""),this.firstUpdate=!1,this},i},t.TemplateError.prototype=Error.prototype,t.escape=function(e){return e.replace(s,o)},t.isFunction=function(e){return"[object Function]"===i.toString.call(e)},t.isArray=Array.isArray||function(e){return"[object Array]"===i.toString.call(e)},t.isString=function(e){return"[object String]"===i.toString.call(e)},t.isObject=function(e){return"[object Object]"===i.toString.call(e)},t.groupBy=function(e,n){for(var i={},r=t.isFunction(n)?n:function(e){return e[n]},s=0;s<e.length;s++){var o=e[s],a=r(o,s);(i[a]||(i[a]=[])).push(o)}return i},t.toArray=function(e){return Array.prototype.slice.call(e)},t.without=function(e){var n=[];if(!e)return n;for(var i=-1,r=e.length,s=t.toArray(arguments).slice(1);++i<r;)-1===t.indexOf(s,e[i])&&n.push(e[i]);return n},t.extend=function(e,t){for(var n in t)e[n]=t[n];return e},t.repeat=function(e,t){for(var n="",i=0;t>i;i++)n+=e;return n},t.each=function(e,t,i){if(null!=e)if(n.each&&e.each===n.each)e.forEach(t,i);else if(e.length===+e.length)for(var r=0,s=e.length;s>r;r++)t.call(i,e[r],r,e)},t.map=function(e,t){var i=[];if(null==e)return i;if(n.map&&e.map===n.map)return e.map(t);for(var r=0;r<e.length;r++)i[i.length]=t(e[r],r);return e.length===+e.length&&(i.length=e.length),i},t.asyncIter=function(e,t,n){function i(){r++,r<e.length?t(e[r],r,i,n):n()}var r=-1;i()},t.asyncFor=function(e,n,i){function r(){a++;var t=s[a];o>a?n(t,e[t],a,o,r):i()}var s=t.keys(e),o=s.length,a=-1;r()},t.indexOf=Array.prototype.indexOf?function(e,t,n){return Array.prototype.indexOf.call(e,t,n)}:function(e,t,n){var i=this.length>>>0;for(n=+n||0,Math.abs(n)===1/0&&(n=0),0>n&&(n+=i,0>n&&(n=0));i>n;n++)if(e[n]===t)return n;return-1},Array.prototype.map||(Array.prototype.map=function(){throw new Error("map is unimplemented for this js engine")}),t.keys=function(e){if(Object.prototype.keys)return e.keys();var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n);return t},t.inOperator=function(e,n){if(t.isArray(n))return-1!==t.indexOf(n,e);if(t.isObject(n))return e in n;if(t.isString(n))return-1!==n.indexOf(e);throw new Error('Cannot use "in" operator to search for "'+e+'" in unexpected types.')}},function(e,t,n){"use strict";function i(e,t,n){o(function(){e(t,n)})}var r,s=n(3),o=n(4),a=n(1),l=n(6),c=n(7),h=n(13),u=n(14),p=n(12),f=n(17),m=n(18),d=p.Frame;u.PrecompiledLoader=n(16);var v=l.extend({init:function(e,t){t=this.opts=t||{},this.opts.dev=!!t.dev,this.opts.autoescape=null!=t.autoescape?t.autoescape:!0,this.opts.throwOnUndefined=!!t.throwOnUndefined,this.opts.trimBlocks=!!t.trimBlocks,this.opts.lstripBlocks=!!t.lstripBlocks,this.loaders=[],e?this.loaders=a.isArray(e)?e:[e]:u.FileSystemLoader?this.loaders=[new u.FileSystemLoader("views")]:u.WebLoader&&(this.loaders=[new u.WebLoader("/views")]),window.nunjucksPrecompiled&&this.loaders.unshift(new u.PrecompiledLoader(window.nunjucksPrecompiled)),this.initCache(),this.globals=f(),this.filters={},this.asyncFilters=[],this.extensions={},this.extensionsList=[];for(var n in h)this.addFilter(n,h[n])},initCache:function(){a.each(this.loaders,function(e){e.cache={},"function"==typeof e.on&&e.on("update",function(t){e.cache[t]=null})})},addExtension:function(e,t){return t._name=e,this.extensions[e]=t,this.extensionsList.push(t),this},removeExtension:function(e){var t=this.getExtension(e);t&&(this.extensionsList=a.without(this.extensionsList,t),delete this.extensions[e])},getExtension:function(e){return this.extensions[e]},hasExtension:function(e){return!!this.extensions[e]},addGlobal:function(e,t){return this.globals[e]=t,this},getGlobal:function(e){if("undefined"==typeof this.globals[e])throw new Error("global not found: "+e);return this.globals[e]},addFilter:function(e,t,n){var i=t;return n&&this.asyncFilters.push(e),this.filters[e]=i,this},getFilter:function(e){if(!this.filters[e])throw new Error("filter not found: "+e);return this.filters[e]},resolveTemplate:function(e,t,n){var i=e.isRelative&&t?e.isRelative(n):!1;return i&&e.resolve?e.resolve(t,n):n},getTemplate:function(e,t,n,i,s){var o=this,l=null;if(e&&e.raw&&(e=e.raw),a.isFunction(n)&&(s=n,n=null,t=t||!1),a.isFunction(t)&&(s=t,t=!1),e instanceof r)l=e;else{if("string"!=typeof e)throw new Error("template names must be a string: "+e);for(var c=0;c<this.loaders.length;c++){var h=this.resolveTemplate(this.loaders[c],n,e);if(l=this.loaders[c].cache[h])break}}if(!l){var u,p=this,f=function(n,o){if(o||n||i||(n=new Error("template not found: "+e)),n){if(!s)throw n;s(n)}else{var a;o?(a=new r(o.src,p,o.path,t),o.noCache||(o.loader.cache[e]=a)):a=new r("",p,"",t),s?s(null,a):u=a}};return a.asyncIter(this.loaders,function(t,i,r,s){function a(e,n){e?s(e):n?(n.loader=t,s(null,n)):r()}e=o.resolveTemplate(t,n,e),t.async?t.getSource(e,a):a(null,t.getSource(e))},f),u}return t&&l.compile(),s?void s(null,l):l},express:function(e){function t(e,t){if(this.name=e,this.path=e,this.defaultEngine=t.defaultEngine,this.ext=s.extname(e),!this.ext&&!this.defaultEngine)throw new Error("No default engine was specified and no extension was provided.");this.ext||(this.name+=this.ext=("."!==this.defaultEngine[0]?".":"")+this.defaultEngine)}var n=this;return t.prototype.render=function(e,t){n.render(this.name,e,t)},e.set("view",t),e.set("nunjucksEnv",this),this},render:function(e,t,n){a.isFunction(t)&&(n=t,t=null);var r=null;return this.getTemplate(e,function(e,s){if(e&&n)i(n,e);else{if(e)throw e;r=s.render(t,n)}}),r},renderString:function(e,t,n,i){a.isFunction(n)&&(i=n,n={}),n=n||{};var s=new r(e,this,n.path);return s.render(t,i)},waterfall:m}),g=l.extend({init:function(e,t,n){this.env=n||new v,this.ctx={};for(var i in e)e.hasOwnProperty(i)&&(this.ctx[i]=e[i]);this.blocks={},this.exported=[];for(var r in t)this.addBlock(r,t[r])},lookup:function(e){return e in this.env.globals&&!(e in this.ctx)?this.env.globals[e]:this.ctx[e]},setVariable:function(e,t){this.ctx[e]=t},getVariables:function(){return this.ctx},addBlock:function(e,t){return this.blocks[e]=this.blocks[e]||[],this.blocks[e].push(t),this},getBlock:function(e){if(!this.blocks[e])throw new Error('unknown block "'+e+'"');return this.blocks[e][0]},getSuper:function(e,t,n,i,r,s){var o=a.indexOf(this.blocks[t]||[],n),l=this.blocks[t][o+1],c=this;if(-1===o||!l)throw new Error('no super block available for "'+t+'"');l(e,c,i,r,s)},addExport:function(e){this.exported.push(e)},getExported:function(){for(var e={},t=0;t<this.exported.length;t++){var n=this.exported[t];e[n]=this.ctx[n]}return e}});r=l.extend({init:function(e,t,n,i){if(this.env=t||new v,a.isObject(e))switch(e.type){case"code":this.tmplProps=e.obj;break;case"string":this.tmplStr=e.obj}else{if(!a.isString(e))throw new Error("src must be a string or an object describing the source");this.tmplStr=e}if(this.path=n,i){var r=this;try{r._compile()}catch(s){throw a.prettifyError(this.path,this.env.opts.dev,s)}}else this.compiled=!1},render:function(e,t,n){"function"==typeof e?(n=e,e={}):"function"==typeof t&&(n=t,t=null);var r=!0;t&&(r=!1);var s=this;try{s.compile()}catch(o){var l=a.prettifyError(this.path,this.env.opts.dev,o);if(n)return i(n,l);throw l}var c=new g(e||{},s.blocks,s.env),h=t?t.push(!0):new d;h.topLevel=!0;var u=null;return s.rootRenderFunc(s.env,c,h||new d,p,function(e,t){if(e&&(e=a.prettifyError(s.path,s.env.opts.dev,e)),n)r?i(n,e,t):n(e,t);else{if(e)throw e;u=t}}),u},getExported:function(e,t,n){"function"==typeof e&&(n=e,e={}),"function"==typeof t&&(n=t,t=null);try{this.compile()}catch(i){if(n)return n(i);throw i}var r=t?t.push():new d;r.topLevel=!0;var s=new g(e||{},this.blocks,this.env);this.rootRenderFunc(this.env,s,r,p,function(e){e?n(e,null):n(null,s.getExported())})},compile:function(){this.compiled||this._compile()},_compile:function(){var e;if(this.tmplProps)e=this.tmplProps;else{var t=c.compile(this.tmplStr,this.env.asyncFilters,this.env.extensionsList,this.path,this.env.opts),n=new Function(t);e=n()}this.blocks=this._getBlocks(e),this.rootRenderFunc=e.root,this.compiled=!0},_getBlocks:function(e){var t={};for(var n in e)"b_"===n.slice(0,2)&&(t[n.slice(2)]=e[n]);return t}}),e.exports={Environment:v,Template:r}},function(e,t){},function(e,t,n){"use strict";function i(){if(l.length)throw l.shift()}function r(e){var t;t=a.length?a.pop():new s,t.task=e,o(t)}function s(){this.task=null}var o=n(5),a=[],l=[],c=o.makeRequestCallFromTimer(i);e.exports=r,s.prototype.call=function(){try{this.task.call()}catch(e){r.onerror?r.onerror(e):(l.push(e),c())}finally{this.task=null,a[a.length]=this}}},function(e,t){(function(t){"use strict";function n(e){a.length||(o(),l=!0),a[a.length]=e}function i(){for(;c<a.length;){var e=c;if(c+=1,a[e].call(),c>h){for(var t=0,n=a.length-c;n>t;t++)a[t]=a[t+c];a.length-=c,c=0}}a.length=0,c=0,l=!1}function r(e){var t=1,n=new u(e),i=document.createTextNode("");return n.observe(i,{characterData:!0}),function(){t=-t,i.data=t}}function s(e){return function(){function t(){clearTimeout(n),clearInterval(i),e()}var n=setTimeout(t,0),i=setInterval(t,50)}}e.exports=n;var o,a=[],l=!1,c=0,h=1024,u=t.MutationObserver||t.WebKitMutationObserver;o="function"==typeof u?r(i):s(i),n.requestFlush=o,n.makeRequestCallFromTimer=s}).call(t,function(){return this}())},function(e,t){"use strict";function n(e,t,i){var r=function(){};r.prototype=e.prototype;var s=new r,o=/xyz/.test(function(){xyz})?/\bparent\b/:/.*/;i=i||{};for(var a in i){var l=i[a],c=s[a];"function"==typeof c&&"function"==typeof l&&o.test(l)?s[a]=function(e,t){return function(){var n=this.parent;this.parent=t;var i=e.apply(this,arguments);return this.parent=n,i}}(l,c):s[a]=l}s.typename=t;var h=function(){s.init&&s.init.apply(this,arguments)};return h.prototype=s,h.prototype.constructor=h,h.extend=function(e,t){return"object"==typeof e&&(t=e,e="anonymous"),n(h,e,t)},h}e.exports=n(Object,"Object",{})},function(e,t,n){"use strict";function i(e){return function(t,n){this.compile(t.left,n),this.emit(e),this.compile(t.right,n)}}var r=n(1),s=n(8),o=n(11),a=n(10),l=n(6),c=n(12).Frame,h={"==":"==","===":"===","!=":"!=","!==":"!==","<":"<",">":">","<=":"<=",">=":">="},u=l.extend({init:function(e,t){this.templateName=e,this.codebuf=[],this.lastId=0,this.buffer=null,this.bufferStack=[],this.scopeClosers="",this.inBlock=!1,this.throwOnUndefined=t},fail:function(e,t,n){throw void 0!==t&&(t+=1),void 0!==n&&(n+=1),new r.TemplateError(e,t,n)},pushBufferId:function(e){this.bufferStack.push(this.buffer),this.buffer=e,this.emit("var "+this.buffer+' = "";')},popBufferId:function(){this.buffer=this.bufferStack.pop()},emit:function(e){this.codebuf.push(e)},emitLine:function(e){this.emit(e+"\n")},emitLines:function(){r.each(r.toArray(arguments),function(e){this.emitLine(e)},this)},emitFuncBegin:function(e){this.buffer="output",this.scopeClosers="",this.emitLine("function "+e+"(env, context, frame, runtime, cb) {"),this.emitLine("var lineno = null;"),this.emitLine("var colno = null;"),this.emitLine("var "+this.buffer+' = "";'),this.emitLine("try {")},emitFuncEnd:function(e){e||this.emitLine("cb(null, "+this.buffer+");"),this.closeScopeLevels(),this.emitLine("} catch (e) {"),this.emitLine("  cb(runtime.handleError(e, lineno, colno));"),this.emitLine("}"),this.emitLine("}"),this.buffer=null},addScopeLevel:function(){this.scopeClosers+="})"},closeScopeLevels:function(){this.emitLine(this.scopeClosers+";"),this.scopeClosers=""},withScopedSyntax:function(e){var t=this.scopeClosers;this.scopeClosers="",e.call(this),this.closeScopeLevels(),this.scopeClosers=t},makeCallback:function(e){var t=this.tmpid();return"function("+t+(e?","+e:"")+") {\nif("+t+") { cb("+t+"); return; }"},tmpid:function(){return this.lastId++,"t_"+this.lastId},_templateName:function(){return null==this.templateName?"undefined":JSON.stringify(this.templateName)},_compileChildren:function(e,t){for(var n=e.children,i=0,r=n.length;r>i;i++)this.compile(n[i],t)},_compileAggregate:function(e,t,n,i){n&&this.emit(n);for(var r=0;r<e.children.length;r++)r>0&&this.emit(","),this.compile(e.children[r],t);i&&this.emit(i)},_compileExpression:function(e,t){this.assertType(e,a.Literal,a.Symbol,a.Group,a.Array,a.Dict,a.FunCall,a.Caller,a.Filter,a.LookupVal,a.Compare,a.InlineIf,a.In,a.And,a.Or,a.Not,a.Add,a.Concat,a.Sub,a.Mul,a.Div,a.FloorDiv,a.Mod,a.Pow,a.Neg,a.Pos,a.Compare,a.NodeList),this.compile(e,t)},assertType:function(e){for(var t=r.toArray(arguments).slice(1),n=!1,i=0;i<t.length;i++)e instanceof t[i]&&(n=!0);n||this.fail("assertType: invalid type: "+e.typename,e.lineno,e.colno)},compileCallExtension:function(e,t,n){var i=e.args,s=e.contentArgs,o="boolean"==typeof e.autoescape?e.autoescape:!0;if(n||this.emit(this.buffer+" += runtime.suppressValue("),this.emit('env.getExtension("'+e.extName+'")["'+e.prop+'"]('),this.emit("context"),(i||s)&&this.emit(","),i&&(i instanceof a.NodeList||this.fail("compileCallExtension: arguments must be a NodeList, use `parser.parseSignature`"),r.each(i.children,function(e,n){this._compileExpression(e,t),(n!==i.children.length-1||s.length)&&this.emit(",")},this)),s.length&&r.each(s,function(e,n){if(n>0&&this.emit(","),e){var i=this.tmpid();this.emitLine("function(cb) {"),this.emitLine("if(!cb) { cb = function(err) { if(err) { throw err; }}}"),this.pushBufferId(i),this.withScopedSyntax(function(){this.compile(e,t),this.emitLine("cb(null, "+i+");")}),this.popBufferId(),this.emitLine("return "+i+";"),this.emitLine("}")}else this.emit("null")},this),n){var l=this.tmpid();this.emitLine(", "+this.makeCallback(l)),this.emitLine(this.buffer+" += runtime.suppressValue("+l+", "+o+" && env.opts.autoescape);"),this.addScopeLevel()}else this.emit(")"),this.emit(", "+o+" && env.opts.autoescape);\n")},compileCallExtensionAsync:function(e,t){this.compileCallExtension(e,t,!0)},compileNodeList:function(e,t){this._compileChildren(e,t)},compileLiteral:function(e){if("string"==typeof e.value){var t=e.value.replace(/\\/g,"\\\\");t=t.replace(/"/g,'\\"'),t=t.replace(/\n/g,"\\n"),t=t.replace(/\r/g,"\\r"),t=t.replace(/\t/g,"\\t"),this.emit('"'+t+'"')}else null===e.value?this.emit("null"):this.emit(e.value.toString())},compileSymbol:function(e,t){var n,i=e.value;(n=t.lookup(i))?this.emit(n):this.emit('runtime.contextOrFrameLookup(context, frame, "'+i+'")')},compileGroup:function(e,t){this._compileAggregate(e,t,"(",")")},compileArray:function(e,t){this._compileAggregate(e,t,"[","]")},compileDict:function(e,t){this._compileAggregate(e,t,"{","}")},compilePair:function(e,t){var n=e.key,i=e.value;n instanceof a.Symbol?n=new a.Literal(n.lineno,n.colno,n.value):n instanceof a.Literal&&"string"==typeof n.value||this.fail("compilePair: Dict keys must be strings or names",n.lineno,n.colno),this.compile(n,t),this.emit(": "),this._compileExpression(i,t)},compileInlineIf:function(e,t){this.emit("("),this.compile(e.cond,t),this.emit("?"),this.compile(e.body,t),this.emit(":"),null!==e.else_?this.compile(e.else_,t):this.emit('""'),this.emit(")")},compileIn:function(e,t){this.emit("runtime.inOperator("),this.compile(e.left,t),this.emit(","),this.compile(e.right,t),this.emit(")")},compileOr:i(" || "),compileAnd:i(" && "),compileAdd:i(" + "),compileConcat:i(' + "" + '),compileSub:i(" - "),compileMul:i(" * "),compileDiv:i(" / "),compileMod:i(" % "),compileNot:function(e,t){this.emit("!"),this.compile(e.target,t)},compileFloorDiv:function(e,t){this.emit("Math.floor("),this.compile(e.left,t),this.emit(" / "),this.compile(e.right,t),this.emit(")")},compilePow:function(e,t){this.emit("Math.pow("),this.compile(e.left,t),this.emit(", "),this.compile(e.right,t),this.emit(")")},compileNeg:function(e,t){this.emit("-"),this.compile(e.target,t)},compilePos:function(e,t){this.emit("+"),this.compile(e.target,t)},compileCompare:function(e,t){this.compile(e.expr,t);for(var n=0;n<e.ops.length;n++){var i=e.ops[n];this.emit(" "+h[i.type]+" "),this.compile(i.expr,t)}},compileLookupVal:function(e,t){this.emit("runtime.memberLookup(("),this._compileExpression(e.target,t),this.emit("),"),this._compileExpression(e.val,t),this.emit(")")},_getNodeName:function(e){switch(e.typename){case"Symbol":return e.value;case"FunCall":return"the return value of ("+this._getNodeName(e.name)+")";case"LookupVal":return this._getNodeName(e.target)+'["'+this._getNodeName(e.val)+'"]';case"Literal":return e.value.toString();default:return"--expression--"}},compileFunCall:function(e,t){this.emit("(lineno = "+e.lineno+", colno = "+e.colno+", "),this.emit("runtime.callWrap("),this._compileExpression(e.name,t),this.emit(', "'+this._getNodeName(e.name).replace(/"/g,'\\"')+'", context, '),this._compileAggregate(e.args,t,"[","])"),this.emit(")")},compileFilter:function(e,t){var n=e.name;this.assertType(n,a.Symbol),this.emit('env.getFilter("'+n.value+'").call(context, '),this._compileAggregate(e.args,t),this.emit(")")},compileFilterAsync:function(e,t){var n=e.name;this.assertType(n,a.Symbol);var i=e.symbol.value;t.set(i,i),this.emit('env.getFilter("'+n.value+'").call(context, '),this._compileAggregate(e.args,t),this.emitLine(", "+this.makeCallback(i)),this.addScopeLevel()},compileKeywordArgs:function(e,t){var n=[];r.each(e.children,function(e){n.push(e.key.value)}),this.emit("runtime.makeKeywordArgs("),this.compileDict(e,t),this.emit(")")},compileSet:function(e,t){var n=[];r.each(e.targets,function(e){var i=e.value,r=t.lookup(i);(null===r||void 0===r)&&(r=this.tmpid(),this.emitLine("var "+r+";")),n.push(r)},this),e.value?(this.emit(n.join(" = ")+" = "),this._compileExpression(e.value,t),this.emitLine(";")):(this.emit(n.join(" = ")+" = "),this.compile(e.body,t),this.emitLine(";")),r.each(e.targets,function(e,t){var i=n[t],r=e.value;this.emitLine('frame.set("'+r+'", '+i+", true);"),this.emitLine("if(frame.topLevel) {"),this.emitLine('context.setVariable("'+r+'", '+i+");"),this.emitLine("}"),"_"!==r.charAt(0)&&(this.emitLine("if(frame.topLevel) {"),this.emitLine('context.addExport("'+r+'", '+i+");"),this.emitLine("}"))},this)},compileIf:function(e,t,n){this.emit("if("),this._compileExpression(e.cond,t),this.emitLine(") {"),this.withScopedSyntax(function(){this.compile(e.body,t),n&&this.emit("cb()")}),e.else_?(this.emitLine("}\nelse {"),this.withScopedSyntax(function(){this.compile(e.else_,t),n&&this.emit("cb()")})):n&&(this.emitLine("}\nelse {"),this.emit("cb()")),this.emitLine("}")},compileIfAsync:function(e,t){this.emit("(function(cb) {"),this.compileIf(e,t,!0),this.emit("})("+this.makeCallback()),this.addScopeLevel()},emitLoopBindings:function(e,t,n,i){var r={index:n+" + 1",index0:n,revindex:i+" - "+n,revindex0:i+" - "+n+" - 1",first:n+" === 0",last:n+" === "+i+" - 1",length:i};for(var s in r)this.emitLine('frame.set("loop.'+s+'", '+r[s]+");")},compileFor:function(e,t){var n,i=this.tmpid(),r=this.tmpid(),s=this.tmpid();if(t=t.push(),this.emitLine("frame = frame.push();"),this.emit("var "+s+" = "),this._compileExpression(e.arr,t),this.emitLine(";"),this.emit("if("+s+") {"),e.name instanceof a.Array){this.emitLine("var "+i+";"),this.emitLine("if(runtime.isArray("+s+")) {"),this.emitLine("var "+r+" = "+s+".length;"),this.emitLine("for("+i+"=0; "+i+" < "+s+".length; "+i+"++) {");for(var o=0;o<e.name.children.length;o++){var l=this.tmpid();this.emitLine("var "+l+" = "+s+"["+i+"]["+o+"]"),this.emitLine('frame.set("'+e.name.children[o].value+'", '+s+"["+i+"]["+o+"]);"),t.set(e.name.children[o].value,l)}this.emitLoopBindings(e,s,i,r),this.withScopedSyntax(function(){this.compile(e.body,t)}),this.emitLine("}"),this.emitLine("} else {");var c=e.name.children[0],h=e.name.children[1],u=this.tmpid();n=this.tmpid(),t.set(c.value,u),t.set(h.value,n),this.emitLine(i+" = -1;"),this.emitLine("var "+r+" = runtime.keys("+s+").length;"),this.emitLine("for(var "+u+" in "+s+") {"),this.emitLine(i+"++;"),this.emitLine("var "+n+" = "+s+"["+u+"];"),this.emitLine('frame.set("'+c.value+'", '+u+");"),this.emitLine('frame.set("'+h.value+'", '+n+");"),this.emitLoopBindings(e,s,i,r),this.withScopedSyntax(function(){this.compile(e.body,t)}),this.emitLine("}"),this.emitLine("}")}else n=this.tmpid(),t.set(e.name.value,n),this.emitLine("var "+r+" = "+s+".length;"),this.emitLine("for(var "+i+"=0; "+i+" < "+s+".length; "+i+"++) {"),this.emitLine("var "+n+" = "+s+"["+i+"];"),this.emitLine('frame.set("'+e.name.value+'", '+n+");"),this.emitLoopBindings(e,s,i,r),this.withScopedSyntax(function(){this.compile(e.body,t)}),this.emitLine("}");this.emitLine("}"),e.else_&&(this.emitLine("if (!"+r+") {"),this.compile(e.else_,t),this.emitLine("}")),this.emitLine("frame = frame.pop();")},_compileAsyncLoop:function(e,t,n){var i=this.tmpid(),s=this.tmpid(),o=this.tmpid(),l=n?"asyncAll":"asyncEach";if(t=t.push(),this.emitLine("frame = frame.push();"),this.emit("var "+o+" = "),this._compileExpression(e.arr,t),this.emitLine(";"),e.name instanceof a.Array)this.emit("runtime."+l+"("+o+", "+e.name.children.length+", function("),r.each(e.name.children,function(e){this.emit(e.value+",")},this),this.emit(i+","+s+",next) {"),r.each(e.name.children,function(e){var n=e.value;t.set(n,n),this.emitLine('frame.set("'+n+'", '+n+");")},this);else{var c=e.name.value;this.emitLine("runtime."+l+"("+o+", 1, function("+c+", "+i+", "+s+",next) {"),this.emitLine('frame.set("'+c+'", '+c+");"),t.set(c,c)}this.emitLoopBindings(e,o,i,s),this.withScopedSyntax(function(){var r;n&&(r=this.tmpid(),this.pushBufferId(r)),this.compile(e.body,t),this.emitLine("next("+i+(r?","+r:"")+");"),n&&this.popBufferId()});var h=this.tmpid();this.emitLine("}, "+this.makeCallback(h)),this.addScopeLevel(),n&&this.emitLine(this.buffer+" += "+h+";"),e.else_&&(this.emitLine("if (!"+o+".length) {"),this.compile(e.else_,t),this.emitLine("}")),this.emitLine("frame = frame.pop();")},compileAsyncEach:function(e,t){this._compileAsyncLoop(e,t)},compileAsyncAll:function(e,t){this._compileAsyncLoop(e,t,!0)},_compileMacro:function(e){var t=[],n=null,i="macro_"+this.tmpid();r.each(e.args.children,function(i,r){r===e.args.children.length-1&&i instanceof a.Dict?n=i:(this.assertType(i,a.Symbol),t.push(i))},this);var s=r.map(t,function(e){return"l_"+e.value});s.push("kwargs");var o=r.map(t,function(e){return'"'+e.value+'"'}),l=r.map(n&&n.children||[],function(e){return'"'+e.key.value+'"'}),h=new c;this.emitLines("var "+i+" = runtime.makeMacro(","["+o.join(", ")+"], ","["+l.join(", ")+"], ","function ("+s.join(", ")+") {","var callerFrame = frame;","frame = new runtime.Frame();","kwargs = kwargs || {};",'if (kwargs.hasOwnProperty("caller")) {','frame.set("caller", kwargs.caller); }'),r.each(t,function(e){this.emitLine('frame.set("'+e.value+'", l_'+e.value+");"),h.set(e.value,"l_"+e.value)},this),n&&r.each(n.children,function(e){var t=e.key.value;this.emit('frame.set("'+t+'", kwargs.hasOwnProperty("'+t+'") ? kwargs["'+t+'"] : '),this._compileExpression(e.value,h),this.emitLine(");")},this);var u=this.tmpid();return this.pushBufferId(u),this.withScopedSyntax(function(){this.compile(e.body,h)}),this.emitLine("frame = callerFrame;"),this.emitLine("return new runtime.SafeString("+u+");"),this.emitLine("});"),this.popBufferId(),i},compileMacro:function(e,t){var n=this._compileMacro(e,t),i=e.name.value;t.set(i,n),t.parent?this.emitLine('frame.set("'+i+'", '+n+");"):("_"!==e.name.value.charAt(0)&&this.emitLine('context.addExport("'+i+'");'),this.emitLine('context.setVariable("'+i+'", '+n+");"))},compileCaller:function(e,t){this.emit("(function (){");var n=this._compileMacro(e,t);this.emit("return "+n+";})()")},compileImport:function(e,t){var n=this.tmpid(),i=e.target.value;this.emit("env.getTemplate("),this._compileExpression(e.template,t),this.emitLine(", false, "+this._templateName()+", false, "+this.makeCallback(n)),this.addScopeLevel(),this.emitLine(n+".getExported("+(e.withContext?"context.getVariables(), frame, ":"")+this.makeCallback(n)),this.addScopeLevel(),t.set(i,n),t.parent?this.emitLine('frame.set("'+i+'", '+n+");"):this.emitLine('context.setVariable("'+i+'", '+n+");")},compileFromImport:function(e,t){var n=this.tmpid();this.emit("env.getTemplate("),this._compileExpression(e.template,t),this.emitLine(", false, "+this._templateName()+", false, "+this.makeCallback(n)),this.addScopeLevel(),this.emitLine(n+".getExported("+(e.withContext?"context.getVariables(), frame, ":"")+this.makeCallback(n)),this.addScopeLevel(),r.each(e.names.children,function(e){var i,r,s=this.tmpid();e instanceof a.Pair?(i=e.key.value,r=e.value.value):(i=e.value,r=i),this.emitLine("if("+n+'.hasOwnProperty("'+i+'")) {'),this.emitLine("var "+s+" = "+n+"."+i+";"),this.emitLine("} else {"),this.emitLine("cb(new Error(\"cannot import '"+i+"'\")); return;"),this.emitLine("}"),t.set(r,s),t.parent?this.emitLine('frame.set("'+r+'", '+s+");"):this.emitLine('context.setVariable("'+r+'", '+s+");")},this)},compileBlock:function(e){var t=this.tmpid();this.inBlock||this.emit('(parentTemplate ? function(e, c, f, r, cb) { cb(""); } : '),this.emit('context.getBlock("'+e.name.value+'")'),this.inBlock||this.emit(")"),this.emitLine("(env, context, frame, runtime, "+this.makeCallback(t)),this.emitLine(this.buffer+" += "+t+";"),this.addScopeLevel()},compileSuper:function(e,t){var n=e.blockName.value,i=e.symbol.value;this.emitLine('context.getSuper(env, "'+n+'", b_'+n+", frame, runtime, "+this.makeCallback(i)),this.emitLine(i+" = runtime.markSafe("+i+");"),this.addScopeLevel(),t.set(i,i)},compileExtends:function(e,t){var n=this.tmpid();this.emit("env.getTemplate("),this._compileExpression(e.template,t),this.emitLine(", true, "+this._templateName()+", false, "+this.makeCallback("_parentTemplate")),this.emitLine("parentTemplate = _parentTemplate"),this.emitLine("for(var "+n+" in parentTemplate.blocks) {"),this.emitLine("context.addBlock("+n+", parentTemplate.blocks["+n+"]);"),this.emitLine("}"),this.addScopeLevel()},compileInclude:function(e,t){var n=this.tmpid(),i=this.tmpid();this.emitLine("var tasks = [];"),this.emitLine("tasks.push("),this.emitLine("function(callback) {"),this.emit("env.getTemplate("),this._compileExpression(e.template,t),this.emitLine(", false, "+this._templateName()+", "+e.ignoreMissing+", "+this.makeCallback(n)),this.emitLine("callback(null,"+n+");});"),this.emitLine("});"),this.emitLine("tasks.push("),this.emitLine("function(template, callback){"),this.emitLine("template.render(context.getVariables(), frame, "+this.makeCallback(i)),this.emitLine("callback(null,"+i+");});"),this.emitLine("});"),this.emitLine("tasks.push("),this.emitLine("function(result, callback){"),this.emitLine(this.buffer+" += result;"),this.emitLine("callback(null);"),this.emitLine("});"),this.emitLine("env.waterfall(tasks, function(){"),this.addScopeLevel()},compileTemplateData:function(e,t){this.compileLiteral(e,t)},compileCapture:function(e,t){this.emitLine("(function() {"),this.emitLine('var output = "";'),this.withScopedSyntax(function(){this.compile(e.body,t)}),this.emitLine("return output;"),this.emitLine("})()")},compileOutput:function(e,t){for(var n=e.children,i=0,r=n.length;r>i;i++)n[i]instanceof a.TemplateData?n[i].value&&(this.emit(this.buffer+" += "),this.compileLiteral(n[i],t),this.emitLine(";")):(this.emit(this.buffer+" += runtime.suppressValue("),this.throwOnUndefined&&this.emit("runtime.ensureDefined("),this.compile(n[i],t),this.throwOnUndefined&&this.emit(","+e.lineno+","+e.colno+")"),this.emit(", env.opts.autoescape);\n"))},compileRoot:function(e,t){t&&this.fail("compileRoot: root node can't have frame"),t=new c,this.emitFuncBegin("root"),this.emitLine("var parentTemplate = null;"),this._compileChildren(e,t),this.emitLine("if(parentTemplate) {"),this.emitLine("parentTemplate.rootRenderFunc(env, context, frame, runtime, cb);"),this.emitLine("} else {"),this.emitLine("cb(null, "+this.buffer+");"),this.emitLine("}"),this.emitFuncEnd(!0),this.inBlock=!0;var n,i,r,s=[],o=e.findAll(a.Block);for(n=0;n<o.length;n++){if(r=o[n],i=r.name.value,-1!==s.indexOf(i))throw new Error('Block "'+i+'" defined more than once.');s.push(i),this.emitFuncBegin("b_"+i);var l=new c;this.emitLine("var frame = frame.push(true);"),this.compile(r.body,l),this.emitFuncEnd()}for(this.emitLine("return {"),n=0;n<o.length;n++)r=o[n],i="b_"+r.name.value,this.emitLine(i+": "+i+",");this.emitLine("root: root\n};")},compile:function(e,t){var n=this["compile"+e.typename];n?n.call(this,e,t):this.fail("compile: Cannot compile node: "+e.typename,e.lineno,e.colno)},getCode:function(){return this.codebuf.join("")}});e.exports={compile:function(e,t,n,i,r){var a=new u(i,r.throwOnUndefined);if(n&&n.length)for(var l=0;l<n.length;l++)"preprocess"in n[l]&&(e=n[l].preprocess(e,i));return a.compile(o.transform(s.parse(e,n,r),t,i)),a.getCode()},Compiler:u}},function(e,t,n){"use strict";var i=n(9),r=n(10),s=n(6),o=n(1),a=s.extend({init:function(e){this.tokens=e,this.peeked=null,this.breakOnBlocks=null,this.dropLeadingWhitespace=!1,this.extensions=[]},nextToken:function(e){var t;if(this.peeked){if(e||this.peeked.type!==i.TOKEN_WHITESPACE)return t=this.peeked,this.peeked=null,t;this.peeked=null}if(t=this.tokens.nextToken(),!e)for(;t&&t.type===i.TOKEN_WHITESPACE;)t=this.tokens.nextToken();return t},peekToken:function(){return this.peeked=this.peeked||this.nextToken(),this.peeked},pushToken:function(e){if(this.peeked)throw new Error("pushToken: can only push one token on between reads");this.peeked=e},fail:function(e,t,n){if((void 0===t||void 0===n)&&this.peekToken()){var i=this.peekToken();t=i.lineno,n=i.colno}throw void 0!==t&&(t+=1),void 0!==n&&(n+=1),new o.TemplateError(e,t,n)},skip:function(e){var t=this.nextToken();return t&&t.type===e?!0:(this.pushToken(t),!1)},expect:function(e){var t=this.nextToken();return t.type!==e&&this.fail("expected "+e+", got "+t.type,t.lineno,t.colno),t},skipValue:function(e,t){var n=this.nextToken();return n&&n.type===e&&n.value===t?!0:(this.pushToken(n),
!1)},skipSymbol:function(e){return this.skipValue(i.TOKEN_SYMBOL,e)},advanceAfterBlockEnd:function(e){var t;return e||(t=this.peekToken(),t||this.fail("unexpected end of file"),t.type!==i.TOKEN_SYMBOL&&this.fail("advanceAfterBlockEnd: expected symbol token or explicit name to be passed"),e=this.nextToken().value),t=this.nextToken(),t&&t.type===i.TOKEN_BLOCK_END?"-"===t.value.charAt(0)&&(this.dropLeadingWhitespace=!0):this.fail("expected block end in "+e+" statement"),t},advanceAfterVariableEnd:function(){var e=this.nextToken();e&&e.type===i.TOKEN_VARIABLE_END?this.dropLeadingWhitespace="-"===e.value.charAt(e.value.length-this.tokens.tags.VARIABLE_END.length-1):(this.pushToken(e),this.fail("expected variable end"))},parseFor:function(){var e,t,n=this.peekToken();this.skipSymbol("for")?(e=new r.For(n.lineno,n.colno),t="endfor"):this.skipSymbol("asyncEach")?(e=new r.AsyncEach(n.lineno,n.colno),t="endeach"):this.skipSymbol("asyncAll")?(e=new r.AsyncAll(n.lineno,n.colno),t="endall"):this.fail("parseFor: expected for{Async}",n.lineno,n.colno),e.name=this.parsePrimary(),e.name instanceof r.Symbol||this.fail("parseFor: variable name expected for loop");var s=this.peekToken().type;if(s===i.TOKEN_COMMA){var o=e.name;for(e.name=new r.Array(o.lineno,o.colno),e.name.addChild(o);this.skip(i.TOKEN_COMMA);){var a=this.parsePrimary();e.name.addChild(a)}}return this.skipSymbol("in")||this.fail('parseFor: expected "in" keyword for loop',n.lineno,n.colno),e.arr=this.parseExpression(),this.advanceAfterBlockEnd(n.value),e.body=this.parseUntilBlocks(t,"else"),this.skipSymbol("else")&&(this.advanceAfterBlockEnd("else"),e.else_=this.parseUntilBlocks(t)),this.advanceAfterBlockEnd(),e},parseMacro:function(){var e=this.peekToken();this.skipSymbol("macro")||this.fail("expected macro");var t=this.parsePrimary(!0),n=this.parseSignature(),i=new r.Macro(e.lineno,e.colno,t,n);return this.advanceAfterBlockEnd(e.value),i.body=this.parseUntilBlocks("endmacro"),this.advanceAfterBlockEnd(),i},parseCall:function(){var e=this.peekToken();this.skipSymbol("call")||this.fail("expected call");var t=this.parseSignature(!0)||new r.NodeList,n=this.parsePrimary();this.advanceAfterBlockEnd(e.value);var i=this.parseUntilBlocks("endcall");this.advanceAfterBlockEnd();var s=new r.Symbol(e.lineno,e.colno,"caller"),o=new r.Caller(e.lineno,e.colno,s,t,i),a=n.args.children;a[a.length-1]instanceof r.KeywordArgs||a.push(new r.KeywordArgs);var l=a[a.length-1];return l.addChild(new r.Pair(e.lineno,e.colno,s,o)),new r.Output(e.lineno,e.colno,[n])},parseWithContext:function(){var e=this.peekToken(),t=null;return this.skipSymbol("with")?t=!0:this.skipSymbol("without")&&(t=!1),null!==t&&(this.skipSymbol("context")||this.fail("parseFrom: expected context after with/without",e.lineno,e.colno)),t},parseImport:function(){var e=this.peekToken();this.skipSymbol("import")||this.fail("parseImport: expected import",e.lineno,e.colno);var t=this.parseExpression();this.skipSymbol("as")||this.fail('parseImport: expected "as" keyword',e.lineno,e.colno);var n=this.parseExpression(),i=this.parseWithContext(),s=new r.Import(e.lineno,e.colno,t,n,i);return this.advanceAfterBlockEnd(e.value),s},parseFrom:function(){var e=this.peekToken();this.skipSymbol("from")||this.fail("parseFrom: expected from");var t=this.parseExpression();this.skipSymbol("import")||this.fail("parseFrom: expected import",e.lineno,e.colno);for(var n,s=new r.NodeList;;){var o=this.peekToken();if(o.type===i.TOKEN_BLOCK_END){s.children.length||this.fail("parseFrom: Expected at least one import name",e.lineno,e.colno),"-"===o.value.charAt(0)&&(this.dropLeadingWhitespace=!0),this.nextToken();break}s.children.length>0&&!this.skip(i.TOKEN_COMMA)&&this.fail("parseFrom: expected comma",e.lineno,e.colno);var a=this.parsePrimary();if("_"===a.value.charAt(0)&&this.fail("parseFrom: names starting with an underscore cannot be imported",a.lineno,a.colno),this.skipSymbol("as")){var l=this.parsePrimary();s.addChild(new r.Pair(a.lineno,a.colno,a,l))}else s.addChild(a);n=this.parseWithContext()}return new r.FromImport(e.lineno,e.colno,t,s,n)},parseBlock:function(){var e=this.peekToken();this.skipSymbol("block")||this.fail("parseBlock: expected block",e.lineno,e.colno);var t=new r.Block(e.lineno,e.colno);t.name=this.parsePrimary(),t.name instanceof r.Symbol||this.fail("parseBlock: variable name expected",e.lineno,e.colno),this.advanceAfterBlockEnd(e.value),t.body=this.parseUntilBlocks("endblock"),this.skipSymbol("endblock"),this.skipSymbol(t.name.value);var n=this.peekToken();return n||this.fail("parseBlock: expected endblock, got end of file"),this.advanceAfterBlockEnd(n.value),t},parseExtends:function(){var e="extends",t=this.peekToken();this.skipSymbol(e)||this.fail("parseTemplateRef: expected "+e);var n=new r.Extends(t.lineno,t.colno);return n.template=this.parseExpression(),this.advanceAfterBlockEnd(t.value),n},parseInclude:function(){var e="include",t=this.peekToken();this.skipSymbol(e)||this.fail("parseInclude: expected "+e);var n=new r.Include(t.lineno,t.colno);return n.template=this.parseExpression(),this.skipSymbol("ignore")&&this.skipSymbol("missing")&&(n.ignoreMissing=!0),this.advanceAfterBlockEnd(t.value),n},parseIf:function(){var e,t=this.peekToken();this.skipSymbol("if")||this.skipSymbol("elif")||this.skipSymbol("elseif")?e=new r.If(t.lineno,t.colno):this.skipSymbol("ifAsync")?e=new r.IfAsync(t.lineno,t.colno):this.fail("parseIf: expected if, elif, or elseif",t.lineno,t.colno),e.cond=this.parseExpression(),this.advanceAfterBlockEnd(t.value),e.body=this.parseUntilBlocks("elif","elseif","else","endif");var n=this.peekToken();switch(n&&n.value){case"elseif":case"elif":e.else_=this.parseIf();break;case"else":this.advanceAfterBlockEnd(),e.else_=this.parseUntilBlocks("endif"),this.advanceAfterBlockEnd();break;case"endif":e.else_=null,this.advanceAfterBlockEnd();break;default:this.fail("parseIf: expected elif, else, or endif, got end of file")}return e},parseSet:function(){var e=this.peekToken();this.skipSymbol("set")||this.fail("parseSet: expected set",e.lineno,e.colno);for(var t,n=new r.Set(e.lineno,e.colno,[]);(t=this.parsePrimary())&&(n.targets.push(t),this.skip(i.TOKEN_COMMA)););return this.skipValue(i.TOKEN_OPERATOR,"=")?(n.value=this.parseExpression(),this.advanceAfterBlockEnd(e.value)):this.skip(i.TOKEN_BLOCK_END)?(n.body=new r.Capture(e.lineno,e.colno,this.parseUntilBlocks("endset")),n.value=null,this.advanceAfterBlockEnd()):this.fail("parseSet: expected = or block end in set tag",e.lineno,e.colno),n},parseStatement:function(){var e,t=this.peekToken();if(t.type!==i.TOKEN_SYMBOL&&this.fail("tag name expected",t.lineno,t.colno),this.breakOnBlocks&&-1!==o.indexOf(this.breakOnBlocks,t.value))return null;switch(t.value){case"raw":return this.parseRaw();case"verbatim":return this.parseRaw("verbatim");case"if":case"ifAsync":return this.parseIf();case"for":case"asyncEach":case"asyncAll":return this.parseFor();case"block":return this.parseBlock();case"extends":return this.parseExtends();case"include":return this.parseInclude();case"set":return this.parseSet();case"macro":return this.parseMacro();case"call":return this.parseCall();case"import":return this.parseImport();case"from":return this.parseFrom();case"filter":return this.parseFilterStatement();default:if(this.extensions.length)for(var n=0;n<this.extensions.length;n++){var s=this.extensions[n];if(-1!==o.indexOf(s.tags||[],t.value))return s.parse(this,r,i)}this.fail("unknown block tag: "+t.value,t.lineno,t.colno)}return e},parseRaw:function(e){e=e||"raw";for(var t="end"+e,n=new RegExp("([\\s\\S]*?){%\\s*("+e+"|"+t+")\\s*(?=%})%}"),i=1,s="",o=null,a=this.advanceAfterBlockEnd();(o=this.tokens._extractRegex(n))&&i>0;){var l=o[0],c=o[1],h=o[2];h===e?i+=1:h===t&&(i-=1),0===i?(s+=c,this.tokens.backN(l.length-c.length)):s+=l}return new r.Output(a.lineno,a.colno,[new r.TemplateData(a.lineno,a.colno,s)])},parsePostfix:function(e){for(var t,n=this.peekToken();n;){if(n.type===i.TOKEN_LEFT_PAREN)e=new r.FunCall(n.lineno,n.colno,e,this.parseSignature());else if(n.type===i.TOKEN_LEFT_BRACKET)t=this.parseAggregate(),t.children.length>1&&this.fail("invalid index"),e=new r.LookupVal(n.lineno,n.colno,e,t.children[0]);else{if(n.type!==i.TOKEN_OPERATOR||"."!==n.value)break;this.nextToken();var s=this.nextToken();s.type!==i.TOKEN_SYMBOL&&this.fail("expected name as lookup value, got "+s.value,s.lineno,s.colno),t=new r.Literal(s.lineno,s.colno,s.value),e=new r.LookupVal(n.lineno,n.colno,e,t)}n=this.peekToken()}return e},parseExpression:function(){var e=this.parseInlineIf();return e},parseInlineIf:function(){var e=this.parseOr();if(this.skipSymbol("if")){var t=this.parseOr(),n=e;e=new r.InlineIf(e.lineno,e.colno),e.body=n,e.cond=t,this.skipSymbol("else")?e.else_=this.parseOr():e.else_=null}return e},parseOr:function(){for(var e=this.parseAnd();this.skipSymbol("or");){var t=this.parseAnd();e=new r.Or(e.lineno,e.colno,e,t)}return e},parseAnd:function(){for(var e=this.parseNot();this.skipSymbol("and");){var t=this.parseNot();e=new r.And(e.lineno,e.colno,e,t)}return e},parseNot:function(){var e=this.peekToken();return this.skipSymbol("not")?new r.Not(e.lineno,e.colno,this.parseNot()):this.parseIn()},parseIn:function(){for(var e=this.parseCompare();;){var t=this.nextToken();if(!t)break;var n=t.type===i.TOKEN_SYMBOL&&"not"===t.value;if(n||this.pushToken(t),!this.skipSymbol("in")){n&&this.pushToken(t);break}var s=this.parseCompare();e=new r.In(e.lineno,e.colno,e,s),n&&(e=new r.Not(e.lineno,e.colno,e))}return e},parseCompare:function(){for(var e=["==","===","!=","!==","<",">","<=",">="],t=this.parseConcat(),n=[];;){var i=this.nextToken();if(!i)break;if(-1===o.indexOf(e,i.value)){this.pushToken(i);break}n.push(new r.CompareOperand(i.lineno,i.colno,this.parseConcat(),i.value))}return n.length?new r.Compare(n[0].lineno,n[0].colno,t,n):t},parseConcat:function(){for(var e=this.parseAdd();this.skipValue(i.TOKEN_TILDE,"~");){var t=this.parseAdd();e=new r.Concat(e.lineno,e.colno,e,t)}return e},parseAdd:function(){for(var e=this.parseSub();this.skipValue(i.TOKEN_OPERATOR,"+");){var t=this.parseSub();e=new r.Add(e.lineno,e.colno,e,t)}return e},parseSub:function(){for(var e=this.parseMul();this.skipValue(i.TOKEN_OPERATOR,"-");){var t=this.parseMul();e=new r.Sub(e.lineno,e.colno,e,t)}return e},parseMul:function(){for(var e=this.parseDiv();this.skipValue(i.TOKEN_OPERATOR,"*");){var t=this.parseDiv();e=new r.Mul(e.lineno,e.colno,e,t)}return e},parseDiv:function(){for(var e=this.parseFloorDiv();this.skipValue(i.TOKEN_OPERATOR,"/");){var t=this.parseFloorDiv();e=new r.Div(e.lineno,e.colno,e,t)}return e},parseFloorDiv:function(){for(var e=this.parseMod();this.skipValue(i.TOKEN_OPERATOR,"//");){var t=this.parseMod();e=new r.FloorDiv(e.lineno,e.colno,e,t)}return e},parseMod:function(){for(var e=this.parsePow();this.skipValue(i.TOKEN_OPERATOR,"%");){var t=this.parsePow();e=new r.Mod(e.lineno,e.colno,e,t)}return e},parsePow:function(){for(var e=this.parseUnary();this.skipValue(i.TOKEN_OPERATOR,"**");){var t=this.parseUnary();e=new r.Pow(e.lineno,e.colno,e,t)}return e},parseUnary:function(e){var t,n=this.peekToken();return t=this.skipValue(i.TOKEN_OPERATOR,"-")?new r.Neg(n.lineno,n.colno,this.parseUnary(!0)):this.skipValue(i.TOKEN_OPERATOR,"+")?new r.Pos(n.lineno,n.colno,this.parseUnary(!0)):this.parsePrimary(),e||(t=this.parseFilter(t)),t},parsePrimary:function(e){var t,n=this.nextToken(),s=null;return n?n.type===i.TOKEN_STRING?t=n.value:n.type===i.TOKEN_INT?t=parseInt(n.value,10):n.type===i.TOKEN_FLOAT?t=parseFloat(n.value):n.type===i.TOKEN_BOOLEAN?"true"===n.value?t=!0:"false"===n.value?t=!1:this.fail("invalid boolean: "+n.value,n.lineno,n.colno):n.type===i.TOKEN_NONE?t=null:n.type===i.TOKEN_REGEX&&(t=new RegExp(n.value.body,n.value.flags)):this.fail("expected expression, got end of file"),void 0!==t?s=new r.Literal(n.lineno,n.colno,t):n.type===i.TOKEN_SYMBOL?(s=new r.Symbol(n.lineno,n.colno,n.value),e||(s=this.parsePostfix(s))):(this.pushToken(n),s=this.parseAggregate()),s?s:void this.fail("unexpected token: "+n.value,n.lineno,n.colno)},parseFilterName:function(){for(var e=this.expect(i.TOKEN_SYMBOL),t=e.value;this.skipValue(i.TOKEN_OPERATOR,".");)t+="."+this.expect(i.TOKEN_SYMBOL).value;return new r.Symbol(e.lineno,e.colno,t)},parseFilterArgs:function(e){if(this.peekToken().type===i.TOKEN_LEFT_PAREN){var t=this.parsePostfix(e);return t.args.children}return[]},parseFilter:function(e){for(;this.skip(i.TOKEN_PIPE);){var t=this.parseFilterName();e=new r.Filter(t.lineno,t.colno,t,new r.NodeList(t.lineno,t.colno,[e].concat(this.parseFilterArgs(e))))}return e},parseFilterStatement:function(){var e=this.peekToken();this.skipSymbol("filter")||this.fail("parseFilterStatement: expected filter");var t=this.parseFilterName(),n=this.parseFilterArgs(t);this.advanceAfterBlockEnd(e.value);var i=new r.Capture(t.lineno,t.colno,this.parseUntilBlocks("endfilter"));this.advanceAfterBlockEnd();var s=new r.Filter(t.lineno,t.colno,t,new r.NodeList(t.lineno,t.colno,[i].concat(n)));return new r.Output(t.lineno,t.colno,[s])},parseAggregate:function(){var e,t=this.nextToken();switch(t.type){case i.TOKEN_LEFT_PAREN:e=new r.Group(t.lineno,t.colno);break;case i.TOKEN_LEFT_BRACKET:e=new r.Array(t.lineno,t.colno);break;case i.TOKEN_LEFT_CURLY:e=new r.Dict(t.lineno,t.colno);break;default:return null}for(;;){var n=this.peekToken().type;if(n===i.TOKEN_RIGHT_PAREN||n===i.TOKEN_RIGHT_BRACKET||n===i.TOKEN_RIGHT_CURLY){this.nextToken();break}if(e.children.length>0&&(this.skip(i.TOKEN_COMMA)||this.fail("parseAggregate: expected comma after expression",t.lineno,t.colno)),e instanceof r.Dict){var s=this.parsePrimary();this.skip(i.TOKEN_COLON)||this.fail("parseAggregate: expected colon after dict key",t.lineno,t.colno);var o=this.parseExpression();e.addChild(new r.Pair(s.lineno,s.colno,s,o))}else{var a=this.parseExpression();e.addChild(a)}}return e},parseSignature:function(e,t){var n=this.peekToken();if(!t&&n.type!==i.TOKEN_LEFT_PAREN){if(e)return null;this.fail("expected arguments",n.lineno,n.colno)}n.type===i.TOKEN_LEFT_PAREN&&(n=this.nextToken());for(var s=new r.NodeList(n.lineno,n.colno),o=new r.KeywordArgs(n.lineno,n.colno),a=!1;;){if(n=this.peekToken(),!t&&n.type===i.TOKEN_RIGHT_PAREN){this.nextToken();break}if(t&&n.type===i.TOKEN_BLOCK_END)break;if(a&&!this.skip(i.TOKEN_COMMA))this.fail("parseSignature: expected comma after expression",n.lineno,n.colno);else{var l=this.parseExpression();this.skipValue(i.TOKEN_OPERATOR,"=")?o.addChild(new r.Pair(l.lineno,l.colno,l,this.parseExpression())):s.addChild(l)}a=!0}return o.children.length&&s.addChild(o),s},parseUntilBlocks:function(){var e=this.breakOnBlocks;this.breakOnBlocks=o.toArray(arguments);var t=this.parse();return this.breakOnBlocks=e,t},parseNodes:function(){for(var e,t=[];e=this.nextToken();)if(e.type===i.TOKEN_DATA){var n=e.value,s=this.peekToken(),o=s&&s.value;this.dropLeadingWhitespace&&(n=n.replace(/^\s*/,""),this.dropLeadingWhitespace=!1),s&&(s.type===i.TOKEN_BLOCK_START&&"-"===o.charAt(o.length-1)||s.type===i.TOKEN_VARIABLE_START&&"-"===o.charAt(this.tokens.tags.VARIABLE_START.length)||s.type===i.TOKEN_COMMENT&&"-"===o.charAt(this.tokens.tags.COMMENT_START.length))&&(n=n.replace(/\s*$/,"")),t.push(new r.Output(e.lineno,e.colno,[new r.TemplateData(e.lineno,e.colno,n)]))}else if(e.type===i.TOKEN_BLOCK_START){this.dropLeadingWhitespace=!1;var a=this.parseStatement();if(!a)break;t.push(a)}else if(e.type===i.TOKEN_VARIABLE_START){var l=this.parseExpression();this.dropLeadingWhitespace=!1,this.advanceAfterVariableEnd(),t.push(new r.Output(e.lineno,e.colno,[l]))}else e.type===i.TOKEN_COMMENT?this.dropLeadingWhitespace="-"===e.value.charAt(e.value.length-this.tokens.tags.COMMENT_END.length-1):this.fail("Unexpected token at top-level: "+e.type,e.lineno,e.colno);return t},parse:function(){return new r.NodeList(0,0,this.parseNodes())},parseAsRoot:function(){return new r.Root(0,0,this.parseNodes())}});e.exports={parse:function(e,t,n){var r=new a(i.lex(e,n));return void 0!==t&&(r.extensions=t),r.parseAsRoot()}}},function(e,t,n){"use strict";function i(e,t,n,i){return{type:e,value:t,lineno:n,colno:i}}function r(e,t){this.str=e,this.index=0,this.len=e.length,this.lineno=0,this.colno=0,this.in_code=!1,t=t||{};var n=t.tags||{};this.tags={BLOCK_START:n.blockStart||c,BLOCK_END:n.blockEnd||h,VARIABLE_START:n.variableStart||u,VARIABLE_END:n.variableEnd||p,COMMENT_START:n.commentStart||f,COMMENT_END:n.commentEnd||m},this.trimBlocks=!!t.trimBlocks,this.lstripBlocks=!!t.lstripBlocks}var s=n(1),o=" \n	\r ",a="()[]{}%*-+~/#,:|.<>=!",l="0123456789",c="{%",h="%}",u="{{",p="}}",f="{#",m="#}",d="string",v="whitespace",g="data",y="block-start",k="block-end",x="variable-start",b="variable-end",E="comment",w="left-paren",T="right-paren",L="left-bracket",_="right-bracket",A="left-curly",O="right-curly",S="operator",N="comma",C="colon",B="tilde",F="pipe",I="int",R="float",K="boolean",M="none",P="symbol",D="special",j="regex";r.prototype.nextToken=function(){var e,t=this.lineno,n=this.colno;if(this.in_code){var r=this.current();if(this.is_finished())return null;if('"'===r||"'"===r)return i(d,this.parseString(r),t,n);if(e=this._extract(o))return i(v,e,t,n);if((e=this._extractString(this.tags.BLOCK_END))||(e=this._extractString("-"+this.tags.BLOCK_END)))return this.in_code=!1,this.trimBlocks&&(r=this.current(),"\n"===r?this.forward():"\r"===r&&(this.forward(),r=this.current(),"\n"===r?this.forward():this.back())),i(k,e,t,n);if((e=this._extractString(this.tags.VARIABLE_END))||(e=this._extractString("-"+this.tags.VARIABLE_END)))return this.in_code=!1,i(b,e,t,n);if("r"===r&&"/"===this.str.charAt(this.index+1)){this.forwardN(2);for(var c="";!this.is_finished();){if("/"===this.current()&&"\\"!==this.previous()){this.forward();break}c+=this.current(),this.forward()}for(var h=["g","i","m","y"],u="";!this.is_finished();){var p=-1!==h.indexOf(this.current());if(!p)break;u+=this.current(),this.forward()}return i(j,{body:c,flags:u},t,n)}if(-1!==a.indexOf(r)){this.forward();var f,m=["==","===","!=","!==","<=",">=","//","**"],D=r+this.current();switch(-1!==s.indexOf(m,D)&&(this.forward(),r=D,-1!==s.indexOf(m,D+this.current())&&(r=D+this.current(),this.forward())),r){case"(":f=w;break;case")":f=T;break;case"[":f=L;break;case"]":f=_;break;case"{":f=A;break;case"}":f=O;break;case",":f=N;break;case":":f=C;break;case"~":f=B;break;case"|":f=F;break;default:f=S}return i(f,r,t,n)}if(e=this._extractUntil(o+a),e.match(/^[-+]?[0-9]+$/)){if("."===this.current()){this.forward();var V=this._extract(l);return i(R,e+"."+V,t,n)}return i(I,e,t,n)}if(e.match(/^(true|false)$/))return i(K,e,t,n);if("none"===e)return i(M,e,t,n);if(e)return i(P,e,t,n);throw new Error("Unexpected value while parsing: "+e)}var U=this.tags.BLOCK_START.charAt(0)+this.tags.VARIABLE_START.charAt(0)+this.tags.COMMENT_START.charAt(0)+this.tags.COMMENT_END.charAt(0);if(this.is_finished())return null;if((e=this._extractString(this.tags.BLOCK_START+"-"))||(e=this._extractString(this.tags.BLOCK_START)))return this.in_code=!0,i(y,e,t,n);if((e=this._extractString(this.tags.VARIABLE_START+"-"))||(e=this._extractString(this.tags.VARIABLE_START)))return this.in_code=!0,i(x,e,t,n);e="";var W,G=!1;for(this._matches(this.tags.COMMENT_START)&&(G=!0,e=this._extractString(this.tags.COMMENT_START));null!==(W=this._extractUntil(U));){if(e+=W,(this._matches(this.tags.BLOCK_START)||this._matches(this.tags.VARIABLE_START)||this._matches(this.tags.COMMENT_START))&&!G){if(this.lstripBlocks&&this._matches(this.tags.BLOCK_START)&&this.colno>0&&this.colno<=e.length){var Y=e.slice(-this.colno);if(/^\s+$/.test(Y)&&(e=e.slice(0,-this.colno),!e.length))return this.nextToken()}break}if(this._matches(this.tags.COMMENT_END)){if(!G)throw new Error("unexpected end of comment");e+=this._extractString(this.tags.COMMENT_END);break}e+=this.current(),this.forward()}if(null===W&&G)throw new Error("expected end of comment, got end of file");return i(G?E:g,e,t,n)},r.prototype.parseString=function(e){this.forward();for(var t="";!this.is_finished()&&this.current()!==e;){var n=this.current();if("\\"===n){switch(this.forward(),this.current()){case"n":t+="\n";break;case"t":t+="	";break;case"r":t+="\r";break;default:t+=this.current()}this.forward()}else t+=n,this.forward()}return this.forward(),t},r.prototype._matches=function(e){if(this.index+e.length>this.len)return null;var t=this.str.slice(this.index,this.index+e.length);return t===e},r.prototype._extractString=function(e){return this._matches(e)?(this.index+=e.length,e):null},r.prototype._extractUntil=function(e){return this._extractMatching(!0,e||"")},r.prototype._extract=function(e){return this._extractMatching(!1,e)},r.prototype._extractMatching=function(e,t){if(this.is_finished())return null;var n=t.indexOf(this.current());if(e&&-1===n||!e&&-1!==n){var i=this.current();this.forward();for(var r=t.indexOf(this.current());(e&&-1===r||!e&&-1!==r)&&!this.is_finished();)i+=this.current(),this.forward(),r=t.indexOf(this.current());return i}return""},r.prototype._extractRegex=function(e){var t=this.currentStr().match(e);return t?(this.forwardN(t[0].length),t):null},r.prototype.is_finished=function(){return this.index>=this.len},r.prototype.forwardN=function(e){for(var t=0;e>t;t++)this.forward()},r.prototype.forward=function(){this.index++,"\n"===this.previous()?(this.lineno++,this.colno=0):this.colno++},r.prototype.backN=function(e){for(var t=0;e>t;t++)this.back()},r.prototype.back=function(){if(this.index--,"\n"===this.current()){this.lineno--;var e=this.src.lastIndexOf("\n",this.index-1);-1===e?this.colno=this.index:this.colno=this.index-e}else this.colno--},r.prototype.current=function(){return this.is_finished()?"":this.str.charAt(this.index)},r.prototype.currentStr=function(){return this.is_finished()?"":this.str.substr(this.index)},r.prototype.previous=function(){return this.str.charAt(this.index-1)},e.exports={lex:function(e,t){return new r(e,t)},TOKEN_STRING:d,TOKEN_WHITESPACE:v,TOKEN_DATA:g,TOKEN_BLOCK_START:y,TOKEN_BLOCK_END:k,TOKEN_VARIABLE_START:x,TOKEN_VARIABLE_END:b,TOKEN_COMMENT:E,TOKEN_LEFT_PAREN:w,TOKEN_RIGHT_PAREN:T,TOKEN_LEFT_BRACKET:L,TOKEN_RIGHT_BRACKET:_,TOKEN_LEFT_CURLY:A,TOKEN_RIGHT_CURLY:O,TOKEN_OPERATOR:S,TOKEN_COMMA:N,TOKEN_COLON:C,TOKEN_TILDE:B,TOKEN_PIPE:F,TOKEN_INT:I,TOKEN_FLOAT:R,TOKEN_BOOLEAN:K,TOKEN_NONE:M,TOKEN_SYMBOL:P,TOKEN_SPECIAL:D,TOKEN_REGEX:j}},function(e,t,n){(function(t){"use strict";function i(e,t,n){e instanceof t&&n.push(e),e instanceof a&&e.findAll(t,n)}function r(e,n){function i(e,n,i){for(var r=e.split("\n"),s=0;s<r.length;s++){if(r[s]&&(i&&s>0||!i))for(var o=0;n>o;o++)t.stdout.write(" ");s===r.length-1?t.stdout.write(r[s]):t.stdout.write(r[s]+"\n")}}if(n=n||0,i(e.typename+": ",n),e instanceof c)i("\n"),s.each(e.children,function(e){r(e,n+2)});else if(e instanceof se)i(e.extName+"."+e.prop),i("\n"),e.args&&r(e.args,n+2),e.contentArgs&&s.each(e.contentArgs,function(e){r(e,n+2)});else{var o=null,l=null;if(e.iterFields(function(e,t){e instanceof a?(o=o||{},o[t]=e):(l=l||{},l[t]=e)}),l?i(JSON.stringify(l,null,2)+"\n",null,!0):i("\n"),o)for(var h in o)r(o[h],n+2)}}var s=n(1),o=n(6),a=o.extend("Node",{init:function(e,t){this.lineno=e,this.colno=t;for(var n=this.fields,i=0,r=n.length;r>i;i++){var s=n[i],o=arguments[i+2];void 0===o&&(o=null),this[s]=o}},findAll:function(e,t){t=t||[];var n,r;if(this instanceof c){var s=this.children;for(n=0,r=s.length;r>n;n++)i(s[n],e,t)}else{var o=this.fields;for(n=0,r=o.length;r>n;n++)i(this[o[n]],e,t)}return t},iterFields:function(e){s.each(this.fields,function(t){e(this[t],t)},this)}}),l=a.extend("Value",{fields:["value"]}),c=a.extend("NodeList",{fields:["children"],init:function(e,t,n){this.parent(e,t,n||[])},addChild:function(e){this.children.push(e)}}),h=c.extend("Root"),u=l.extend("Literal"),p=l.extend("Symbol"),f=c.extend("Group"),m=c.extend("Array"),d=a.extend("Pair",{fields:["key","value"]}),v=c.extend("Dict"),g=a.extend("LookupVal",{fields:["target","val"]}),y=a.extend("If",{fields:["cond","body","else_"]}),k=y.extend("IfAsync"),x=a.extend("InlineIf",{fields:["cond","body","else_"]}),b=a.extend("For",{fields:["arr","name","body","else_"]}),E=b.extend("AsyncEach"),w=b.extend("AsyncAll"),T=a.extend("Macro",{fields:["name","args","body"]}),L=T.extend("Caller"),_=a.extend("Import",{fields:["template","target","withContext"]}),A=a.extend("FromImport",{fields:["template","names","withContext"],init:function(e,t,n,i,r){this.parent(e,t,n,i||new c,r)}}),O=a.extend("FunCall",{fields:["name","args"]}),S=O.extend("Filter"),N=S.extend("FilterAsync",{fields:["name","args","symbol"]}),C=v.extend("KeywordArgs"),B=a.extend("Block",{fields:["name","body"]}),F=a.extend("Super",{fields:["blockName","symbol"]}),I=a.extend("TemplateRef",{fields:["template"]}),R=I.extend("Extends"),K=a.extend("Include",{fields:["template","ignoreMissing"]}),M=a.extend("Set",{fields:["targets","value"]}),P=c.extend("Output"),D=a.extend("Capture",{fields:["body"]}),j=u.extend("TemplateData"),V=a.extend("UnaryOp",{fields:["target"]}),U=a.extend("BinOp",{fields:["left","right"]}),W=U.extend("In"),G=U.extend("Or"),Y=U.extend("And"),H=V.extend("Not"),$=U.extend("Add"),z=U.extend("Concat"),X=U.extend("Sub"),q=U.extend("Mul"),J=U.extend("Div"),Q=U.extend("FloorDiv"),Z=U.extend("Mod"),ee=U.extend("Pow"),te=V.extend("Neg"),ne=V.extend("Pos"),ie=a.extend("Compare",{fields:["expr","ops"]}),re=a.extend("CompareOperand",{fields:["expr","type"]}),se=a.extend("CallExtension",{fields:["extName","prop","args","contentArgs"],init:function(e,t,n,i){this.extName=e._name||e,this.prop=t,this.args=n||new c,this.contentArgs=i||[],this.autoescape=e.autoescape}}),oe=se.extend("CallExtensionAsync");e.exports={Node:a,Root:h,NodeList:c,Value:l,Literal:u,Symbol:p,Group:f,Array:m,Pair:d,Dict:v,Output:P,Capture:D,TemplateData:j,If:y,IfAsync:k,InlineIf:x,For:b,AsyncEach:E,AsyncAll:w,Macro:T,Caller:L,Import:_,FromImport:A,FunCall:O,Filter:S,FilterAsync:N,KeywordArgs:C,Block:B,Super:F,Extends:R,Include:K,Set:M,LookupVal:g,BinOp:U,In:W,Or:G,And:Y,Not:H,Add:$,Concat:z,Sub:X,Mul:q,Div:J,FloorDiv:Q,Mod:Z,Pow:ee,Neg:te,Pos:ne,Compare:ie,CompareOperand:re,CallExtension:se,CallExtensionAsync:oe,printNodes:r}}).call(t,n(3))},function(e,t,n){"use strict";function i(){return"hole_"+d++}function r(e,t){for(var n=null,i=0;i<e.length;i++){var r=t(e[i]);r!==e[i]&&(n||(n=e.slice()),n[i]=r)}return n||e}function s(e,t,n){if(!(e instanceof f.Node))return e;if(!n){var i=t(e);if(i&&i!==e)return i}if(e instanceof f.NodeList){var o=r(e.children,function(e){return s(e,t,n)});o!==e.children&&(e=new f[e.typename](e.lineno,e.colno,o))}else if(e instanceof f.CallExtension){var a=s(e.args,t,n),l=r(e.contentArgs,function(e){return s(e,t,n)});(a!==e.args||l!==e.contentArgs)&&(e=new f[e.typename](e.extName,e.prop,a,l))}else{var c=e.fields.map(function(t){return e[t]}),h=r(c,function(e){return s(e,t,n)});h!==c&&(e=new f[e.typename](e.lineno,e.colno),h.forEach(function(t,n){e[e.fields[n]]=t}))}return n?t(e)||e:e}function o(e,t){return s(e,t,!0)}function a(e,t,n){var r=[],s=o(n?e[n]:e,function(e){if(e instanceof f.Block)return e;if(e instanceof f.Filter&&-1!==m.indexOf(t,e.name.value)||e instanceof f.CallExtensionAsync){var n=new f.Symbol(e.lineno,e.colno,i());return r.push(new f.FilterAsync(e.lineno,e.colno,e.name,e.args,n)),n}});return n?e[n]=s:e=s,r.length?(r.push(e),new f.NodeList(e.lineno,e.colno,r)):e}function l(e,t){return o(e,function(e){return e instanceof f.Output?a(e,t):e instanceof f.Set?a(e,t,"value"):e instanceof f.For?a(e,t,"arr"):e instanceof f.If?a(e,t,"cond"):e instanceof f.CallExtension?a(e,t,"args"):void 0})}function c(e){return s(e,function(e){if(e instanceof f.Block){var t=!1,n=i();e.body=s(e.body,function(e){return e instanceof f.FunCall&&"super"===e.name.value?(t=!0,new f.Symbol(e.lineno,e.colno,n)):void 0}),t&&e.body.children.unshift(new f.Super(0,0,e.name,new f.Symbol(0,0,n)))}})}function h(e){return o(e,function(e){if(e instanceof f.If||e instanceof f.For){var t=!1;if(s(e,function(e){return e instanceof f.FilterAsync||e instanceof f.IfAsync||e instanceof f.AsyncEach||e instanceof f.AsyncAll||e instanceof f.CallExtensionAsync?(t=!0,e):void 0}),t){if(e instanceof f.If)return new f.IfAsync(e.lineno,e.colno,e.cond,e.body,e.else_);if(e instanceof f.For)return new f.AsyncEach(e.lineno,e.colno,e.arr,e.name,e.body,e.else_)}}})}function u(e,t){return h(c(l(e,t)))}function p(e,t){return u(e,t||[])}var f=n(10),m=n(1),d=0;e.exports={transform:p}},function(e,t,n){"use strict";function i(e,t,n){return function(){var i,r,a=o(arguments),l=s(arguments);if(a>e.length){i=Array.prototype.slice.call(arguments,0,e.length);var c=Array.prototype.slice.call(arguments,i.length,a);for(r=0;r<c.length;r++)r<t.length&&(l[t[r]]=c[r]);i.push(l)}else if(a<e.length){for(i=Array.prototype.slice.call(arguments,0,a),r=a;r<e.length;r++){var h=e[r];i.push(l[h]),delete l[h]}i.push(l)}else i=arguments;return n.apply(this,i)}}function r(e){return e.__keywords=!0,e}function s(e){var t=e.length;if(t){var n=e[t-1];if(n&&n.hasOwnProperty("__keywords"))return n}return{}}function o(e){var t=e.length;if(0===t)return 0;var n=e[t-1];return n&&n.hasOwnProperty("__keywords")?t-1:t}function a(e){return"string"!=typeof e?e:(this.val=e,void(this.length=e.length))}function l(e,t){return e instanceof a?new a(t):t.toString()}function c(e){var t=typeof e;return"string"===t?new a(e):"function"!==t?e:function(){var t=e.apply(this,arguments);return"string"==typeof t?new a(t):t}}function h(e,t){return e=void 0!==e&&null!==e?e:"",!t||e instanceof a||(e=y.escape(e.toString())),e}function u(e,t,n){if(null===e||void 0===e)throw new y.TemplateError("attempted to output null or undefined value",t+1,n+1);return e}function p(e,t){return e=e||{},"function"==typeof e[t]?function(){return e[t].apply(e,arguments)}:e[t]}function f(e,t,n,i){if(!e)throw new Error("Unable to call `"+t+"`, which is undefined or falsey");if("function"!=typeof e)throw new Error("Unable to call `"+t+"`, which is not a function");return e.apply(n,i)}function m(e,t,n){var i=t.lookup(n);return void 0!==i?i:e.lookup(n)}function d(e,t,n){return e.lineno?e:new y.TemplateError(e,t,n)}function v(e,t,n,i){if(y.isArray(e)){var r=e.length;y.asyncIter(e,function(e,i,s){switch(t){case 1:n(e,i,r,s);break;case 2:n(e[0],e[1],i,r,s);break;case 3:n(e[0],e[1],e[2],i,r,s);break;default:e.push(i,s),n.apply(this,e)}},i)}else y.asyncFor(e,function(e,t,i,r,s){n(e,t,i,r,s)},i)}function g(e,t,n,i){function r(e,t){l++,a[e]=t,l===s&&i(null,a.join(""))}var s,o,a,l=0;if(y.isArray(e))if(s=e.length,a=new Array(s),0===s)i(null,"");else for(o=0;o<e.length;o++){var c=e[o];switch(t){case 1:n(c,o,s,r);break;case 2:n(c[0],c[1],o,s,r);break;case 3:n(c[0],c[1],c[2],o,s,r);break;default:c.push(o,r),n.apply(this,c)}}else{var h=y.keys(e);if(s=h.length,a=new Array(s),0===s)i(null,"");else for(o=0;o<h.length;o++){var u=h[o];n(u,e[u],o,s,r)}}}var y=n(1),k=n(6),x=k.extend({init:function(e,t){this.variables={},this.parent=e,this.topLevel=!1,this.isolateWrites=t},set:function(e,t,n){var i=e.split("."),r=this.variables,s=this;if(n&&(s=this.resolve(i[0],!0)))return void s.set(e,t);for(var o=0;o<i.length-1;o++){var a=i[o];r[a]||(r[a]={}),r=r[a]}r[i[i.length-1]]=t},get:function(e){var t=this.variables[e];return void 0!==t?t:null},lookup:function(e){var t=this.parent,n=this.variables[e];return void 0!==n?n:t&&t.lookup(e)},resolve:function(e,t){var n=t&&this.isolateWrites?void 0:this.parent,i=this.variables[e];return void 0!==i?this:n&&n.resolve(e)},push:function(e){return new x(this,e)},pop:function(){return this.parent}});a.prototype=Object.create(String.prototype,{length:{writable:!0,configurable:!0,value:0}}),a.prototype.valueOf=function(){return this.val},a.prototype.toString=function(){return this.val},e.exports={Frame:x,makeMacro:i,makeKeywordArgs:r,numArgs:o,suppressValue:h,ensureDefined:u,memberLookup:p,contextOrFrameLookup:m,callWrap:f,handleError:d,isArray:y.isArray,keys:y.keys,SafeString:a,copySafeness:l,markSafe:c,asyncEach:v,asyncAll:g,inOperator:y.inOperator}},function(e,t,n){"use strict";function i(e,t){
return null===e||void 0===e||e===!1?t:e}var r=n(1),s=n(12),o={abs:function(e){return Math.abs(e)},batch:function(e,t,n){var i,r=[],s=[];for(i=0;i<e.length;i++)i%t===0&&s.length&&(r.push(s),s=[]),s.push(e[i]);if(s.length){if(n)for(i=s.length;t>i;i++)s.push(n);r.push(s)}return r},capitalize:function(e){e=i(e,"");var t=e.toLowerCase();return s.copySafeness(e,t.charAt(0).toUpperCase()+t.slice(1))},center:function(e,t){if(e=i(e,""),t=t||80,e.length>=t)return e;var n=t-e.length,o=r.repeat(" ",n/2-n%2),a=r.repeat(" ",n/2);return s.copySafeness(e,o+e+a)},"default":function(e,t,n){return n?e?e:t:void 0!==e?e:t},dictsort:function(e,t,n){if(!r.isObject(e))throw new r.TemplateError("dictsort filter: val must be an object");var i=[];for(var s in e)i.push([s,e[s]]);var o;if(void 0===n||"key"===n)o=0;else{if("value"!==n)throw new r.TemplateError("dictsort filter: You can only sort by either key or value");o=1}return i.sort(function(e,n){var i=e[o],s=n[o];return t||(r.isString(i)&&(i=i.toUpperCase()),r.isString(s)&&(s=s.toUpperCase())),i>s?1:i===s?0:-1}),i},dump:function(e,t){return JSON.stringify(e,null,t)},escape:function(e){return e instanceof s.SafeString?e:(e=null===e||void 0===e?"":e,s.markSafe(r.escape(e.toString())))},safe:function(e){return e instanceof s.SafeString?e:(e=null===e||void 0===e?"":e,s.markSafe(e.toString()))},first:function(e){return e[0]},groupby:function(e,t){return r.groupBy(e,t)},indent:function(e,t,n){if(e=i(e,""),""===e)return"";t=t||4;for(var o="",a=e.split("\n"),l=r.repeat(" ",t),c=0;c<a.length;c++)o+=0!==c||n?l+a[c]+"\n":a[c]+"\n";return s.copySafeness(e,o)},join:function(e,t,n){return t=t||"",n&&(e=r.map(e,function(e){return e[n]})),e.join(t)},last:function(e){return e[e.length-1]},length:function(e){var t=i(e,"");return void 0!==t?"function"==typeof Map&&t instanceof Map||"function"==typeof Set&&t instanceof Set?t.size:!r.isObject(t)||t instanceof s.SafeString?t.length:Object.keys(t).length:0},list:function(e){if(r.isString(e))return e.split("");if(r.isObject(e)){var t=[];if(Object.keys)t=Object.keys(e);else for(var n in e)t.push(n);return r.map(t,function(t){return{key:t,value:e[t]}})}if(r.isArray(e))return e;throw new r.TemplateError("list filter: type not iterable")},lower:function(e){return e=i(e,""),e.toLowerCase()},nl2br:function(e){return null===e||void 0===e?"":s.copySafeness(e,e.replace(/\r\n|\n/g,"<br />\n"))},random:function(e){return e[Math.floor(Math.random()*e.length)]},rejectattr:function(e,t){return e.filter(function(e){return!e[t]})},selectattr:function(e,t){return e.filter(function(e){return!!e[t]})},replace:function(e,t,n,i){var r=e;if(t instanceof RegExp)return e.replace(t,n);"undefined"==typeof i&&(i=-1);var o="";if("number"==typeof t)t+="";else if("string"!=typeof t)return e;if("number"==typeof e&&(e+=""),"string"!=typeof e&&!(e instanceof s.SafeString))return e;if(""===t)return o=n+e.split("").join(n)+n,s.copySafeness(e,o);var a=e.indexOf(t);if(0===i||-1===a)return e;for(var l=0,c=0;a>-1&&(-1===i||i>c);)o+=e.substring(l,a)+n,l=a+t.length,c++,a=e.indexOf(t,l);return l<e.length&&(o+=e.substring(l)),s.copySafeness(r,o)},reverse:function(e){var t;return t=r.isString(e)?o.list(e):r.map(e,function(e){return e}),t.reverse(),r.isString(e)?s.copySafeness(e,t.join("")):t},round:function(e,t,n){t=t||0;var i,r=Math.pow(10,t);return i="ceil"===n?Math.ceil:"floor"===n?Math.floor:Math.round,i(e*r)/r},slice:function(e,t,n){for(var i=Math.floor(e.length/t),r=e.length%t,s=0,o=[],a=0;t>a;a++){var l=s+a*i;r>a&&s++;var c=s+(a+1)*i,h=e.slice(l,c);n&&a>=r&&h.push(n),o.push(h)}return o},sum:function(e,t,n){var i=0;"number"==typeof n&&(i+=n),t&&(e=r.map(e,function(e){return e[t]}));for(var s=0;s<e.length;s++)i+=e[s];return i},sort:s.makeMacro(["value","reverse","case_sensitive","attribute"],[],function(e,t,n,i){return e=r.map(e,function(e){return e}),e.sort(function(e,s){var o,a;return i?(o=e[i],a=s[i]):(o=e,a=s),!n&&r.isString(o)&&r.isString(a)&&(o=o.toLowerCase(),a=a.toLowerCase()),a>o?t?1:-1:o>a?t?-1:1:0}),e}),string:function(e){return s.copySafeness(e,e)},striptags:function(e,t){e=i(e,""),t=t||!1;var n=/<\/?([a-z][a-z0-9]*)\b[^>]*>|<!--[\s\S]*?-->/gi,r=o.trim(e.replace(n,"")),a="";return a=t?r.replace(/^ +| +$/gm,"").replace(/ +/g," ").replace(/(\r\n)/g,"\n").replace(/\n\n\n+/g,"\n\n"):r.replace(/\s+/gi," "),s.copySafeness(e,a)},title:function(e){e=i(e,"");for(var t=e.split(" "),n=0;n<t.length;n++)t[n]=o.capitalize(t[n]);return s.copySafeness(e,t.join(" "))},trim:function(e){return s.copySafeness(e,e.replace(/^\s*|\s*$/g,""))},truncate:function(e,t,n,r){var o=e;if(e=i(e,""),t=t||255,e.length<=t)return e;if(n)e=e.substring(0,t);else{var a=e.lastIndexOf(" ",t);-1===a&&(a=t),e=e.substring(0,a)}return e+=void 0!==r&&null!==r?r:"...",s.copySafeness(o,e)},upper:function(e){return e=i(e,""),e.toUpperCase()},urlencode:function(e){var t=encodeURIComponent;if(r.isString(e))return t(e);var n;if(r.isArray(e))n=e.map(function(e){return t(e[0])+"="+t(e[1])});else{n=[];for(var i in e)e.hasOwnProperty(i)&&n.push(t(i)+"="+t(e[i]))}return n.join("&")},urlize:function(e,t,n){isNaN(t)&&(t=1/0);var i=n===!0?' rel="nofollow"':"",r=/^(?:\(|<|&lt;)?(.*?)(?:\.|,|\)|\n|&gt;)?$/,s=/^[\w.!#$%&'*+\-\/=?\^`{|}~]+@[a-z\d\-]+(\.[a-z\d\-]+)+$/i,o=/^https?:\/\/.*$/,a=/^www\./,l=/\.(?:org|net|com)(?:\:|\/|$)/,c=e.split(/(\s+)/).filter(function(e){return e&&e.length}).map(function(e){var n=e.match(r),c=n&&n[1]||e;return o.test(c)?'<a href="'+c+'"'+i+">"+c.substr(0,t)+"</a>":a.test(c)?'<a href="http://'+c+'"'+i+">"+c.substr(0,t)+"</a>":s.test(c)?'<a href="mailto:'+c+'">'+c+"</a>":l.test(c)?'<a href="http://'+c+'"'+i+">"+c.substr(0,t)+"</a>":e});return c.join("")},wordcount:function(e){e=i(e,"");var t=e?e.match(/\w+/g):null;return t?t.length:null},"float":function(e,t){var n=parseFloat(e);return isNaN(n)?t:n},"int":function(e,t){var n=parseInt(e,10);return isNaN(n)?t:n}};o.d=o["default"],o.e=o.escape,e.exports=o},function(e,t,n){"use strict";var i=n(15),r=n(16),s=i.extend({init:function(e,t){this.baseURL=e||".",t=t||{},this.useCache=!!t.useCache,this.async=!!t.async},resolve:function(e,t){throw new Error("relative templates not support in the browser yet")},getSource:function(e,t){var n,i=this.useCache;return this.fetch(this.baseURL+"/"+e,function(r,s){if(r)if(t)t(r.content);else{if(404!==r.status)throw r.content;n=null}else n={src:s,path:e,noCache:!i},t&&t(null,n)}),n},fetch:function(e,t){var n,i=!0;window.XMLHttpRequest?n=new XMLHttpRequest:window.ActiveXObject&&(n=new ActiveXObject("Microsoft.XMLHTTP")),n.onreadystatechange=function(){4===n.readyState&&i&&(i=!1,0===n.status||200===n.status?t(null,n.responseText):t({status:n.status,content:n.responseText}))},e+=(-1===e.indexOf("?")?"?":"&")+"s="+(new Date).getTime(),n.open("GET",e,this.async),n.send()}});e.exports={WebLoader:s,PrecompiledLoader:r}},function(e,t,n){"use strict";var i=n(3),r=n(6),s=n(1),o=r.extend({on:function(e,t){this.listeners=this.listeners||{},this.listeners[e]=this.listeners[e]||[],this.listeners[e].push(t)},emit:function(e){var t=Array.prototype.slice.call(arguments,1);this.listeners&&this.listeners[e]&&s.each(this.listeners[e],function(e){e.apply(null,t)})},resolve:function(e,t){return i.resolve(i.dirname(e),t)},isRelative:function(e){return 0===e.indexOf("./")||0===e.indexOf("../")}});e.exports=o},function(e,t,n){"use strict";var i=n(15),r=i.extend({init:function(e){this.precompiled=e||{}},getSource:function(e){return this.precompiled[e]?{src:{type:"code",obj:this.precompiled[e]},path:e}:null}});e.exports=r},function(e,t){"use strict";function n(e){var t=-1;return{current:null,reset:function(){t=-1,this.current=null},next:function(){return t++,t>=e.length&&(t=0),this.current=e[t],this.current}}}function i(e){e=e||",";var t=!0;return function(){var n=t?"":e;return t=!1,n}}function r(){return{range:function(e,t,n){"undefined"==typeof t?(t=e,e=0,n=1):n||(n=1);var i,r=[];if(n>0)for(i=e;t>i;i+=n)r.push(i);else for(i=e;i>t;i+=n)r.push(i);return r},cycler:function(){return n(Array.prototype.slice.call(arguments))},joiner:function(e){return i(e)}}}e.exports=r},function(e,t,n){var i,r;(function(n,s){!function(o){"use strict";var a=function(){var e=Array.prototype.slice.call(arguments);"function"==typeof e[0]&&e[0].apply(null,e.splice(1))},l=function(e){"function"==typeof n?n(e):"undefined"!=typeof s&&s.nextTick?s.nextTick(e):setTimeout(e,0)},c=function(e){var t=function(n){var i=function(){return e.length&&e[n].apply(null,arguments),i.next()};return i.next=function(){return n<e.length-1?t(n+1):null},i};return t(0)},h=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},u=function(e,t,n){var i=n?l:a;if(t=t||function(){},!h(e)){var r=new Error("First argument to waterfall must be an array of functions");return t(r)}if(!e.length)return t();var s=function(e){return function(n){if(n)t.apply(null,arguments),t=function(){};else{var r=Array.prototype.slice.call(arguments,1),o=e.next();o?r.push(s(o)):r.push(t),i(function(){e.apply(null,r)})}}};s(c(e))()};i=[],r=function(){return u}.apply(t,i),!(void 0!==r&&(e.exports=r))}(this)}).call(t,n(19).setImmediate,n(3))},function(e,t,n){(function(e,i){function r(e,t){this._id=e,this._clearFn=t}var s=n(20).nextTick,o=Function.prototype.apply,a=Array.prototype.slice,l={},c=0;t.setTimeout=function(){return new r(o.call(setTimeout,window,arguments),clearTimeout)},t.setInterval=function(){return new r(o.call(setInterval,window,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e.close()},r.prototype.unref=r.prototype.ref=function(){},r.prototype.close=function(){this._clearFn.call(window,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},t.setImmediate="function"==typeof e?e:function(e){var n=c++,i=arguments.length<2?!1:a.call(arguments,1);return l[n]=!0,s(function(){l[n]&&(i?e.apply(null,i):e.call(null),t.clearImmediate(n))}),n},t.clearImmediate="function"==typeof i?i:function(e){delete l[e]}}).call(t,n(19).setImmediate,n(19).clearImmediate)},function(e,t){function n(){c=!1,o.length?l=o.concat(l):h=-1,l.length&&i()}function i(){if(!c){var e=setTimeout(n);c=!0;for(var t=l.length;t;){for(o=l,l=[];++h<t;)o&&o[h].run();h=-1,t=l.length}o=null,c=!1,clearTimeout(e)}}function r(e,t){this.fun=e,this.array=t}function s(){}var o,a=e.exports={},l=[],c=!1,h=-1;a.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];l.push(new r(e,t)),1!==l.length||c||setTimeout(i,0)},r.prototype.run=function(){this.fun.apply(null,this.array)},a.title="browser",a.browser=!0,a.env={},a.argv=[],a.version="",a.versions={},a.on=s,a.addListener=s,a.once=s,a.off=s,a.removeListener=s,a.removeAllListeners=s,a.emit=s,a.binding=function(e){throw new Error("process.binding is not supported")},a.cwd=function(){return"/"},a.chdir=function(e){throw new Error("process.chdir is not supported")},a.umask=function(){return 0}},function(e,t){function n(){"use strict";var e=this.runtime,t=this.lib,n=e.contextOrFrameLookup;e.contextOrFrameLookup=function(e,t,i){var r=n.apply(this,arguments);if(void 0===r)switch(i){case"True":return!0;case"False":return!1;case"None":return null}return r};var i=e.memberLookup,r={pop:function(e){if(void 0===e)return this.pop();if(e>=this.length||0>e)throw new Error("KeyError");return this.splice(e,1)},append:function(e){return this.push(e)},remove:function(e){for(var t=0;t<this.length;t++)if(this[t]===e)return this.splice(t,1);throw new Error("ValueError")},count:function(e){for(var t=0,n=0;n<this.length;n++)this[n]===e&&t++;return t},index:function(e){var t;if(-1===(t=this.indexOf(e)))throw new Error("ValueError");return t},find:function(e){return this.indexOf(e)},insert:function(e,t){return this.splice(e,0,t)}},s={items:function(){var e=[];for(var t in this)e.push([t,this[t]]);return e},values:function(){var e=[];for(var t in this)e.push(this[t]);return e},keys:function(){var e=[];for(var t in this)e.push(t);return e},get:function(e,t){var n=this[e];return void 0===n&&(n=t),n},has_key:function(e){return this.hasOwnProperty(e)},pop:function(e,t){var n=this[e];if(void 0===n&&void 0!==t)n=t;else{if(void 0===n)throw new Error("KeyError");delete this[e]}return n},popitem:function(){for(var e in this){var t=this[e];return delete this[e],[e,t]}throw new Error("KeyError")},setdefault:function(e,t){return e in this?this[e]:(void 0===t&&(t=null),this[e]=t)},update:function(e){for(var t in e)this[t]=e[t];return null}};s.iteritems=s.items,s.itervalues=s.values,s.iterkeys=s.keys,e.memberLookup=function(e,n,o){return e=e||{},t.isArray(e)&&r.hasOwnProperty(n)?function(){return r[n].apply(e,arguments)}:t.isObject(e)&&s.hasOwnProperty(n)?function(){return s[n].apply(e,arguments)}:i.apply(this,arguments)}}e.exports=n}])});