From 3c850c3ac755c19f1daab79a280f6e4009309b2d Mon Sep 17 00:00:00 2001 From: Romain Courteaud <romain@nexedi.com> Date: Fri, 22 Jan 2016 09:57:12 +0000 Subject: [PATCH] [erp5_web_renderjs_ui] Drop unused handlebars web script. The one provided by erp5_core is used by default. --- .../web_page_module/rjs_handlebars_js.xml | 3074 ----------------- 1 file changed, 3074 deletions(-) delete mode 100644 bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_handlebars_js.xml diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_handlebars_js.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_handlebars_js.xml deleted file mode 100644 index a3b1eecdb5..0000000000 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_handlebars_js.xml +++ /dev/null @@ -1,3074 +0,0 @@ -<?xml version="1.0"?> -<ZopeData> - <record id="1" aka="AAAAAAAAAAE="> - <pickle> - <global name="Web Script" module="erp5.portal_type"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>_Access_contents_information_Permission</string> </key> - <value> - <tuple> - <string>Anonymous</string> - <string>Assignee</string> - <string>Assignor</string> - <string>Associate</string> - <string>Auditor</string> - <string>Manager</string> - <string>Owner</string> - </tuple> - </value> - </item> - <item> - <key> <string>_Add_portal_content_Permission</string> </key> - <value> - <tuple> - <string>Assignee</string> - <string>Assignor</string> - <string>Manager</string> - </tuple> - </value> - </item> - <item> - <key> <string>_Change_local_roles_Permission</string> </key> - <value> - <tuple> - <string>Assignor</string> - <string>Manager</string> - </tuple> - </value> - </item> - <item> - <key> <string>_Modify_portal_content_Permission</string> </key> - <value> - <tuple> - <string>Assignee</string> - <string>Assignor</string> - <string>Manager</string> - </tuple> - </value> - </item> - <item> - <key> <string>_View_Permission</string> </key> - <value> - <tuple> - <string>Anonymous</string> - <string>Assignee</string> - <string>Assignor</string> - <string>Associate</string> - <string>Auditor</string> - <string>Manager</string> - <string>Owner</string> - </tuple> - </value> - </item> - <item> - <key> <string>content_md5</string> </key> - <value> - <none/> - </value> - </item> - <item> - <key> <string>default_reference</string> </key> - <value> <string>handlebars.js</string> </value> - </item> - <item> - <key> <string>description</string> </key> - <value> - <none/> - </value> - </item> - <item> - <key> <string>id</string> </key> - <value> <string>rjs_handlebars_js</string> </value> - </item> - <item> - <key> <string>language</string> </key> - <value> <string>en</string> </value> - </item> - <item> - <key> <string>portal_type</string> </key> - <value> <string>Web Script</string> </value> - </item> - <item> - <key> <string>short_title</string> </key> - <value> - <none/> - </value> - </item> - <item> - <key> <string>text_content</string> </key> - <value> <string encoding="cdata"><![CDATA[ - -/*!\n -\n - handlebars v1.3.0\n -\n -Copyright (C) 2011 by Yehuda Katz\n -\n -Permission is hereby granted, free of charge, to any person obtaining a copy\n -of this software and associated documentation files (the "Software"), to deal\n -in the Software without restriction, including without limitation the rights\n -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n -copies of the Software, and to permit persons to whom the Software is\n -furnished to do so, subject to the following conditions:\n -\n -The above copyright notice and this permission notice shall be included in\n -all copies or substantial portions of the Software.\n -\n -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n -THE SOFTWARE.\n -\n -@license\n -*/\n -/* exported Handlebars */\n -var Handlebars = (function() {\n -// handlebars/safe-string.js\n -var __module4__ = (function() {\n - "use strict";\n - var __exports__;\n - // Build out our basic SafeString type\n - function SafeString(string) {\n - this.string = string;\n - }\n -\n - SafeString.prototype.toString = function() {\n - return "" + this.string;\n - };\n -\n - __exports__ = SafeString;\n - return __exports__;\n -})();\n -\n -// handlebars/utils.js\n -var __module3__ = (function(__dependency1__) {\n - "use strict";\n - var __exports__ = {};\n - /*jshint -W004 */\n - var SafeString = __dependency1__;\n -\n - var escape = {\n - "&": "&",\n - "<": "<",\n - ">": ">",\n - \'"\': """,\n - "\'": "'",\n - "`": "`"\n - };\n -\n - var badChars = /[&<>"\'`]/g;\n - var possible = /[&<>"\'`]/;\n -\n - function escapeChar(chr) {\n - return escape[chr] || "&";\n - }\n -\n - function extend(obj, value) {\n - for(var key in value) {\n - if(Object.prototype.hasOwnProperty.call(value, key)) {\n - obj[key] = value[key];\n - }\n - }\n - }\n -\n - __exports__.extend = extend;var toString = Object.prototype.toString;\n - __exports__.toString = toString;\n - // Sourced from lodash\n - // https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n - var isFunction = function(value) {\n - return typeof value === \'function\';\n - };\n - // fallback for older versions of Chrome and Safari\n - if (isFunction(/x/)) {\n - isFunction = function(value) {\n - return typeof value === \'function\' && toString.call(value) === \'[object Function]\';\n - };\n - }\n - var isFunction;\n - __exports__.isFunction = isFunction;\n - var isArray = Array.isArray || function(value) {\n - return (value && typeof value === \'object\') ? toString.call(value) === \'[object Array]\' : false;\n - };\n - __exports__.isArray = isArray;\n -\n - function escapeExpression(string) {\n - // don\'t escape SafeStrings, since they\'re already safe\n - if (string instanceof SafeString) {\n - return string.toString();\n - } else if (!string && string !== 0) {\n - return "";\n - }\n -\n - // Force a string conversion as this will be done by the append regardless and\n - // the regex test will do this transparently behind the scenes, causing issues if\n - // an object\'s to string has escaped characters in it.\n - string = "" + string;\n -\n - if(!possible.test(string)) { return string; }\n - return string.replace(badChars, escapeChar);\n - }\n -\n - __exports__.escapeExpression = escapeExpression;function isEmpty(value) {\n - if (!value && value !== 0) {\n - return true;\n - } else if (isArray(value) && value.length === 0) {\n - return true;\n - } else {\n - return false;\n - }\n - }\n -\n - __exports__.isEmpty = isEmpty;\n - return __exports__;\n -})(__module4__);\n -\n -// handlebars/exception.js\n -var __module5__ = (function() {\n - "use strict";\n - var __exports__;\n -\n - var errorProps = [\'description\', \'fileName\', \'lineNumber\', \'message\', \'name\', \'number\', \'stack\'];\n -\n - function Exception(message, node) {\n - var line;\n - if (node && node.firstLine) {\n - line = node.firstLine;\n -\n - message += \' - \' + line + \':\' + node.firstColumn;\n - }\n -\n - var tmp = Error.prototype.constructor.call(this, message);\n -\n - // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn\'t work.\n - for (var idx = 0; idx < errorProps.length; idx++) {\n - this[errorProps[idx]] = tmp[errorProps[idx]];\n - }\n -\n - if (line) {\n - this.lineNumber = line;\n - this.column = node.firstColumn;\n - }\n - }\n -\n - Exception.prototype = new Error();\n -\n - __exports__ = Exception;\n - return __exports__;\n -})();\n -\n -// handlebars/base.js\n -var __module2__ = (function(__dependency1__, __dependency2__) {\n - "use strict";\n - var __exports__ = {};\n - var Utils = __dependency1__;\n - var Exception = __dependency2__;\n -\n - var VERSION = "1.3.0";\n - __exports__.VERSION = VERSION;var COMPILER_REVISION = 4;\n - __exports__.COMPILER_REVISION = COMPILER_REVISION;\n - var REVISION_CHANGES = {\n - 1: \'<= 1.0.rc.2\', // 1.0.rc.2 is actually rev2 but doesn\'t report it\n - 2: \'== 1.0.0-rc.3\',\n - 3: \'== 1.0.0-rc.4\',\n - 4: \'>= 1.0.0\'\n - };\n - __exports__.REVISION_CHANGES = REVISION_CHANGES;\n - var isArray = Utils.isArray,\n - isFunction = Utils.isFunction,\n - toString = Utils.toString,\n - objectType = \'[object Object]\';\n -\n - function HandlebarsEnvironment(helpers, partials) {\n - this.helpers = helpers || {};\n - this.partials = partials || {};\n -\n - registerDefaultHelpers(this);\n - }\n -\n - __exports__.HandlebarsEnvironment = HandlebarsEnvironment;HandlebarsEnvironment.prototype = {\n - constructor: HandlebarsEnvironment,\n -\n - logger: logger,\n - log: log,\n -\n - registerHelper: function(name, fn, inverse) {\n - if (toString.call(name) === objectType) {\n - if (inverse || fn) { throw new Exception(\'Arg not supported with multiple helpers\'); }\n - Utils.extend(this.helpers, name);\n - } else {\n - if (inverse) { fn.not = inverse; }\n - this.helpers[name] = fn;\n - }\n - },\n -\n - registerPartial: function(name, str) {\n - if (toString.call(name) === objectType) {\n - Utils.extend(this.partials, name);\n - } else {\n - this.partials[name] = str;\n - }\n - }\n - };\n -\n - function registerDefaultHelpers(instance) {\n - instance.registerHelper(\'helperMissing\', function(arg) {\n - if(arguments.length === 2) {\n - return undefined;\n - } else {\n - throw new Exception("Missing helper: \'" + arg + "\'");\n - }\n - });\n -\n - instance.registerHelper(\'blockHelperMissing\', function(context, options) {\n - var inverse = options.inverse || function() {}, fn = options.fn;\n -\n - if (isFunction(context)) { context = context.call(this); }\n -\n - if(context === true) {\n - return fn(this);\n - } else if(context === false || context == null) {\n - return inverse(this);\n - } else if (isArray(context)) {\n - if(context.length > 0) {\n - return instance.helpers.each(context, options);\n - } else {\n - return inverse(this);\n - }\n - } else {\n - return fn(context);\n - }\n - });\n -\n - instance.registerHelper(\'each\', function(context, options) {\n - var fn = options.fn, inverse = options.inverse;\n - var i = 0, ret = "", data;\n -\n - if (isFunction(context)) { context = context.call(this); }\n -\n - if (options.data) {\n - data = createFrame(options.data);\n - }\n -\n - if(context && typeof context === \'object\') {\n - if (isArray(context)) {\n - for(var j = context.length; i<j; i++) {\n - if (data) {\n - data.index = i;\n - data.first = (i === 0);\n - data.last = (i === (context.length-1));\n - }\n - ret = ret + fn(context[i], { data: data });\n - }\n - } else {\n - for(var key in context) {\n - if(context.hasOwnProperty(key)) {\n - if(data) { \n - data.key = key; \n - data.index = i;\n - data.first = (i === 0);\n - }\n - ret = ret + fn(context[key], {data: data});\n - i++;\n - }\n - }\n - }\n - }\n -\n - if(i === 0){\n - ret = inverse(this);\n - }\n -\n - return ret;\n - });\n -\n - instance.registerHelper(\'if\', function(conditional, options) {\n - if (isFunction(conditional)) { conditional = conditional.call(this); }\n -\n - // Default behavior is to render the positive path if the value is truthy and not empty.\n - // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n - // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n - if ((!options.hash.includeZero && !conditional) || Utils.isEmpty(conditional)) {\n - return options.inverse(this);\n - } else {\n - return options.fn(this);\n - }\n - });\n -\n - instance.registerHelper(\'unless\', function(conditional, options) {\n - return instance.helpers[\'if\'].call(this, conditional, {fn: options.inverse, inverse: options.fn, hash: options.hash});\n - });\n -\n - instance.registerHelper(\'with\', function(context, options) {\n - if (isFunction(context)) { context = context.call(this); }\n -\n - if (!Utils.isEmpty(context)) return options.fn(context);\n - });\n -\n - instance.registerHelper(\'log\', function(context, options) {\n - var level = options.data && options.data.level != null ? parseInt(options.data.level, 10) : 1;\n - instance.log(level, context);\n - });\n - }\n -\n - var logger = {\n - methodMap: { 0: \'debug\', 1: \'info\', 2: \'warn\', 3: \'error\' },\n -\n - // State enum\n - DEBUG: 0,\n - INFO: 1,\n - WARN: 2,\n - ERROR: 3,\n - level: 3,\n -\n - // can be overridden in the host environment\n - log: function(level, obj) {\n - if (logger.level <= level) {\n - var method = logger.methodMap[level];\n - if (typeof console !== \'undefined\' && console[method]) {\n - console[method].call(console, obj);\n - }\n - }\n - }\n - };\n - __exports__.logger = logger;\n - function log(level, obj) { logger.log(level, obj); }\n -\n - __exports__.log = log;var createFrame = function(object) {\n - var obj = {};\n - Utils.extend(obj, object);\n - return obj;\n - };\n - __exports__.createFrame = createFrame;\n - return __exports__;\n -})(__module3__, __module5__);\n -\n -// handlebars/runtime.js\n -var __module6__ = (function(__dependency1__, __dependency2__, __dependency3__) {\n - "use strict";\n - var __exports__ = {};\n - var Utils = __dependency1__;\n - var Exception = __dependency2__;\n - var COMPILER_REVISION = __dependency3__.COMPILER_REVISION;\n - var REVISION_CHANGES = __dependency3__.REVISION_CHANGES;\n -\n - function checkRevision(compilerInfo) {\n - var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n - currentRevision = COMPILER_REVISION;\n -\n - if (compilerRevision !== currentRevision) {\n - if (compilerRevision < currentRevision) {\n - var runtimeVersions = REVISION_CHANGES[currentRevision],\n - compilerVersions = REVISION_CHANGES[compilerRevision];\n - throw new Exception("Template was precompiled with an older version of Handlebars than the current runtime. "+\n - "Please update your precompiler to a newer version ("+runtimeVersions+") or downgrade your runtime to an older version ("+compilerVersions+").");\n - } else {\n - // Use the embedded version info since the runtime doesn\'t know about this revision yet\n - throw new Exception("Template was precompiled with a newer version of Handlebars than the current runtime. "+\n - "Please update your runtime to a newer version ("+compilerInfo[1]+").");\n - }\n - }\n - }\n -\n - __exports__.checkRevision = checkRevision;// TODO: Remove this line and break up compilePartial\n -\n - function template(templateSpec, env) {\n - if (!env) {\n - throw new Exception("No environment passed to template");\n - }\n -\n - // Note: Using env.VM references rather than local var references throughout this section to allow\n - // for external users to override these as psuedo-supported APIs.\n - var invokePartialWrapper = function(partial, name, context, helpers, partials, data) {\n - var result = env.VM.invokePartial.apply(this, arguments);\n - if (result != null) { return result; }\n -\n - if (env.compile) {\n - var options = { helpers: helpers, partials: partials, data: data };\n - partials[name] = env.compile(partial, { data: data !== undefined }, env);\n - return partials[name](context, options);\n - } else {\n - throw new Exception("The partial " + name + " could not be compiled when running in runtime-only mode");\n - }\n - };\n -\n - // Just add water\n - var container = {\n - escapeExpression: Utils.escapeExpression,\n - invokePartial: invokePartialWrapper,\n - programs: [],\n - program: function(i, fn, data) {\n - var programWrapper = this.programs[i];\n - if(data) {\n - programWrapper = program(i, fn, data);\n - } else if (!programWrapper) {\n - programWrapper = this.programs[i] = program(i, fn);\n - }\n - return programWrapper;\n - },\n - merge: function(param, common) {\n - var ret = param || common;\n -\n - if (param && common && (param !== common)) {\n - ret = {};\n - Utils.extend(ret, common);\n - Utils.extend(ret, param);\n - }\n - return ret;\n - },\n - programWithDepth: env.VM.programWithDepth,\n - noop: env.VM.noop,\n - compilerInfo: null\n - };\n -\n - return function(context, options) {\n - options = options || {};\n - var namespace = options.partial ? options : env,\n - helpers,\n - partials;\n -\n - if (!options.partial) {\n - helpers = options.helpers;\n - partials = options.partials;\n - }\n - var result = templateSpec.call(\n - container,\n - namespace, context,\n - helpers,\n - partials,\n - options.data);\n -\n - if (!options.partial) {\n - env.VM.checkRevision(container.compilerInfo);\n - }\n -\n - return result;\n - };\n - }\n -\n - __exports__.template = template;function programWithDepth(i, fn, data /*, $depth */) {\n - var args = Array.prototype.slice.call(arguments, 3);\n -\n - var prog = function(context, options) {\n - options = options || {};\n -\n - return fn.apply(this, [context, options.data || data].concat(args));\n - };\n - prog.program = i;\n - prog.depth = args.length;\n - return prog;\n - }\n -\n - __exports__.programWithDepth = programWithDepth;function program(i, fn, data) {\n - var prog = function(context, options) {\n - options = options || {};\n -\n - return fn(context, options.data || data);\n - };\n - prog.program = i;\n - prog.depth = 0;\n - return prog;\n - }\n -\n - __exports__.program = program;function invokePartial(partial, name, context, helpers, partials, data) {\n - var options = { partial: true, helpers: helpers, partials: partials, data: data };\n -\n - if(partial === undefined) {\n - throw new Exception("The partial " + name + " could not be found");\n - } else if(partial instanceof Function) {\n - return partial(context, options);\n - }\n - }\n -\n - __exports__.invokePartial = invokePartial;function noop() { return ""; }\n -\n - __exports__.noop = noop;\n - return __exports__;\n -})(__module3__, __module5__, __module2__);\n -\n -// handlebars.runtime.js\n -var __module1__ = (function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__) {\n - "use strict";\n - var __exports__;\n - /*globals Handlebars: true */\n - var base = __dependency1__;\n -\n - // Each of these augment the Handlebars object. No need to setup here.\n - // (This is done to easily share code between commonjs and browse envs)\n - var SafeString = __dependency2__;\n - var Exception = __dependency3__;\n - var Utils = __dependency4__;\n - var runtime = __dependency5__;\n -\n - // For compatibility and usage outside of module systems, make the Handlebars object a namespace\n - var create = function() {\n - var hb = new base.HandlebarsEnvironment();\n -\n - Utils.extend(hb, base);\n - hb.SafeString = SafeString;\n - hb.Exception = Exception;\n - hb.Utils = Utils;\n -\n - hb.VM = runtime;\n - hb.template = function(spec) {\n - return runtime.template(spec, hb);\n - };\n -\n - return hb;\n - };\n -\n - var Handlebars = create();\n - Handlebars.create = create;\n -\n - __exports__ = Handlebars;\n - return __exports__;\n -})(__module2__, __module4__, __module5__, __module3__, __module6__);\n -\n -// handlebars/compiler/ast.js\n -var __module7__ = (function(__dependency1__) {\n - "use strict";\n - var __exports__;\n - var Exception = __dependency1__;\n -\n - function LocationInfo(locInfo){\n - locInfo = locInfo || {};\n - this.firstLine = locInfo.first_line;\n - this.firstColumn = locInfo.first_column;\n - this.lastColumn = locInfo.last_column;\n - this.lastLine = locInfo.last_line;\n - }\n -\n - var AST = {\n - ProgramNode: function(statements, inverseStrip, inverse, locInfo) {\n - var inverseLocationInfo, firstInverseNode;\n - if (arguments.length === 3) {\n - locInfo = inverse;\n - inverse = null;\n - } else if (arguments.length === 2) {\n - locInfo = inverseStrip;\n - inverseStrip = null;\n - }\n -\n - LocationInfo.call(this, locInfo);\n - this.type = "program";\n - this.statements = statements;\n - this.strip = {};\n -\n - if(inverse) {\n - firstInverseNode = inverse[0];\n - if (firstInverseNode) {\n - inverseLocationInfo = {\n - first_line: firstInverseNode.firstLine,\n - last_line: firstInverseNode.lastLine,\n - last_column: firstInverseNode.lastColumn,\n - first_column: firstInverseNode.firstColumn\n - };\n - this.inverse = new AST.ProgramNode(inverse, inverseStrip, inverseLocationInfo);\n - } else {\n - this.inverse = new AST.ProgramNode(inverse, inverseStrip);\n - }\n - this.strip.right = inverseStrip.left;\n - } else if (inverseStrip) {\n - this.strip.left = inverseStrip.right;\n - }\n - },\n -\n - MustacheNode: function(rawParams, hash, open, strip, locInfo) {\n - LocationInfo.call(this, locInfo);\n - this.type = "mustache";\n - this.strip = strip;\n -\n - // Open may be a string parsed from the parser or a passed boolean flag\n - if (open != null && open.charAt) {\n - // Must use charAt to support IE pre-10\n - var escapeFlag = open.charAt(3) || open.charAt(2);\n - this.escaped = escapeFlag !== \'{\' && escapeFlag !== \'&\';\n - } else {\n - this.escaped = !!open;\n - }\n -\n - if (rawParams instanceof AST.SexprNode) {\n - this.sexpr = rawParams;\n - } else {\n - // Support old AST API\n - this.sexpr = new AST.SexprNode(rawParams, hash);\n - }\n -\n - this.sexpr.isRoot = true;\n -\n - // Support old AST API that stored this info in MustacheNode\n - this.id = this.sexpr.id;\n - this.params = this.sexpr.params;\n - this.hash = this.sexpr.hash;\n - this.eligibleHelper = this.sexpr.eligibleHelper;\n - this.isHelper = this.sexpr.isHelper;\n - },\n -\n - SexprNode: function(rawParams, hash, locInfo) {\n - LocationInfo.call(this, locInfo);\n -\n - this.type = "sexpr";\n - this.hash = hash;\n -\n - var id = this.id = rawParams[0];\n - var params = this.params = rawParams.slice(1);\n -\n - // a mustache is an eligible helper if:\n - // * its id is simple (a single part, not `this` or `..`)\n - var eligibleHelper = this.eligibleHelper = id.isSimple;\n -\n - // a mustache is definitely a helper if:\n - // * it is an eligible helper, and\n - // * it has at least one parameter or hash segment\n - this.isHelper = eligibleHelper && (params.length || hash);\n -\n - // if a mustache is an eligible helper but not a definite\n - // helper, it is ambiguous, and will be resolved in a later\n - // pass or at runtime.\n - },\n -\n - PartialNode: function(partialName, context, strip, locInfo) {\n - LocationInfo.call(this, locInfo);\n - this.type = "partial";\n - this.partialName = partialName;\n - this.context = context;\n - this.strip = strip;\n - },\n -\n - BlockNode: function(mustache, program, inverse, close, locInfo) {\n - LocationInfo.call(this, locInfo);\n -\n - if(mustache.sexpr.id.original !== close.path.original) {\n - throw new Exception(mustache.sexpr.id.original + " doesn\'t match " + close.path.original, this);\n - }\n -\n - this.type = \'block\';\n - this.mustache = mustache;\n - this.program = program;\n - this.inverse = inverse;\n -\n - this.strip = {\n - left: mustache.strip.left,\n - right: close.strip.right\n - };\n -\n - (program || inverse).strip.left = mustache.strip.right;\n - (inverse || program).strip.right = close.strip.left;\n -\n - if (inverse && !program) {\n - this.isInverse = true;\n - }\n - },\n -\n - ContentNode: function(string, locInfo) {\n - LocationInfo.call(this, locInfo);\n - this.type = "content";\n - this.string = string;\n - },\n -\n - HashNode: function(pairs, locInfo) {\n - LocationInfo.call(this, locInfo);\n - this.type = "hash";\n - this.pairs = pairs;\n - },\n -\n - IdNode: function(parts, locInfo) {\n - LocationInfo.call(this, locInfo);\n - this.type = "ID";\n -\n - var original = "",\n - dig = [],\n - depth = 0;\n -\n - for(var i=0,l=parts.length; i<l; i++) {\n - var part = parts[i].part;\n - original += (parts[i].separator || \'\') + part;\n -\n - if (part === ".." || part === "." || part === "this") {\n - if (dig.length > 0) {\n - throw new Exception("Invalid path: " + original, this);\n - } else if (part === "..") {\n - depth++;\n - } else {\n - this.isScoped = true;\n - }\n - } else {\n - dig.push(part);\n - }\n - }\n -\n - this.original = original;\n - this.parts = dig;\n - this.string = dig.join(\'.\');\n - this.depth = depth;\n -\n - // an ID is simple if it only has one part, and that part is not\n - // `..` or `this`.\n - this.isSimple = parts.length === 1 && !this.isScoped && depth === 0;\n -\n - this.stringModeValue = this.string;\n - },\n -\n - PartialNameNode: function(name, locInfo) {\n - LocationInfo.call(this, locInfo);\n - this.type = "PARTIAL_NAME";\n - this.name = name.original;\n - },\n -\n - DataNode: function(id, locInfo) {\n - LocationInfo.call(this, locInfo);\n - this.type = "DATA";\n - this.id = id;\n - },\n -\n - StringNode: function(string, locInfo) {\n - LocationInfo.call(this, locInfo);\n - this.type = "STRING";\n - this.original =\n - this.string =\n - this.stringModeValue = string;\n - },\n -\n - IntegerNode: function(integer, locInfo) {\n - LocationInfo.call(this, locInfo);\n - this.type = "INTEGER";\n - this.original =\n - this.integer = integer;\n - this.stringModeValue = Number(integer);\n - },\n -\n - BooleanNode: function(bool, locInfo) {\n - LocationInfo.call(this, locInfo);\n - this.type = "BOOLEAN";\n - this.bool = bool;\n - this.stringModeValue = bool === "true";\n - },\n -\n - CommentNode: function(comment, locInfo) {\n - LocationInfo.call(this, locInfo);\n - this.type = "comment";\n - this.comment = comment;\n - }\n - };\n -\n - // Must be exported as an object rather than the root of the module as the jison lexer\n - // most modify the object to operate properly.\n - __exports__ = AST;\n - return __exports__;\n -})(__module5__);\n -\n -// handlebars/compiler/parser.js\n -var __module9__ = (function() {\n - "use strict";\n - var __exports__;\n - /* jshint ignore:start */\n - /* Jison generated parser */\n - var handlebars = (function(){\n - var parser = {trace: function trace() { },\n - yy: {},\n - 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},\n - 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"},\n - 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]],\n - performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {\n -\n - var $0 = $$.length - 1;\n - switch (yystate) {\n - case 1: return new yy.ProgramNode($$[$0-1], this._$); \n - break;\n - case 2: return new yy.ProgramNode([], this._$); \n - break;\n - case 3:this.$ = new yy.ProgramNode([], $$[$0-1], $$[$0], this._$);\n - break;\n - case 4:this.$ = new yy.ProgramNode($$[$0-2], $$[$0-1], $$[$0], this._$);\n - break;\n - case 5:this.$ = new yy.ProgramNode($$[$0-1], $$[$0], [], this._$);\n - break;\n - case 6:this.$ = new yy.ProgramNode($$[$0], this._$);\n - break;\n - case 7:this.$ = new yy.ProgramNode([], this._$);\n - break;\n - case 8:this.$ = new yy.ProgramNode([], this._$);\n - break;\n - case 9:this.$ = [$$[$0]];\n - break;\n - case 10: $$[$0-1].push($$[$0]); this.$ = $$[$0-1]; \n - break;\n - case 11:this.$ = new yy.BlockNode($$[$0-2], $$[$0-1].inverse, $$[$0-1], $$[$0], this._$);\n - break;\n - case 12:this.$ = new yy.BlockNode($$[$0-2], $$[$0-1], $$[$0-1].inverse, $$[$0], this._$);\n - break;\n - case 13:this.$ = $$[$0];\n - break;\n - case 14:this.$ = $$[$0];\n - break;\n - case 15:this.$ = new yy.ContentNode($$[$0], this._$);\n - break;\n - case 16:this.$ = new yy.CommentNode($$[$0], this._$);\n - break;\n - case 17:this.$ = new yy.MustacheNode($$[$0-1], null, $$[$0-2], stripFlags($$[$0-2], $$[$0]), this._$);\n - break;\n - case 18:this.$ = new yy.MustacheNode($$[$0-1], null, $$[$0-2], stripFlags($$[$0-2], $$[$0]), this._$);\n - break;\n - case 19:this.$ = {path: $$[$0-1], strip: stripFlags($$[$0-2], $$[$0])};\n - break;\n - case 20:this.$ = new yy.MustacheNode($$[$0-1], null, $$[$0-2], stripFlags($$[$0-2], $$[$0]), this._$);\n - break;\n - case 21:this.$ = new yy.MustacheNode($$[$0-1], null, $$[$0-2], stripFlags($$[$0-2], $$[$0]), this._$);\n - break;\n - case 22:this.$ = new yy.PartialNode($$[$0-2], $$[$0-1], stripFlags($$[$0-3], $$[$0]), this._$);\n - break;\n - case 23:this.$ = stripFlags($$[$0-1], $$[$0]);\n - break;\n - case 24:this.$ = new yy.SexprNode([$$[$0-2]].concat($$[$0-1]), $$[$0], this._$);\n - break;\n - case 25:this.$ = new yy.SexprNode([$$[$0]], null, this._$);\n - break;\n - case 26:this.$ = $$[$0];\n - break;\n - case 27:this.$ = new yy.StringNode($$[$0], this._$);\n - break;\n - case 28:this.$ = new yy.IntegerNode($$[$0], this._$);\n - break;\n - case 29:this.$ = new yy.BooleanNode($$[$0], this._$);\n - break;\n - case 30:this.$ = $$[$0];\n - break;\n - case 31:$$[$0-1].isHelper = true; this.$ = $$[$0-1];\n - break;\n - case 32:this.$ = new yy.HashNode($$[$0], this._$);\n - break;\n - case 33:this.$ = [$$[$0-2], $$[$0]];\n - break;\n - case 34:this.$ = new yy.PartialNameNode($$[$0], this._$);\n - break;\n - case 35:this.$ = new yy.PartialNameNode(new yy.StringNode($$[$0], this._$), this._$);\n - break;\n - case 36:this.$ = new yy.PartialNameNode(new yy.IntegerNode($$[$0], this._$));\n - break;\n - case 37:this.$ = new yy.DataNode($$[$0], this._$);\n - break;\n - case 38:this.$ = new yy.IdNode($$[$0], this._$);\n - break;\n - case 39: $$[$0-2].push({part: $$[$0], separator: $$[$0-1]}); this.$ = $$[$0-2]; \n - break;\n - case 40:this.$ = [{part: $$[$0]}];\n - break;\n - case 43:this.$ = [];\n - break;\n - case 44:$$[$0-1].push($$[$0]);\n - break;\n - case 47:this.$ = [$$[$0]];\n - break;\n - case 48:$$[$0-1].push($$[$0]);\n - break;\n - }\n - },\n - 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]}],\n - defaultActions: {3:[2,2],16:[2,1],50:[2,42]},\n - parseError: function parseError(str, hash) {\n - throw new Error(str);\n - },\n - parse: function parse(input) {\n - var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n - this.lexer.setInput(input);\n - this.lexer.yy = this.yy;\n - this.yy.lexer = this.lexer;\n - this.yy.parser = this;\n - if (typeof this.lexer.yylloc == "undefined")\n - this.lexer.yylloc = {};\n - var yyloc = this.lexer.yylloc;\n - lstack.push(yyloc);\n - var ranges = this.lexer.options && this.lexer.options.ranges;\n - if (typeof this.yy.parseError === "function")\n - this.parseError = this.yy.parseError;\n - function popStack(n) {\n - stack.length = stack.length - 2 * n;\n - vstack.length = vstack.length - n;\n - lstack.length = lstack.length - n;\n - }\n - function lex() {\n - var token;\n - token = self.lexer.lex() || 1;\n - if (typeof token !== "number") {\n - token = self.symbols_[token] || token;\n - }\n - return token;\n - }\n - var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n - while (true) {\n - state = stack[stack.length - 1];\n - if (this.defaultActions[state]) {\n - action = this.defaultActions[state];\n - } else {\n - if (symbol === null || typeof symbol == "undefined") {\n - symbol = lex();\n - }\n - action = table[state] && table[state][symbol];\n - }\n - if (typeof action === "undefined" || !action.length || !action[0]) {\n - var errStr = "";\n - if (!recovering) {\n - expected = [];\n - for (p in table[state])\n - if (this.terminals_[p] && p > 2) {\n - expected.push("\'" + this.terminals_[p] + "\'");\n - }\n - if (this.lexer.showPosition) {\n - errStr = "Parse error on line " + (yylineno + 1) + ":\\n" + this.lexer.showPosition() + "\\nExpecting " + expected.join(", ") + ", got \'" + (this.terminals_[symbol] || symbol) + "\'";\n - } else {\n - errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1?"end of input":"\'" + (this.terminals_[symbol] || symbol) + "\'");\n - }\n - this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});\n - }\n - }\n - if (action[0] instanceof Array && action.length > 1) {\n - throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);\n - }\n - switch (action[0]) {\n - case 1:\n - stack.push(symbol);\n - vstack.push(this.lexer.yytext);\n - lstack.push(this.lexer.yylloc);\n - stack.push(action[1]);\n - symbol = null;\n - if (!preErrorSymbol) {\n - yyleng = this.lexer.yyleng;\n - yytext = this.lexer.yytext;\n - yylineno = this.lexer.yylineno;\n - yyloc = this.lexer.yylloc;\n - if (recovering > 0)\n - recovering--;\n - } else {\n - symbol = preErrorSymbol;\n - preErrorSymbol = null;\n - }\n - break;\n - case 2:\n - len = this.productions_[action[1]][1];\n - yyval.$ = vstack[vstack.length - len];\n - yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};\n - if (ranges) {\n - yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n - }\n - r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\n - if (typeof r !== "undefined") {\n - return r;\n - }\n - if (len) {\n - stack = stack.slice(0, -1 * len * 2);\n - vstack = vstack.slice(0, -1 * len);\n - lstack = lstack.slice(0, -1 * len);\n - }\n - stack.push(this.productions_[action[1]][0]);\n - vstack.push(yyval.$);\n - lstack.push(yyval._$);\n - newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n - stack.push(newState);\n - break;\n - case 3:\n - return true;\n - }\n - }\n - return true;\n - }\n - };\n -\n -\n - function stripFlags(open, close) {\n - return {\n - left: open.charAt(2) === \'~\',\n - right: close.charAt(0) === \'~\' || close.charAt(1) === \'~\'\n - };\n - }\n -\n - /* Jison generated lexer */\n - var lexer = (function(){\n - var lexer = ({EOF:1,\n - parseError:function parseError(str, hash) {\n - if (this.yy.parser) {\n - this.yy.parser.parseError(str, hash);\n - } else {\n - throw new Error(str);\n - }\n - },\n - setInput:function (input) {\n - this._input = input;\n - this._more = this._less = this.done = false;\n - this.yylineno = this.yyleng = 0;\n - this.yytext = this.matched = this.match = \'\';\n - this.conditionStack = [\'INITIAL\'];\n - this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};\n - if (this.options.ranges) this.yylloc.range = [0,0];\n - this.offset = 0;\n - return this;\n - },\n - input:function () {\n - var ch = this._input[0];\n - this.yytext += ch;\n - this.yyleng++;\n - this.offset++;\n - this.match += ch;\n - this.matched += ch;\n - var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n - if (lines) {\n - this.yylineno++;\n - this.yylloc.last_line++;\n - } else {\n - this.yylloc.last_column++;\n - }\n - if (this.options.ranges) this.yylloc.range[1]++;\n -\n - this._input = this._input.slice(1);\n - return ch;\n - },\n - unput:function (ch) {\n - var len = ch.length;\n - var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n -\n - this._input = ch + this._input;\n - this.yytext = this.yytext.substr(0, this.yytext.length-len-1);\n - //this.yyleng -= len;\n - this.offset -= len;\n - var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n - this.match = this.match.substr(0, this.match.length-1);\n - this.matched = this.matched.substr(0, this.matched.length-1);\n -\n - if (lines.length-1) this.yylineno -= lines.length-1;\n - var r = this.yylloc.range;\n -\n - this.yylloc = {first_line: this.yylloc.first_line,\n - last_line: this.yylineno+1,\n - first_column: this.yylloc.first_column,\n - last_column: lines ?\n - (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:\n - this.yylloc.first_column - len\n - };\n -\n - if (this.options.ranges) {\n - this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n - }\n - return this;\n - },\n - more:function () {\n - this._more = true;\n - return this;\n - },\n - less:function (n) {\n - this.unput(this.match.slice(n));\n - },\n - pastInput:function () {\n - var past = this.matched.substr(0, this.matched.length - this.match.length);\n - return (past.length > 20 ? \'...\':\'\') + past.substr(-20).replace(/\\n/g, "");\n - },\n - upcomingInput:function () {\n - var next = this.match;\n - if (next.length < 20) {\n - next += this._input.substr(0, 20-next.length);\n - }\n - return (next.substr(0,20)+(next.length > 20 ? \'...\':\'\')).replace(/\\n/g, "");\n - },\n - showPosition:function () {\n - var pre = this.pastInput();\n - var c = new Array(pre.length + 1).join("-");\n - return pre + this.upcomingInput() + "\\n" + c+"^";\n - },\n - next:function () {\n - if (this.done) {\n - return this.EOF;\n - }\n - if (!this._input) this.done = true;\n -\n - var token,\n - match,\n - tempMatch,\n - index,\n - col,\n - lines;\n - if (!this._more) {\n - this.yytext = \'\';\n - this.match = \'\';\n - }\n - var rules = this._currentRules();\n - for (var i=0;i < rules.length; i++) {\n - tempMatch = this._input.match(this.rules[rules[i]]);\n - if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n - match = tempMatch;\n - index = i;\n - if (!this.options.flex) break;\n - }\n - }\n - if (match) {\n - lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n - if (lines) this.yylineno += lines.length;\n - this.yylloc = {first_line: this.yylloc.last_line,\n - last_line: this.yylineno+1,\n - first_column: this.yylloc.last_column,\n - last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length};\n - this.yytext += match[0];\n - this.match += match[0];\n - this.matches = match;\n - this.yyleng = this.yytext.length;\n - if (this.options.ranges) {\n - this.yylloc.range = [this.offset, this.offset += this.yyleng];\n - }\n - this._more = false;\n - this._input = this._input.slice(match[0].length);\n - this.matched += match[0];\n - token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);\n - if (this.done && this._input) this.done = false;\n - if (token) return token;\n - else return;\n - }\n - if (this._input === "") {\n - return this.EOF;\n - } else {\n - return this.parseError(\'Lexical error on line \'+(this.yylineno+1)+\'. Unrecognized text.\\n\'+this.showPosition(),\n - {text: "", token: null, line: this.yylineno});\n - }\n - },\n - lex:function lex() {\n - var r = this.next();\n - if (typeof r !== \'undefined\') {\n - return r;\n - } else {\n - return this.lex();\n - }\n - },\n - begin:function begin(condition) {\n - this.conditionStack.push(condition);\n - },\n - popState:function popState() {\n - return this.conditionStack.pop();\n - },\n - _currentRules:function _currentRules() {\n - return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;\n - },\n - topState:function () {\n - return this.conditionStack[this.conditionStack.length-2];\n - },\n - pushState:function begin(condition) {\n - this.begin(condition);\n - }});\n - lexer.options = {};\n - lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\n -\n -\n - function strip(start, end) {\n - return yy_.yytext = yy_.yytext.substr(start, yy_.yyleng-end);\n - }\n -\n -\n - var YYSTATE=YY_START\n - switch($avoiding_name_collisions) {\n - case 0:\n - if(yy_.yytext.slice(-2) === "\\\\\\\\") {\n - strip(0,1);\n - this.begin("mu");\n - } else if(yy_.yytext.slice(-1) === "\\\\") {\n - strip(0,1);\n - this.begin("emu");\n - } else {\n - this.begin("mu");\n - }\n - if(yy_.yytext) return 14;\n - \n - break;\n - case 1:return 14;\n - break;\n - case 2:\n - this.popState();\n - return 14;\n - \n - break;\n - case 3:strip(0,4); this.popState(); return 15;\n - break;\n - case 4:return 35;\n - break;\n - case 5:return 36;\n - break;\n - case 6:return 25;\n - break;\n - case 7:return 16;\n - break;\n - case 8:return 20;\n - break;\n - case 9:return 19;\n - break;\n - case 10:return 19;\n - break;\n - case 11:return 23;\n - break;\n - case 12:return 22;\n - break;\n - case 13:this.popState(); this.begin(\'com\');\n - break;\n - case 14:strip(3,5); this.popState(); return 15;\n - break;\n - case 15:return 22;\n - break;\n - case 16:return 41;\n - break;\n - case 17:return 40;\n - break;\n - case 18:return 40;\n - break;\n - case 19:return 44;\n - break;\n - case 20:// ignore whitespace\n - break;\n - case 21:this.popState(); return 24;\n - break;\n - case 22:this.popState(); return 18;\n - break;\n - case 23:yy_.yytext = strip(1,2).replace(/\\\\"/g,\'"\'); return 32;\n - break;\n - case 24:yy_.yytext = strip(1,2).replace(/\\\\\'/g,"\'"); return 32;\n - break;\n - case 25:return 42;\n - break;\n - case 26:return 34;\n - break;\n - case 27:return 34;\n - break;\n - case 28:return 33;\n - break;\n - case 29:return 40;\n - break;\n - case 30:yy_.yytext = strip(1,2); return 40;\n - break;\n - case 31:return \'INVALID\';\n - break;\n - case 32:return 5;\n - break;\n - }\n - };\n - lexer.rules = [/^(?:[^\\x00]*?(?=(\\{\\{)))/,/^(?:[^\\x00]+)/,/^(?:[^\\x00]{2,}?(?=(\\{\\{|\\\\\\{\\{|\\\\\\\\\\{\\{|$)))/,/^(?:[\\s\\S]*?--\\}\\})/,/^(?:\\()/,/^(?:\\))/,/^(?:\\{\\{(~)?>)/,/^(?:\\{\\{(~)?#)/,/^(?:\\{\\{(~)?\\/)/,/^(?:\\{\\{(~)?\\^)/,/^(?:\\{\\{(~)?\\s*else\\b)/,/^(?:\\{\\{(~)?\\{)/,/^(?:\\{\\{(~)?&)/,/^(?:\\{\\{!--)/,/^(?:\\{\\{![\\s\\S]*?\\}\\})/,/^(?:\\{\\{(~)?)/,/^(?:=)/,/^(?:\\.\\.)/,/^(?:\\.(?=([=~}\\s\\/.)])))/,/^(?:[\\/.])/,/^(?:\\s+)/,/^(?:\\}(~)?\\}\\})/,/^(?:(~)?\\}\\})/,/^(?:"(\\\\["]|[^"])*")/,/^(?:\'(\\\\[\']|[^\'])*\')/,/^(?:@)/,/^(?:true(?=([~}\\s)])))/,/^(?:false(?=([~}\\s)])))/,/^(?:-?[0-9]+(?=([~}\\s)])))/,/^(?:([^\\s!"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=([=~}\\s\\/.)]))))/,/^(?:\\[[^\\]]*\\])/,/^(?:.)/,/^(?:$)/];\n - lexer.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":false},"emu":{"rules":[2],"inclusive":false},"com":{"rules":[3],"inclusive":false},"INITIAL":{"rules":[0,1,32],"inclusive":true}};\n - return lexer;})()\n - parser.lexer = lexer;\n - function Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;\n - return new Parser;\n - })();__exports__ = handlebars;\n - /* jshint ignore:end */\n - return __exports__;\n -})();\n -\n -// handlebars/compiler/base.js\n -var __module8__ = (function(__dependency1__, __dependency2__) {\n - "use strict";\n - var __exports__ = {};\n - var parser = __dependency1__;\n - var AST = __dependency2__;\n -\n - __exports__.parser = parser;\n -\n - function parse(input) {\n - // Just return if an already-compile AST was passed in.\n - if(input.constructor === AST.ProgramNode) { return input; }\n -\n - parser.yy = AST;\n - return parser.parse(input);\n - }\n -\n - __exports__.parse = parse;\n - return __exports__;\n -})(__module9__, __module7__);\n -\n -// handlebars/compiler/compiler.js\n -var __module10__ = (function(__dependency1__) {\n - "use strict";\n - var __exports__ = {};\n - var Exception = __dependency1__;\n -\n - function Compiler() {}\n -\n - __exports__.Compiler = Compiler;// the foundHelper register will disambiguate helper lookup from finding a\n - // function in a context. This is necessary for mustache compatibility, which\n - // requires that context functions in blocks are evaluated by blockHelperMissing,\n - // and then proceed as if the resulting value was provided to blockHelperMissing.\n -\n - Compiler.prototype = {\n - compiler: Compiler,\n -\n - disassemble: function() {\n - var opcodes = this.opcodes, opcode, out = [], params, param;\n -\n - for (var i=0, l=opcodes.length; i<l; i++) {\n - opcode = opcodes[i];\n -\n - if (opcode.opcode === \'DECLARE\') {\n - out.push("DECLARE " + opcode.name + "=" + opcode.value);\n - } else {\n - params = [];\n - for (var j=0; j<opcode.args.length; j++) {\n - param = opcode.args[j];\n - if (typeof param === "string") {\n - param = "\\"" + param.replace("\\n", "\\\\n") + "\\"";\n - }\n - params.push(param);\n - }\n - out.push(opcode.opcode + " " + params.join(" "));\n - }\n - }\n -\n - return out.join("\\n");\n - },\n -\n - equals: function(other) {\n - var len = this.opcodes.length;\n - if (other.opcodes.length !== len) {\n - return false;\n - }\n -\n - for (var i = 0; i < len; i++) {\n - var opcode = this.opcodes[i],\n - otherOpcode = other.opcodes[i];\n - if (opcode.opcode !== otherOpcode.opcode || opcode.args.length !== otherOpcode.args.length) {\n - return false;\n - }\n - for (var j = 0; j < opcode.args.length; j++) {\n - if (opcode.args[j] !== otherOpcode.args[j]) {\n - return false;\n - }\n - }\n - }\n -\n - len = this.children.length;\n - if (other.children.length !== len) {\n - return false;\n - }\n - for (i = 0; i < len; i++) {\n - if (!this.children[i].equals(other.children[i])) {\n - return false;\n - }\n - }\n -\n - return true;\n - },\n -\n - guid: 0,\n -\n - compile: function(program, options) {\n - this.opcodes = [];\n - this.children = [];\n - this.depths = {list: []};\n - this.options = options;\n -\n - // These changes will propagate to the other compiler components\n - var knownHelpers = this.options.knownHelpers;\n - this.options.knownHelpers = {\n - \'helperMissing\': true,\n - \'blockHelperMissing\': true,\n - \'each\': true,\n - \'if\': true,\n - \'unless\': true,\n - \'with\': true,\n - \'log\': true\n - };\n - if (knownHelpers) {\n - for (var name in knownHelpers) {\n - this.options.knownHelpers[name] = knownHelpers[name];\n - }\n - }\n -\n - return this.accept(program);\n - },\n -\n - accept: function(node) {\n - var strip = node.strip || {},\n - ret;\n - if (strip.left) {\n - this.opcode(\'strip\');\n - }\n -\n - ret = this[node.type](node);\n -\n - if (strip.right) {\n - this.opcode(\'strip\');\n - }\n -\n - return ret;\n - },\n -\n - program: function(program) {\n - var statements = program.statements;\n -\n - for(var i=0, l=statements.length; i<l; i++) {\n - this.accept(statements[i]);\n - }\n - this.isSimple = l === 1;\n -\n - this.depths.list = this.depths.list.sort(function(a, b) {\n - return a - b;\n - });\n -\n - return this;\n - },\n -\n - compileProgram: function(program) {\n - var result = new this.compiler().compile(program, this.options);\n - var guid = this.guid++, depth;\n -\n - this.usePartial = this.usePartial || result.usePartial;\n -\n - this.children[guid] = result;\n -\n - for(var i=0, l=result.depths.list.length; i<l; i++) {\n - depth = result.depths.list[i];\n -\n - if(depth < 2) { continue; }\n - else { this.addDepth(depth - 1); }\n - }\n -\n - return guid;\n - },\n -\n - block: function(block) {\n - var mustache = block.mustache,\n - program = block.program,\n - inverse = block.inverse;\n -\n - if (program) {\n - program = this.compileProgram(program);\n - }\n -\n - if (inverse) {\n - inverse = this.compileProgram(inverse);\n - }\n -\n - var sexpr = mustache.sexpr;\n - var type = this.classifySexpr(sexpr);\n -\n - if (type === "helper") {\n - this.helperSexpr(sexpr, program, inverse);\n - } else if (type === "simple") {\n - this.simpleSexpr(sexpr);\n -\n - // now that the simple mustache is resolved, we need to\n - // evaluate it by executing `blockHelperMissing`\n - this.opcode(\'pushProgram\', program);\n - this.opcode(\'pushProgram\', inverse);\n - this.opcode(\'emptyHash\');\n - this.opcode(\'blockValue\');\n - } else {\n - this.ambiguousSexpr(sexpr, program, inverse);\n -\n - // now that the simple mustache is resolved, we need to\n - // evaluate it by executing `blockHelperMissing`\n - this.opcode(\'pushProgram\', program);\n - this.opcode(\'pushProgram\', inverse);\n - this.opcode(\'emptyHash\');\n - this.opcode(\'ambiguousBlockValue\');\n - }\n -\n - this.opcode(\'append\');\n - },\n -\n - hash: function(hash) {\n - var pairs = hash.pairs, pair, val;\n -\n - this.opcode(\'pushHash\');\n -\n - for(var i=0, l=pairs.length; i<l; i++) {\n - pair = pairs[i];\n - val = pair[1];\n -\n - if (this.options.stringParams) {\n - if(val.depth) {\n - this.addDepth(val.depth);\n - }\n - this.opcode(\'getContext\', val.depth || 0);\n - this.opcode(\'pushStringParam\', val.stringModeValue, val.type);\n -\n - if (val.type === \'sexpr\') {\n - // Subexpressions get evaluated and passed in\n - // in string params mode.\n - this.sexpr(val);\n - }\n - } else {\n - this.accept(val);\n - }\n -\n - this.opcode(\'assignToHash\', pair[0]);\n - }\n - this.opcode(\'popHash\');\n - },\n -\n - partial: function(partial) {\n - var partialName = partial.partialName;\n - this.usePartial = true;\n -\n - if(partial.context) {\n - this.ID(partial.context);\n - } else {\n - this.opcode(\'push\', \'depth0\');\n - }\n -\n - this.opcode(\'invokePartial\', partialName.name);\n - this.opcode(\'append\');\n - },\n -\n - content: function(content) {\n - this.opcode(\'appendContent\', content.string);\n - },\n -\n - mustache: function(mustache) {\n - this.sexpr(mustache.sexpr);\n -\n - if(mustache.escaped && !this.options.noEscape) {\n - this.opcode(\'appendEscaped\');\n - } else {\n - this.opcode(\'append\');\n - }\n - },\n -\n - ambiguousSexpr: function(sexpr, program, inverse) {\n - var id = sexpr.id,\n - name = id.parts[0],\n - isBlock = program != null || inverse != null;\n -\n - this.opcode(\'getContext\', id.depth);\n -\n - this.opcode(\'pushProgram\', program);\n - this.opcode(\'pushProgram\', inverse);\n -\n - this.opcode(\'invokeAmbiguous\', name, isBlock);\n - },\n -\n - simpleSexpr: function(sexpr) {\n - var id = sexpr.id;\n -\n - if (id.type === \'DATA\') {\n - this.DATA(id);\n - } else if (id.parts.length) {\n - this.ID(id);\n - } else {\n - // Simplified ID for `this`\n - this.addDepth(id.depth);\n - this.opcode(\'getContext\', id.depth);\n - this.opcode(\'pushContext\');\n - }\n -\n - this.opcode(\'resolvePossibleLambda\');\n - },\n -\n - helperSexpr: function(sexpr, program, inverse) {\n - var params = this.setupFullMustacheParams(sexpr, program, inverse),\n - name = sexpr.id.parts[0];\n -\n - if (this.options.knownHelpers[name]) {\n - this.opcode(\'invokeKnownHelper\', params.length, name);\n - } else if (this.options.knownHelpersOnly) {\n - throw new Exception("You specified knownHelpersOnly, but used the unknown helper " + name, sexpr);\n - } else {\n - this.opcode(\'invokeHelper\', params.length, name, sexpr.isRoot);\n - }\n - },\n -\n - sexpr: function(sexpr) {\n - var type = this.classifySexpr(sexpr);\n -\n - if (type === "simple") {\n - this.simpleSexpr(sexpr);\n - } else if (type === "helper") {\n - this.helperSexpr(sexpr);\n - } else {\n - this.ambiguousSexpr(sexpr);\n - }\n - },\n -\n - ID: function(id) {\n - this.addDepth(id.depth);\n - this.opcode(\'getContext\', id.depth);\n -\n - var name = id.parts[0];\n - if (!name) {\n - this.opcode(\'pushContext\');\n - } else {\n - this.opcode(\'lookupOnContext\', id.parts[0]);\n - }\n -\n - for(var i=1, l=id.parts.length; i<l; i++) {\n - this.opcode(\'lookup\', id.parts[i]);\n - }\n - },\n -\n - DATA: function(data) {\n - this.options.data = true;\n - if (data.id.isScoped || data.id.depth) {\n - throw new Exception(\'Scoped data references are not supported: \' + data.original, data);\n - }\n -\n - this.opcode(\'lookupData\');\n - var parts = data.id.parts;\n - for(var i=0, l=parts.length; i<l; i++) {\n - this.opcode(\'lookup\', parts[i]);\n - }\n - },\n -\n - STRING: function(string) {\n - this.opcode(\'pushString\', string.string);\n - },\n -\n - INTEGER: function(integer) {\n - this.opcode(\'pushLiteral\', integer.integer);\n - },\n -\n - BOOLEAN: function(bool) {\n - this.opcode(\'pushLiteral\', bool.bool);\n - },\n -\n - comment: function() {},\n -\n - // HELPERS\n - opcode: function(name) {\n - this.opcodes.push({ opcode: name, args: [].slice.call(arguments, 1) });\n - },\n -\n - declare: function(name, value) {\n - this.opcodes.push({ opcode: \'DECLARE\', name: name, value: value });\n - },\n -\n - addDepth: function(depth) {\n - if(depth === 0) { return; }\n -\n - if(!this.depths[depth]) {\n - this.depths[depth] = true;\n - this.depths.list.push(depth);\n - }\n - },\n -\n - classifySexpr: function(sexpr) {\n - var isHelper = sexpr.isHelper;\n - var isEligible = sexpr.eligibleHelper;\n - var options = this.options;\n -\n - // if ambiguous, we can possibly resolve the ambiguity now\n - if (isEligible && !isHelper) {\n - var name = sexpr.id.parts[0];\n -\n - if (options.knownHelpers[name]) {\n - isHelper = true;\n - } else if (options.knownHelpersOnly) {\n - isEligible = false;\n - }\n - }\n -\n - if (isHelper) { return "helper"; }\n - else if (isEligible) { return "ambiguous"; }\n - else { return "simple"; }\n - },\n -\n - pushParams: function(params) {\n - var i = params.length, param;\n -\n - while(i--) {\n - param = params[i];\n -\n - if(this.options.stringParams) {\n - if(param.depth) {\n - this.addDepth(param.depth);\n - }\n -\n - this.opcode(\'getContext\', param.depth || 0);\n - this.opcode(\'pushStringParam\', param.stringModeValue, param.type);\n -\n - if (param.type === \'sexpr\') {\n - // Subexpressions get evaluated and passed in\n - // in string params mode.\n - this.sexpr(param);\n - }\n - } else {\n - this[param.type](param);\n - }\n - }\n - },\n -\n - setupFullMustacheParams: function(sexpr, program, inverse) {\n - var params = sexpr.params;\n - this.pushParams(params);\n -\n - this.opcode(\'pushProgram\', program);\n - this.opcode(\'pushProgram\', inverse);\n -\n - if (sexpr.hash) {\n - this.hash(sexpr.hash);\n - } else {\n - this.opcode(\'emptyHash\');\n - }\n -\n - return params;\n - }\n - };\n -\n - function precompile(input, options, env) {\n - if (input == null || (typeof input !== \'string\' && input.constructor !== env.AST.ProgramNode)) {\n - throw new Exception("You must pass a string or Handlebars AST to Handlebars.precompile. You passed " + input);\n - }\n -\n - options = options || {};\n - if (!(\'data\' in options)) {\n - options.data = true;\n - }\n -\n - var ast = env.parse(input);\n - var environment = new env.Compiler().compile(ast, options);\n - return new env.JavaScriptCompiler().compile(environment, options);\n - }\n -\n - __exports__.precompile = precompile;function compile(input, options, env) {\n - if (input == null || (typeof input !== \'string\' && input.constructor !== env.AST.ProgramNode)) {\n - throw new Exception("You must pass a string or Handlebars AST to Handlebars.compile. You passed " + input);\n - }\n -\n - options = options || {};\n -\n - if (!(\'data\' in options)) {\n - options.data = true;\n - }\n -\n - var compiled;\n -\n - function compileInput() {\n - var ast = env.parse(input);\n - var environment = new env.Compiler().compile(ast, options);\n - var templateSpec = new env.JavaScriptCompiler().compile(environment, options, undefined, true);\n - return env.template(templateSpec);\n - }\n -\n - // Template is only compiled on first use and cached after that point.\n - return function(context, options) {\n - if (!compiled) {\n - compiled = compileInput();\n - }\n - return compiled.call(this, context, options);\n - };\n - }\n -\n - __exports__.compile = compile;\n - return __exports__;\n -})(__module5__);\n -\n -// handlebars/compiler/javascript-compiler.js\n -var __module11__ = (function(__dependency1__, __dependency2__) {\n - "use strict";\n - var __exports__;\n - var COMPILER_REVISION = __dependency1__.COMPILER_REVISION;\n - var REVISION_CHANGES = __dependency1__.REVISION_CHANGES;\n - var log = __dependency1__.log;\n - var Exception = __dependency2__;\n -\n - function Literal(value) {\n - this.value = value;\n - }\n -\n - function JavaScriptCompiler() {}\n -\n - JavaScriptCompiler.prototype = {\n - // PUBLIC API: You can override these methods in a subclass to provide\n - // alternative compiled forms for name lookup and buffering semantics\n - nameLookup: function(parent, name /* , type*/) {\n - var wrap,\n - ret;\n - if (parent.indexOf(\'depth\') === 0) {\n - wrap = true;\n - }\n -\n - if (/^[0-9]+$/.test(name)) {\n - ret = parent + "[" + name + "]";\n - } else if (JavaScriptCompiler.isValidJavaScriptVariableName(name)) {\n - ret = parent + "." + name;\n - }\n - else {\n - ret = parent + "[\'" + name + "\']";\n - }\n -\n - if (wrap) {\n - return \'(\' + parent + \' && \' + ret + \')\';\n - } else {\n - return ret;\n - }\n - },\n -\n - compilerInfo: function() {\n - var revision = COMPILER_REVISION,\n - versions = REVISION_CHANGES[revision];\n - return "this.compilerInfo = ["+revision+",\'"+versions+"\'];\\n";\n - },\n -\n - appendToBuffer: function(string) {\n - if (this.environment.isSimple) {\n - return "return " + string + ";";\n - } else {\n - return {\n - appendToBuffer: true,\n - content: string,\n - toString: function() { return "buffer += " + string + ";"; }\n - };\n - }\n - },\n -\n - initializeBuffer: function() {\n - return this.quotedString("");\n - },\n -\n - namespace: "Handlebars",\n - // END PUBLIC API\n -\n - compile: function(environment, options, context, asObject) {\n - this.environment = environment;\n - this.options = options || {};\n -\n - log(\'debug\', this.environment.disassemble() + "\\n\\n");\n -\n - this.name = this.environment.name;\n - this.isChild = !!context;\n - this.context = context || {\n - programs: [],\n - environments: [],\n - aliases: { }\n - };\n -\n - this.preamble();\n -\n - this.stackSlot = 0;\n - this.stackVars = [];\n - this.registers = { list: [] };\n - this.hashes = [];\n - this.compileStack = [];\n - this.inlineStack = [];\n -\n - this.compileChildren(environment, options);\n -\n - var opcodes = environment.opcodes, opcode;\n -\n - this.i = 0;\n -\n - for(var l=opcodes.length; this.i<l; this.i++) {\n - opcode = opcodes[this.i];\n -\n - if(opcode.opcode === \'DECLARE\') {\n - this[opcode.name] = opcode.value;\n - } else {\n - this[opcode.opcode].apply(this, opcode.args);\n - }\n -\n - // Reset the stripNext flag if it was not set by this operation.\n - if (opcode.opcode !== this.stripNext) {\n - this.stripNext = false;\n - }\n - }\n -\n - // Flush any trailing content that might be pending.\n - this.pushSource(\'\');\n -\n - if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {\n - throw new Exception(\'Compile completed with content left on stack\');\n - }\n -\n - return this.createFunctionContext(asObject);\n - },\n -\n - preamble: function() {\n - var out = [];\n -\n - if (!this.isChild) {\n - var namespace = this.namespace;\n -\n - var copies = "helpers = this.merge(helpers, " + namespace + ".helpers);";\n - if (this.environment.usePartial) { copies = copies + " partials = this.merge(partials, " + namespace + ".partials);"; }\n - if (this.options.data) { copies = copies + " data = data || {};"; }\n - out.push(copies);\n - } else {\n - out.push(\'\');\n - }\n -\n - if (!this.environment.isSimple) {\n - out.push(", buffer = " + this.initializeBuffer());\n - } else {\n - out.push("");\n - }\n -\n - // track the last context pushed into place to allow skipping the\n - // getContext opcode when it would be a noop\n - this.lastContext = 0;\n - this.source = out;\n - },\n -\n - createFunctionContext: function(asObject) {\n - var locals = this.stackVars.concat(this.registers.list);\n -\n - if(locals.length > 0) {\n - this.source[1] = this.source[1] + ", " + locals.join(", ");\n - }\n -\n - // Generate minimizer alias mappings\n - if (!this.isChild) {\n - for (var alias in this.context.aliases) {\n - if (this.context.aliases.hasOwnProperty(alias)) {\n - this.source[1] = this.source[1] + \', \' + alias + \'=\' + this.context.aliases[alias];\n - }\n - }\n - }\n -\n - if (this.source[1]) {\n - this.source[1] = "var " + this.source[1].substring(2) + ";";\n - }\n -\n - // Merge children\n - if (!this.isChild) {\n - this.source[1] += \'\\n\' + this.context.programs.join(\'\\n\') + \'\\n\';\n - }\n -\n - if (!this.environment.isSimple) {\n - this.pushSource("return buffer;");\n - }\n -\n - var params = this.isChild ? ["depth0", "data"] : ["Handlebars", "depth0", "helpers", "partials", "data"];\n -\n - for(var i=0, l=this.environment.depths.list.length; i<l; i++) {\n - params.push("depth" + this.environment.depths.list[i]);\n - }\n -\n - // Perform a second pass over the output to merge content when possible\n - var source = this.mergeSource();\n -\n - if (!this.isChild) {\n - source = this.compilerInfo()+source;\n - }\n -\n - if (asObject) {\n - params.push(source);\n -\n - return Function.apply(this, params);\n - } else {\n - var functionSource = \'function \' + (this.name || \'\') + \'(\' + params.join(\',\') + \') {\\n \' + source + \'}\';\n - log(\'debug\', functionSource + "\\n\\n");\n - return functionSource;\n - }\n - },\n - mergeSource: function() {\n - // WARN: We are not handling the case where buffer is still populated as the source should\n - // not have buffer append operations as their final action.\n - var source = \'\',\n - buffer;\n - for (var i = 0, len = this.source.length; i < len; i++) {\n - var line = this.source[i];\n - if (line.appendToBuffer) {\n - if (buffer) {\n - buffer = buffer + \'\\n + \' + line.content;\n - } else {\n - buffer = line.content;\n - }\n - } else {\n - if (buffer) {\n - source += \'buffer += \' + buffer + \';\\n \';\n - buffer = undefined;\n - }\n - source += line + \'\\n \';\n - }\n - }\n - return source;\n - },\n -\n - // [blockValue]\n - //\n - // On stack, before: hash, inverse, program, value\n - // On stack, after: return value of blockHelperMissing\n - //\n - // The purpose of this opcode is to take a block of the form\n - // `{{#foo}}...{{/foo}}`, resolve the value of `foo`, and\n - // replace it on the stack with the result of properly\n - // invoking blockHelperMissing.\n - blockValue: function() {\n - this.context.aliases.blockHelperMissing = \'helpers.blockHelperMissing\';\n -\n - var params = ["depth0"];\n - this.setupParams(0, params);\n -\n - this.replaceStack(function(current) {\n - params.splice(1, 0, current);\n - return "blockHelperMissing.call(" + params.join(", ") + ")";\n - });\n - },\n -\n - // [ambiguousBlockValue]\n - //\n - // On stack, before: hash, inverse, program, value\n - // Compiler value, before: lastHelper=value of last found helper, if any\n - // On stack, after, if no lastHelper: same as [blockValue]\n - // On stack, after, if lastHelper: value\n - ambiguousBlockValue: function() {\n - this.context.aliases.blockHelperMissing = \'helpers.blockHelperMissing\';\n -\n - var params = ["depth0"];\n - this.setupParams(0, params);\n -\n - var current = this.topStack();\n - params.splice(1, 0, current);\n -\n - this.pushSource("if (!" + this.lastHelper + ") { " + current + " = blockHelperMissing.call(" + params.join(", ") + "); }");\n - },\n -\n - // [appendContent]\n - //\n - // On stack, before: ...\n - // On stack, after: ...\n - //\n - // Appends the string value of `content` to the current buffer\n - appendContent: function(content) {\n - if (this.pendingContent) {\n - content = this.pendingContent + content;\n - }\n - if (this.stripNext) {\n - content = content.replace(/^\\s+/, \'\');\n - }\n -\n - this.pendingContent = content;\n - },\n -\n - // [strip]\n - //\n - // On stack, before: ...\n - // On stack, after: ...\n - //\n - // Removes any trailing whitespace from the prior content node and flags\n - // the next operation for stripping if it is a content node.\n - strip: function() {\n - if (this.pendingContent) {\n - this.pendingContent = this.pendingContent.replace(/\\s+$/, \'\');\n - }\n - this.stripNext = \'strip\';\n - },\n -\n - // [append]\n - //\n - // On stack, before: value, ...\n - // On stack, after: ...\n - //\n - // Coerces `value` to a String and appends it to the current buffer.\n - //\n - // If `value` is truthy, or 0, it is coerced into a string and appended\n - // Otherwise, the empty string is appended\n - append: function() {\n - // Force anything that is inlined onto the stack so we don\'t have duplication\n - // when we examine local\n - this.flushInline();\n - var local = this.popStack();\n - this.pushSource("if(" + local + " || " + local + " === 0) { " + this.appendToBuffer(local) + " }");\n - if (this.environment.isSimple) {\n - this.pushSource("else { " + this.appendToBuffer("\'\'") + " }");\n - }\n - },\n -\n - // [appendEscaped]\n - //\n - // On stack, before: value, ...\n - // On stack, after: ...\n - //\n - // Escape `value` and append it to the buffer\n - appendEscaped: function() {\n - this.context.aliases.escapeExpression = \'this.escapeExpression\';\n -\n - this.pushSource(this.appendToBuffer("escapeExpression(" + this.popStack() + ")"));\n - },\n -\n - // [getContext]\n - //\n - // On stack, before: ...\n - // On stack, after: ...\n - // Compiler value, after: lastContext=depth\n - //\n - // Set the value of the `lastContext` compiler value to the depth\n - getContext: function(depth) {\n - if(this.lastContext !== depth) {\n - this.lastContext = depth;\n - }\n - },\n -\n - // [lookupOnContext]\n - //\n - // On stack, before: ...\n - // On stack, after: currentContext[name], ...\n - //\n - // Looks up the value of `name` on the current context and pushes\n - // it onto the stack.\n - lookupOnContext: function(name) {\n - this.push(this.nameLookup(\'depth\' + this.lastContext, name, \'context\'));\n - },\n -\n - // [pushContext]\n - //\n - // On stack, before: ...\n - // On stack, after: currentContext, ...\n - //\n - // Pushes the value of the current context onto the stack.\n - pushContext: function() {\n - this.pushStackLiteral(\'depth\' + this.lastContext);\n - },\n -\n - // [resolvePossibleLambda]\n - //\n - // On stack, before: value, ...\n - // On stack, after: resolved value, ...\n - //\n - // If the `value` is a lambda, replace it on the stack by\n - // the return value of the lambda\n - resolvePossibleLambda: function() {\n - this.context.aliases.functionType = \'"function"\';\n -\n - this.replaceStack(function(current) {\n - return "typeof " + current + " === functionType ? " + current + ".apply(depth0) : " + current;\n - });\n - },\n -\n - // [lookup]\n - //\n - // On stack, before: value, ...\n - // On stack, after: value[name], ...\n - //\n - // Replace the value on the stack with the result of looking\n - // up `name` on `value`\n - lookup: function(name) {\n - this.replaceStack(function(current) {\n - return current + " == null || " + current + " === false ? " + current + " : " + this.nameLookup(current, name, \'context\');\n - });\n - },\n -\n - // [lookupData]\n - //\n - // On stack, before: ...\n - // On stack, after: data, ...\n - //\n - // Push the data lookup operator\n - lookupData: function() {\n - this.pushStackLiteral(\'data\');\n - },\n -\n - // [pushStringParam]\n - //\n - // On stack, before: ...\n - // On stack, after: string, currentContext, ...\n - //\n - // This opcode is designed for use in string mode, which\n - // provides the string value of a parameter along with its\n - // depth rather than resolving it immediately.\n - pushStringParam: function(string, type) {\n - this.pushStackLiteral(\'depth\' + this.lastContext);\n -\n - this.pushString(type);\n -\n - // If it\'s a subexpression, the string result\n - // will be pushed after this opcode.\n - if (type !== \'sexpr\') {\n - if (typeof string === \'string\') {\n - this.pushString(string);\n - } else {\n - this.pushStackLiteral(string);\n - }\n - }\n - },\n -\n - emptyHash: function() {\n - this.pushStackLiteral(\'{}\');\n -\n - if (this.options.stringParams) {\n - this.push(\'{}\'); // hashContexts\n - this.push(\'{}\'); // hashTypes\n - }\n - },\n - pushHash: function() {\n - if (this.hash) {\n - this.hashes.push(this.hash);\n - }\n - this.hash = {values: [], types: [], contexts: []};\n - },\n - popHash: function() {\n - var hash = this.hash;\n - this.hash = this.hashes.pop();\n -\n - if (this.options.stringParams) {\n - this.push(\'{\' + hash.contexts.join(\',\') + \'}\');\n - this.push(\'{\' + hash.types.join(\',\') + \'}\');\n - }\n -\n - this.push(\'{\\n \' + hash.values.join(\',\\n \') + \'\\n }\');\n - },\n -\n - // [pushString]\n - //\n - // On stack, before: ...\n - // On stack, after: quotedString(string), ...\n - //\n - // Push a quoted version of `string` onto the stack\n - pushString: function(string) {\n - this.pushStackLiteral(this.quotedString(string));\n - },\n -\n - // [push]\n - //\n - // On stack, before: ...\n - // On stack, after: expr, ...\n - //\n - // Push an expression onto the stack\n - push: function(expr) {\n - this.inlineStack.push(expr);\n - return expr;\n - },\n -\n - // [pushLiteral]\n - //\n - // On stack, before: ...\n - // On stack, after: value, ...\n - //\n - // Pushes a value onto the stack. This operation prevents\n - // the compiler from creating a temporary variable to hold\n - // it.\n - pushLiteral: function(value) {\n - this.pushStackLiteral(value);\n - },\n -\n - // [pushProgram]\n - //\n - // On stack, before: ...\n - // On stack, after: program(guid), ...\n - //\n - // Push a program expression onto the stack. This takes\n - // a compile-time guid and converts it into a runtime-accessible\n - // expression.\n - pushProgram: function(guid) {\n - if (guid != null) {\n - this.pushStackLiteral(this.programExpression(guid));\n - } else {\n - this.pushStackLiteral(null);\n - }\n - },\n -\n - // [invokeHelper]\n - //\n - // On stack, before: hash, inverse, program, params..., ...\n - // On stack, after: result of helper invocation\n - //\n - // Pops off the helper\'s parameters, invokes the helper,\n - // and pushes the helper\'s return value onto the stack.\n - //\n - // If the helper is not found, `helperMissing` is called.\n - invokeHelper: function(paramSize, name, isRoot) {\n - this.context.aliases.helperMissing = \'helpers.helperMissing\';\n - this.useRegister(\'helper\');\n -\n - var helper = this.lastHelper = this.setupHelper(paramSize, name, true);\n - var nonHelper = this.nameLookup(\'depth\' + this.lastContext, name, \'context\');\n -\n - var lookup = \'helper = \' + helper.name + \' || \' + nonHelper;\n - if (helper.paramsInit) {\n - lookup += \',\' + helper.paramsInit;\n - }\n -\n - this.push(\n - \'(\'\n - + lookup\n - + \',helper \'\n - + \'? helper.call(\' + helper.callParams + \') \'\n - + \': helperMissing.call(\' + helper.helperMissingParams + \'))\');\n -\n - // Always flush subexpressions. This is both to prevent the compounding size issue that\n - // occurs when the code has to be duplicated for inlining and also to prevent errors\n - // due to the incorrect options object being passed due to the shared register.\n - if (!isRoot) {\n - this.flushInline();\n - }\n - },\n -\n - // [invokeKnownHelper]\n - //\n - // On stack, before: hash, inverse, program, params..., ...\n - // On stack, after: result of helper invocation\n - //\n - // This operation is used when the helper is known to exist,\n - // so a `helperMissing` fallback is not required.\n - invokeKnownHelper: function(paramSize, name) {\n - var helper = this.setupHelper(paramSize, name);\n - this.push(helper.name + ".call(" + helper.callParams + ")");\n - },\n -\n - // [invokeAmbiguous]\n - //\n - // On stack, before: hash, inverse, program, params..., ...\n - // On stack, after: result of disambiguation\n - //\n - // This operation is used when an expression like `{{foo}}`\n - // is provided, but we don\'t know at compile-time whether it\n - // is a helper or a path.\n - //\n - // This operation emits more code than the other options,\n - // and can be avoided by passing the `knownHelpers` and\n - // `knownHelpersOnly` flags at compile-time.\n - invokeAmbiguous: function(name, helperCall) {\n - this.context.aliases.functionType = \'"function"\';\n - this.useRegister(\'helper\');\n -\n - this.emptyHash();\n - var helper = this.setupHelper(0, name, helperCall);\n -\n - var helperName = this.lastHelper = this.nameLookup(\'helpers\', name, \'helper\');\n -\n - var nonHelper = this.nameLookup(\'depth\' + this.lastContext, name, \'context\');\n - var nextStack = this.nextStack();\n -\n - if (helper.paramsInit) {\n - this.pushSource(helper.paramsInit);\n - }\n - this.pushSource(\'if (helper = \' + helperName + \') { \' + nextStack + \' = helper.call(\' + helper.callParams + \'); }\');\n - this.pushSource(\'else { helper = \' + nonHelper + \'; \' + nextStack + \' = typeof helper === functionType ? helper.call(\' + helper.callParams + \') : helper; }\');\n - },\n -\n - // [invokePartial]\n - //\n - // On stack, before: context, ...\n - // On stack after: result of partial invocation\n - //\n - // This operation pops off a context, invokes a partial with that context,\n - // and pushes the result of the invocation back.\n - invokePartial: function(name) {\n - var params = [this.nameLookup(\'partials\', name, \'partial\'), "\'" + name + "\'", this.popStack(), "helpers", "partials"];\n -\n - if (this.options.data) {\n - params.push("data");\n - }\n -\n - this.context.aliases.self = "this";\n - this.push("self.invokePartial(" + params.join(", ") + ")");\n - },\n -\n - // [assignToHash]\n - //\n - // On stack, before: value, hash, ...\n - // On stack, after: hash, ...\n - //\n - // Pops a value and hash off the stack, assigns `hash[key] = value`\n - // and pushes the hash back onto the stack.\n - assignToHash: function(key) {\n - var value = this.popStack(),\n - context,\n - type;\n -\n - if (this.options.stringParams) {\n - type = this.popStack();\n - context = this.popStack();\n - }\n -\n - var hash = this.hash;\n - if (context) {\n - hash.contexts.push("\'" + key + "\': " + context);\n - }\n - if (type) {\n - hash.types.push("\'" + key + "\': " + type);\n - }\n - hash.values.push("\'" + key + "\': (" + value + ")");\n - },\n -\n - // HELPERS\n -\n - compiler: JavaScriptCompiler,\n -\n - compileChildren: function(environment, options) {\n - var children = environment.children, child, compiler;\n -\n - for(var i=0, l=children.length; i<l; i++) {\n - child = children[i];\n - compiler = new this.compiler();\n -\n - var index = this.matchExistingProgram(child);\n -\n - if (index == null) {\n - this.context.programs.push(\'\'); // Placeholder to prevent name conflicts for nested children\n - index = this.context.programs.length;\n - child.index = index;\n - child.name = \'program\' + index;\n - this.context.programs[index] = compiler.compile(child, options, this.context);\n - this.context.environments[index] = child;\n - } else {\n - child.index = index;\n - child.name = \'program\' + index;\n - }\n - }\n - },\n - matchExistingProgram: function(child) {\n - for (var i = 0, len = this.context.environments.length; i < len; i++) {\n - var environment = this.context.environments[i];\n - if (environment && environment.equals(child)) {\n - return i;\n - }\n - }\n - },\n -\n - programExpression: function(guid) {\n - this.context.aliases.self = "this";\n -\n - if(guid == null) {\n - return "self.noop";\n - }\n -\n - var child = this.environment.children[guid],\n - depths = child.depths.list, depth;\n -\n - var programParams = [child.index, child.name, "data"];\n -\n - for(var i=0, l = depths.length; i<l; i++) {\n - depth = depths[i];\n -\n - if(depth === 1) { programParams.push("depth0"); }\n - else { programParams.push("depth" + (depth - 1)); }\n - }\n -\n - return (depths.length === 0 ? "self.program(" : "self.programWithDepth(") + programParams.join(", ") + ")";\n - },\n -\n - register: function(name, val) {\n - this.useRegister(name);\n - this.pushSource(name + " = " + val + ";");\n - },\n -\n - useRegister: function(name) {\n - if(!this.registers[name]) {\n - this.registers[name] = true;\n - this.registers.list.push(name);\n - }\n - },\n -\n - pushStackLiteral: function(item) {\n - return this.push(new Literal(item));\n - },\n -\n - pushSource: function(source) {\n - if (this.pendingContent) {\n - this.source.push(this.appendToBuffer(this.quotedString(this.pendingContent)));\n - this.pendingContent = undefined;\n - }\n -\n - if (source) {\n - this.source.push(source);\n - }\n - },\n -\n - pushStack: function(item) {\n - this.flushInline();\n -\n - var stack = this.incrStack();\n - if (item) {\n - this.pushSource(stack + " = " + item + ";");\n - }\n - this.compileStack.push(stack);\n - return stack;\n - },\n -\n - replaceStack: function(callback) {\n - var prefix = \'\',\n - inline = this.isInline(),\n - stack,\n - createdStack,\n - usedLiteral;\n -\n - // If we are currently inline then we want to merge the inline statement into the\n - // replacement statement via \',\'\n - if (inline) {\n - var top = this.popStack(true);\n -\n - if (top instanceof Literal) {\n - // Literals do not need to be inlined\n - stack = top.value;\n - usedLiteral = true;\n - } else {\n - // Get or create the current stack name for use by the inline\n - createdStack = !this.stackSlot;\n - var name = !createdStack ? this.topStackName() : this.incrStack();\n -\n - prefix = \'(\' + this.push(name) + \' = \' + top + \'),\';\n - stack = this.topStack();\n - }\n - } else {\n - stack = this.topStack();\n - }\n -\n - var item = callback.call(this, stack);\n -\n - if (inline) {\n - if (!usedLiteral) {\n - this.popStack();\n - }\n - if (createdStack) {\n - this.stackSlot--;\n - }\n - this.push(\'(\' + prefix + item + \')\');\n - } else {\n - // Prevent modification of the context depth variable. Through replaceStack\n - if (!/^stack/.test(stack)) {\n - stack = this.nextStack();\n - }\n -\n - this.pushSource(stack + " = (" + prefix + item + ");");\n - }\n - return stack;\n - },\n -\n - nextStack: function() {\n - return this.pushStack();\n - },\n -\n - incrStack: function() {\n - this.stackSlot++;\n - if(this.stackSlot > this.stackVars.length) { this.stackVars.push("stack" + this.stackSlot); }\n - return this.topStackName();\n - },\n - topStackName: function() {\n - return "stack" + this.stackSlot;\n - },\n - flushInline: function() {\n - var inlineStack = this.inlineStack;\n - if (inlineStack.length) {\n - this.inlineStack = [];\n - for (var i = 0, len = inlineStack.length; i < len; i++) {\n - var entry = inlineStack[i];\n - if (entry instanceof Literal) {\n - this.compileStack.push(entry);\n - } else {\n - this.pushStack(entry);\n - }\n - }\n - }\n - },\n - isInline: function() {\n - return this.inlineStack.length;\n - },\n -\n - popStack: function(wrapped) {\n - var inline = this.isInline(),\n - item = (inline ? this.inlineStack : this.compileStack).pop();\n -\n - if (!wrapped && (item instanceof Literal)) {\n - return item.value;\n - } else {\n - if (!inline) {\n - if (!this.stackSlot) {\n - throw new Exception(\'Invalid stack pop\');\n - }\n - this.stackSlot--;\n - }\n - return item;\n - }\n - },\n -\n - topStack: function(wrapped) {\n - var stack = (this.isInline() ? this.inlineStack : this.compileStack),\n - item = stack[stack.length - 1];\n -\n - if (!wrapped && (item instanceof Literal)) {\n - return item.value;\n - } else {\n - return item;\n - }\n - },\n -\n - quotedString: function(str) {\n - return \'"\' + str\n - .replace(/\\\\/g, \'\\\\\\\\\')\n - .replace(/"/g, \'\\\\"\')\n - .replace(/\\n/g, \'\\\\n\')\n - .replace(/\\r/g, \'\\\\r\')\n - .replace(/\\u2028/g, \'\\\\u2028\') // Per Ecma-262 7.3 + 7.8.4\n - .replace(/\\u2029/g, \'\\\\u2029\') + \'"\';\n - },\n -\n - setupHelper: function(paramSize, name, missingParams) {\n - var params = [],\n - paramsInit = this.setupParams(paramSize, params, missingParams);\n - var foundHelper = this.nameLookup(\'helpers\', name, \'helper\');\n -\n - return {\n - params: params,\n - paramsInit: paramsInit,\n - name: foundHelper,\n - callParams: ["depth0"].concat(params).join(", "),\n - helperMissingParams: missingParams && ["depth0", this.quotedString(name)].concat(params).join(", ")\n - };\n - },\n -\n - setupOptions: function(paramSize, params) {\n - var options = [], contexts = [], types = [], param, inverse, program;\n -\n - options.push("hash:" + this.popStack());\n -\n - if (this.options.stringParams) {\n - options.push("hashTypes:" + this.popStack());\n - options.push("hashContexts:" + this.popStack());\n - }\n -\n - inverse = this.popStack();\n - program = this.popStack();\n -\n - // Avoid setting fn and inverse if neither are set. This allows\n - // helpers to do a check for `if (options.fn)`\n - if (program || inverse) {\n - if (!program) {\n - this.context.aliases.self = "this";\n - program = "self.noop";\n - }\n -\n - if (!inverse) {\n - this.context.aliases.self = "this";\n - inverse = "self.noop";\n - }\n -\n - options.push("inverse:" + inverse);\n - options.push("fn:" + program);\n - }\n -\n - for(var i=0; i<paramSize; i++) {\n - param = this.popStack();\n - params.push(param);\n -\n - if(this.options.stringParams) {\n - types.push(this.popStack());\n - contexts.push(this.popStack());\n - }\n - }\n -\n - if (this.options.stringParams) {\n - options.push("contexts:[" + contexts.join(",") + "]");\n - options.push("types:[" + types.join(",") + "]");\n - }\n -\n - if(this.options.data) {\n - options.push("data:data");\n - }\n -\n - return options;\n - },\n -\n - // the params and contexts arguments are passed in arrays\n - // to fill in\n - setupParams: function(paramSize, params, useRegister) {\n - var options = \'{\' + this.setupOptions(paramSize, params).join(\',\') + \'}\';\n -\n - if (useRegister) {\n - this.useRegister(\'options\');\n - params.push(\'options\');\n - return \'options=\' + options;\n - } else {\n - params.push(options);\n - return \'\';\n - }\n - }\n - };\n -\n - var reservedWords = (\n - "break else new var" +\n - " case finally return void" +\n - " catch for switch while" +\n - " continue function this with" +\n - " default if throw" +\n - " delete in try" +\n - " do instanceof typeof" +\n - " abstract enum int short" +\n - " boolean export interface static" +\n - " byte extends long super" +\n - " char final native synchronized" +\n - " class float package throws" +\n - " const goto private transient" +\n - " debugger implements protected volatile" +\n - " double import public let yield"\n - ).split(" ");\n -\n - var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};\n -\n - for(var i=0, l=reservedWords.length; i<l; i++) {\n - compilerWords[reservedWords[i]] = true;\n - }\n -\n - JavaScriptCompiler.isValidJavaScriptVariableName = function(name) {\n - if(!JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name)) {\n - return true;\n - }\n - return false;\n - };\n -\n - __exports__ = JavaScriptCompiler;\n - return __exports__;\n -})(__module2__, __module5__);\n -\n -// handlebars.js\n -var __module0__ = (function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__) {\n - "use strict";\n - var __exports__;\n - /*globals Handlebars: true */\n - var Handlebars = __dependency1__;\n -\n - // Compiler imports\n - var AST = __dependency2__;\n - var Parser = __dependency3__.parser;\n - var parse = __dependency3__.parse;\n - var Compiler = __dependency4__.Compiler;\n - var compile = __dependency4__.compile;\n - var precompile = __dependency4__.precompile;\n - var JavaScriptCompiler = __dependency5__;\n -\n - var _create = Handlebars.create;\n - var create = function() {\n - var hb = _create();\n -\n - hb.compile = function(input, options) {\n - return compile(input, options, hb);\n - };\n - hb.precompile = function (input, options) {\n - return precompile(input, options, hb);\n - };\n -\n - hb.AST = AST;\n - hb.Compiler = Compiler;\n - hb.JavaScriptCompiler = JavaScriptCompiler;\n - hb.Parser = Parser;\n - hb.parse = parse;\n -\n - return hb;\n - };\n -\n - Handlebars = create();\n - Handlebars.create = create;\n -\n - __exports__ = Handlebars;\n - return __exports__;\n -})(__module1__, __module7__, __module8__, __module10__, __module11__);\n -\n - return __module0__;\n -})();\n - - -]]></string> </value> - </item> - <item> - <key> <string>title</string> </key> - <value> <string>handlebars.js</string> </value> - </item> - <item> - <key> <string>version</string> </key> - <value> <string>1.3.0</string> </value> - </item> - <item> - <key> <string>workflow_history</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> - </value> - </item> - </dictionary> - </pickle> - </record> - <record id="2" aka="AAAAAAAAAAI="> - <pickle> - <global name="PersistentMapping" module="Persistence.mapping"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>data</string> </key> - <value> - <dictionary> - <item> - <key> <string>document_publication_workflow</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> - </value> - </item> - <item> - <key> <string>edit_workflow</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> - </value> - </item> - <item> - <key> <string>processing_status_workflow</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> - </value> - </item> - </dictionary> - </value> - </item> - </dictionary> - </pickle> - </record> - <record id="3" aka="AAAAAAAAAAM="> - <pickle> - <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/> - </pickle> - <pickle> - <tuple> - <none/> - <list> - <dictionary> - <item> - <key> <string>action</string> </key> - <value> <string>publish_alive</string> </value> - </item> - <item> - <key> <string>actor</string> </key> - <value> <string>romain</string> </value> - </item> - <item> - <key> <string>comment</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>error_message</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>time</string> </key> - <value> - <object> - <klass> - <global name="DateTime" module="DateTime.DateTime"/> - </klass> - <tuple> - <none/> - </tuple> - <state> - <tuple> - <float>1406898405.84</float> - <string>GMT</string> - </tuple> - </state> - </object> - </value> - </item> - <item> - <key> <string>validation_state</string> </key> - <value> <string>published_alive</string> </value> - </item> - </dictionary> - </list> - </tuple> - </pickle> - </record> - <record id="4" aka="AAAAAAAAAAQ="> - <pickle> - <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/> - </pickle> - <pickle> - <tuple> - <none/> - <list> - <dictionary> - <item> - <key> <string>action</string> </key> - <value> <string>edit</string> </value> - </item> - <item> - <key> <string>actor</string> </key> - <value> <string>zope</string> </value> - </item> - <item> - <key> <string>comment</string> </key> - <value> - <none/> - </value> - </item> - <item> - <key> <string>error_message</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>serial</string> </key> - <value> <string>936.8973.22039.58624</string> </value> - </item> - <item> - <key> <string>state</string> </key> - <value> <string>current</string> </value> - </item> - <item> - <key> <string>time</string> </key> - <value> - <object> - <klass> - <global name="DateTime" module="DateTime.DateTime"/> - </klass> - <tuple> - <none/> - </tuple> - <state> - <tuple> - <float>1405933455.0</float> - <string>GMT</string> - </tuple> - </state> - </object> - </value> - </item> - </dictionary> - </list> - </tuple> - </pickle> - </record> - <record id="5" aka="AAAAAAAAAAU="> - <pickle> - <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/> - </pickle> - <pickle> - <tuple> - <none/> - <list> - <dictionary> - <item> - <key> <string>action</string> </key> - <value> <string>detect_converted_file</string> </value> - </item> - <item> - <key> <string>actor</string> </key> - <value> <string>romain</string> </value> - </item> - <item> - <key> <string>comment</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>error_message</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>external_processing_state</string> </key> - <value> <string>converted</string> </value> - </item> - <item> - <key> <string>serial</string> </key> - <value> <string>0.0.0.0</string> </value> - </item> - <item> - <key> <string>time</string> </key> - <value> - <object> - <klass> - <global name="DateTime" module="DateTime.DateTime"/> - </klass> - <tuple> - <none/> - </tuple> - <state> - <tuple> - <float>1405089111.63</float> - <string>GMT</string> - </tuple> - </state> - </object> - </value> - </item> - </dictionary> - </list> - </tuple> - </pickle> - </record> -</ZopeData> -- 2.30.9