PageSourceSearch

https://www.ville-chilly-mazarin.fr/wp-content/plugins/wp-file-dow…/site/assets/js/handlebars.js?ver=6.3.11

js ville-chilly-mazarin.fr collected 2026-10-02 19:16:31 UTC 202,717 bytes, 6,026 lines download raw bytes

vendor: 72,522 bytes, lines 1-2380
1/**!
2
3 @license
4 handlebars v4.7.9
5
6 Copyright (C) 2011-2019 by Yehuda Katz
7
8 Permission is hereby granted, free of charge, to any person obtaining a copy
9 of this software and associated documentation files (the "Software"), to deal
10 in the Software without restriction, including without limitation the rights
11 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 copies of the Software, and to permit persons to whom the Software is
13 furnished to do so, subject to the following conditions:
14
15 The above copyright notice and this permission notice shall be included in
16 all copies or substantial portions of the Software.
17
18 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 THE SOFTWARE.
25
26 */
27(function webpackUniversalModuleDefinition(root, factory) {
28	if(typeof exports === 'object' && typeof module === 'object')
29		module.exports = factory();
30	else if(typeof define === 'function' && define.amd)
31		define([], factory);
32	else if(typeof exports === 'object')
33		exports["Handlebars"] = factory();
34	else
35		root["Handlebars"] = factory();
36})(this, function() {
37	return /******/ (function(modules) { // webpackBootstrap
38		/******/ 	// The module cache
39		/******/ 	var installedModules = {};
40
41		/******/ 	// The require function
42		/******/ 	function __webpack_require__(moduleId) {
43
44			/******/ 		// Check if module is in cache
45			/******/ 		if(installedModules[moduleId])
46				/******/ 			return installedModules[moduleId].exports;
47
48			/******/ 		// Create a new module (and put it into the cache)
49			/******/ 		var module = installedModules[moduleId] = {
50				/******/ 			exports: {},
51				/******/ 			id: moduleId,
52				/******/ 			loaded: false
53				/******/ 		};
54
55			/******/ 		// Execute the module function
56			/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
57
58			/******/ 		// Flag the module as loaded
59			/******/ 		module.loaded = true;
60
61			/******/ 		// Return the exports of the module
62			/******/ 		return module.exports;
63			/******/ 	}
64
65
66		/******/ 	// expose the modules object (__webpack_modules__)
67		/******/ 	__webpack_require__.m = modules;
68
69		/******/ 	// expose the module cache
70		/******/ 	__webpack_require__.c = installedModules;
71
72		/******/ 	// __webpack_public_path__
73		/******/ 	__webpack_require__.p = "";
74
75		/******/ 	// Load entry module and return exports
76		/******/ 	return __webpack_require__(0);
77		/******/ })
78		/************************************************************************/
79		/******/ ([
80			/* 0 */
81			/***/ (function(module, exports, __webpack_require__) {
82
83				'use strict';
84
85				var _interopRequireDefault = __webpack_require__(1)['default'];
86
87				exports.__esModule = true;
88
89				var _handlebarsRuntime = __webpack_require__(2);
90
91				var _handlebarsRuntime2 = _interopRequireDefault(_handlebarsRuntime);
92
93				// Compiler imports
94
95				var _handlebarsCompilerAst = __webpack_require__(83);
96
97				var _handlebarsCompilerAst2 = _interopRequireDefault(_handlebarsCompilerAst);
98
99				var _handlebarsCompilerBase = __webpack_require__(84);
100
101				var _handlebarsCompilerCompiler = __webpack_require__(89);
102
103				var _handlebarsCompilerJavascriptCompiler = __webpack_require__(90);
104
105				var _handlebarsCompilerJavascriptCompiler2 = _interopRequireDefault(_handlebarsCompilerJavascriptCompiler);
106
107				var _handlebarsCompilerVisitor = __webpack_require__(87);
108
109				var _handlebarsCompilerVisitor2 = _interopRequireDefault(_handlebarsCompilerVisitor);
110
111				var _handlebarsNoConflict = __webpack_require__(82);
112
113				var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
114
115				var _create = _handlebarsRuntime2['default'].create;
116				function create() {
117					var hb = _create();
118
119					hb.compile = function (input, options) {
120						return _handlebarsCompilerCompiler.compile(input, options, hb);
121					};
122					hb.precompile = function (input, options) {
123						return _handlebarsCompilerCompiler.precompile(input, options, hb);
124					};
125
126					hb.AST = _handlebarsCompilerAst2['default'];
127					hb.Compiler = _handlebarsCompilerCompiler.Compiler;
128					hb.JavaScriptCompiler = _handlebarsCompilerJavascriptCompiler2['default'];
129					hb.Parser = _handlebarsCompilerBase.parser;
130					hb.parse = _handlebarsCompilerBase.parse;
131					hb.parseWithoutProcessing = _handlebarsCompilerBase.parseWithoutProcessing;
132
133					return hb;
134				}
135
136				var inst = create();
137				inst.create = create;
138
139				_handlebarsNoConflict2['default'](inst);
140
141				inst.Visitor = _handlebarsCompilerVisitor2['default'];
142
143				inst['default'] = inst;
144
145				exports['default'] = inst;
146				module.exports = exports['default'];
147
148				/***/ }),
149			/* 1 */
150			/***/ (function(module, exports) {
151
152				"use strict";
153
154				exports["default"] = function (obj) {
155					return obj && obj.__esModule ? obj : {
156						"default": obj
157					};
158				};
159
160				exports.__esModule = true;
161
162				/***/ }),
163			/* 2 */
164			/***/ (function(module, exports, __webpack_require__) {
165
166				'use strict';
167
168				var _interopRequireWildcard = __webpack_require__(3)['default'];
169
170				var _interopRequireDefault = __webpack_require__(1)['default'];
171
172				exports.__esModule = true;
173
174				var _handlebarsBase = __webpack_require__(4);
175
176				var base = _interopRequireWildcard(_handlebarsBase);
177
178				// Each of these augment the Handlebars object. No need to setup here.
179				// (This is done to easily share code between commonjs and browse envs)
180
181				var _handlebarsSafeString = __webpack_require__(76);
182
183				var _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);
184
185				var _handlebarsException = __webpack_require__(6);
186
187				var _handlebarsException2 = _interopRequireDefault(_handlebarsException);
188
189				var _handlebarsUtils = __webpack_require__(5);
190
191				var Utils = _interopRequireWildcard(_handlebarsUtils);
192
193				var _handlebarsRuntime = __webpack_require__(77);
194
195				var runtime = _interopRequireWildcard(_handlebarsRuntime);
196
197				var _handlebarsNoConflict = __webpack_require__(82);
198
199				var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
200
201				// For compatibility and usage outside of module systems, make the Handlebars object a namespace
202				function create() {
203					var hb = new base.HandlebarsEnvironment();
204
205					Utils.extend(hb, base);
206					hb.SafeString = _handlebarsSafeString2['default'];
207					hb.Exception = _handlebarsException2['default'];
208					hb.Utils = Utils;
209					hb.escapeExpression = Utils.escapeExpression;
210
211					hb.VM = runtime;
212					hb.template = function (spec) {
213						return runtime.template(spec, hb);
214					};
215
216					return hb;
217				}
218
219				var inst = create();
220				inst.create = create;
221
222				_handlebarsNoConflict2['default'](inst);
223
224				inst['default'] = inst;
225
226				exports['default'] = inst;
227				module.exports = exports['default'];
228
229				/***/ }),
230			/* 3 */
231			/***/ (function(module, exports) {
232
233				"use strict";
234
235				exports["default"] = function (obj) {
236					if (obj && obj.__esModule) {
237						return obj;
238					} else {
239						var newObj = {};
240
241						if (obj != null) {
242							for (var key in obj) {
243								if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];
244							}
245						}
246
247						newObj["default"] = obj;
248						return newObj;
249					}
250				};
251
252				exports.__esModule = true;
253
254				/***/ }),
255			/* 4 */
256			/***/ (function(module, exports, __webpack_require__) {
257
258				'use strict';
259
260				var _interopRequireDefault = __webpack_require__(1)['default'];
261
262				exports.__esModule = true;
263				exports.HandlebarsEnvironment = HandlebarsEnvironment;
264
265				var _utils = __webpack_require__(5);
266
267				var _exception = __webpack_require__(6);
268
269				var _exception2 = _interopRequireDefault(_exception);
270
271				var _helpers = __webpack_require__(10);
272
273				var _decorators = __webpack_require__(70);
274
275				var _logger = __webpack_require__(72);
276
277				var _logger2 = _interopRequireDefault(_logger);
278
279				var _internalProtoAccess = __webpack_require__(73);
280
281				var VERSION = '4.7.9';
282				exports.VERSION = VERSION;
283				var COMPILER_REVISION = 8;
284				exports.COMPILER_REVISION = COMPILER_REVISION;
285				var LAST_COMPATIBLE_COMPILER_REVISION = 7;
286
287				exports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;
288				var REVISION_CHANGES = {
289					1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it
290					2: '== 1.0.0-rc.3',
291					3: '== 1.0.0-rc.4',
292					4: '== 1.x.x',
293					5: '== 2.0.0-alpha.x',
294					6: '>= 2.0.0-beta.1',
295					7: '>= 4.0.0 <4.3.0',
296					8: '>= 4.3.0'
297				};
298
299				exports.REVISION_CHANGES = REVISION_CHANGES;
300				var objectType = '[object Object]';
301
302				function HandlebarsEnvironment(helpers, partials, decorators) {
303					this.helpers = helpers || {};
304					this.partials = partials || {};
305					this.decorators = decorators || {};
306
307					_helpers.registerDefaultHelpers(this);
308					_decorators.registerDefaultDecorators(this);
309				}
310
311				HandlebarsEnvironment.prototype = {
312					constructor: HandlebarsEnvironment,
313
314					logger: _logger2['default'],
315					log: _logger2['default'].log,
316
317					registerHelper: function registerHelper(name, fn) {
318						if (_utils.toString.call(name) === objectType) {
319							if (fn) {
320								throw new _exception2['default']('Arg not supported with multiple helpers');
321							}
322							_utils.extend(this.helpers, name);
323						} else {
324							this.helpers[name] = fn;
325						}
326					},
327					unregisterHelper: function unregisterHelper(name) {
328						delete this.helpers[name];
329					},
330
331					registerPartial: function registerPartial(name, partial) {
332						if (_utils.toString.call(name) === objectType) {
333							_utils.extend(this.partials, name);
334						} else {
335							if (typeof partial === 'undefined') {
336								throw new _exception2['default']('Attempting to register a partial called "' + name + '" as undefined');
337							}
338							this.partials[name] = partial;
339						}
340					},
341					unregisterPartial: function unregisterPartial(name) {
342						delete this.partials[name];
343					},
344
345					registerDecorator: function registerDecorator(name, fn) {
346						if (_utils.toString.call(name) === objectType) {
347							if (fn) {
348								throw new _exception2['default']('Arg not supported with multiple decorators');
349							}
350							_utils.extend(this.decorators, name);
351						} else {
352							this.decorators[name] = fn;
353						}
354					},
355					unregisterDecorator: function unregisterDecorator(name) {
356						delete this.decorators[name];
357					},
358					/**
359					 * Reset the memory of illegal property accesses that have already been logged.
360					 * @deprecated should only be used in handlebars test-cases
361					 */
362					resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {
363						_internalProtoAccess.resetLoggedProperties();
364					}
365				};
366
367				var log = _logger2['default'].log;
368
369				exports.log = log;
370				exports.createFrame = _utils.createFrame;
371				exports.logger = _logger2['default'];
372
373				/***/ }),
374			/* 5 */
375			/***/ (function(module, exports) {
376
377				'use strict';
378
379				exports.__esModule = true;
380				exports.extend = extend;
381				exports.indexOf = indexOf;
382				exports.escapeExpression = escapeExpression;
383				exports.isEmpty = isEmpty;
384				exports.createFrame = createFrame;
385				exports.blockParams = blockParams;
386				exports.appendContextPath = appendContextPath;
387				var escape = {
388					'&': '&amp;',
389					'<': '&lt;',
390					'>': '&gt;',
391					'"': '&quot;',
392					"'": '&#x27;',
393					'`': '&#x60;',
394					'=': '&#x3D;'
395				};
396
397				var badChars = /[&<>"'`=]/g,
398					possible = /[&<>"'`=]/;
399
400				function escapeChar(chr) {
401					return escape[chr];
402				}
403
404				function extend(obj /* , ...source */) {
405					for (var i = 1; i < arguments.length; i++) {
406						for (var key in arguments[i]) {
407							if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {
408								obj[key] = arguments[i][key];
409							}
410						}
411					}
412
413					return obj;
414				}
415
416				var toString = Object.prototype.toString;
417
418				exports.toString = toString;
419				// Sourced from lodash
420				// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt
421				/* eslint-disable func-style */
422				var isFunction = function isFunction(value) {
423					return typeof value === 'function';
424				};
425				// fallback for older versions of Chrome and Safari
426				/* istanbul ignore next */
427				if (isFunction(/x/)) {
428					exports.isFunction = isFunction = function (value) {
429						return typeof value === 'function' && toString.call(value) === '[object Function]';
430					};
431				}
432				exports.isFunction = isFunction;
433
434				/* eslint-enable func-style */
435
436				/* istanbul ignore next */
437				var isArray = Array.isArray || function (value) {
438					return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;
439				};
440
441				exports.isArray = isArray;
442				// Older IE versions do not directly support indexOf so we must implement our own, sadly.
443
444				function indexOf(array, value) {
445					for (var i = 0, len = array.length; i < len; i++) {
446						if (array[i] === value) {
447							return i;
448						}
449					}
450					return -1;
451				}
452
453				function escapeExpression(string) {
454					if (typeof string !== 'string') {
455						// don't escape SafeStrings, since they're already safe
456						if (string && string.toHTML) {
457							return string.toHTML();
458						} else if (string == null) {
459							return '';
460						} else if (!string) {
461							return string + '';
462						}
463
464						// Force a string conversion as this will be done by the append regardless and
465						// the regex test will do this transparently behind the scenes, causing issues if
466						// an object's to string has escaped characters in it.
467						string = '' + string;
468					}
469
470					if (!possible.test(string)) {
471						return string;
472					}
473					return string.replace(badChars, escapeChar);
474				}
475
476				function isEmpty(value) {
477					if (!value && value !== 0) {
478						return true;
479					} else if (isArray(value) && value.length === 0) {
480						return true;
481					} else {
482						return false;
483					}
484				}
485
486				function createFrame(object) {
487					var frame = extend({}, object);
488					frame._parent = object;
489					return frame;
490				}
491
492				function blockParams(params, ids) {
493					params.path = ids;
494					return params;
495				}
496
497				function appendContextPath(contextPath, id) {
498					return (contextPath ? contextPath + '.' : '') + id;
499				}
500
501				/***/ }),
502			/* 6 */
503			/***/ (function(module, exports, __webpack_require__) {
504
505				'use strict';
506
507				var _Object$defineProperty = __webpack_require__(7)['default'];
508
509				exports.__esModule = true;
510				var errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];
511
512				function Exception(message, node) {
513					var loc = node && node.loc,
514						line = undefined,
515						endLineNumber = undefined,
516						column = undefined,
517						endColumn = undefined;
518
519					if (loc) {
520						line = loc.start.line;
521						endLineNumber = loc.end.line;
522						column = loc.start.column;
523						endColumn = loc.end.column;
524
525						message += ' - ' + line + ':' + column;
526					}
527
528					var tmp = Error.prototype.constructor.call(this, message);
529
530					// Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.
531					for (var idx = 0; idx < errorProps.length; idx++) {
532						this[errorProps[idx]] = tmp[errorProps[idx]];
533					}
534
535					/* istanbul ignore else */
536					if (Error.captureStackTrace) {
537						Error.captureStackTrace(this, Exception);
538					}
539
540					try {
541						if (loc) {
542							this.lineNumber = line;
543							this.endLineNumber = endLineNumber;
544
545							// Work around issue under safari where we can't directly set the column value
546							/* istanbul ignore next */
547							if (_Object$defineProperty) {
548								Object.defineProperty(this, 'column', {
549									value: column,
550									enumerable: true
551								});
552								Object.defineProperty(this, 'endColumn', {
553									value: endColumn,
554									enumerable: true
555								});
556							} else {
557								this.column = column;
558								this.endColumn = endColumn;
559							}
560						}
561					} catch (nop) {
562						/* Ignore if the browser is very particular */
563					}
564				}
565
566				Exception.prototype = new Error();
567
568				exports['default'] = Exception;
569				module.exports = exports['default'];
570
571				/***/ }),
572			/* 7 */
573			/***/ (function(module, exports, __webpack_require__) {
574
575				module.exports = { "default": __webpack_require__(8), __esModule: true };
576
577				/***/ }),
578			/* 8 */
579			/***/ (function(module, exports, __webpack_require__) {
580
581				var $ = __webpack_require__(9);
582				module.exports = function defineProperty(it, key, desc){
583					return $.setDesc(it, key, desc);
584				};
585
586				/***/ }),
587			/* 9 */
588			/***/ (function(module, exports) {
589
590				var $Object = Object;
591				module.exports = {
592					create:     $Object.create,
593					getProto:   $Object.getPrototypeOf,
594					isEnum:     {}.propertyIsEnumerable,
595					getDesc:    $Object.getOwnPropertyDescriptor,
596					setDesc:    $Object.defineProperty,
597					setDescs:   $Object.defineProperties,
598					getKeys:    $Object.keys,
599					getNames:   $Object.getOwnPropertyNames,
600					getSymbols: $Object.getOwnPropertySymbols,
601					each:       [].forEach
602				};
603
604				/***/ }),
605			/* 10 */
606			/***/ (function(module, exports, __webpack_require__) {
607
608				'use strict';
609
610				var _interopRequireDefault = __webpack_require__(1)['default'];
611
612				exports.__esModule = true;
613				exports.registerDefaultHelpers = registerDefaultHelpers;
614				exports.moveHelperToHooks = moveHelperToHooks;
615
616				var _helpersBlockHelperMissing = __webpack_require__(11);
617
618				var _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);
619
620				var _helpersEach = __webpack_require__(12);
621
622				var _helpersEach2 = _interopRequireDefault(_helpersEach);
623
624				var _helpersHelperMissing = __webpack_require__(65);
625
626				var _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);
627
628				var _helpersIf = __webpack_require__(66);
629
630				var _helpersIf2 = _interopRequireDefault(_helpersIf);
631
632				var _helpersLog = __webpack_require__(67);
633
634				var _helpersLog2 = _interopRequireDefault(_helpersLog);
635
636				var _helpersLookup = __webpack_require__(68);
637
638				var _helpersLookup2 = _interopRequireDefault(_helpersLookup);
639
640				var _helpersWith = __webpack_require__(69);
641
642				var _helpersWith2 = _interopRequireDefault(_helpersWith);
643
644				function registerDefaultHelpers(instance) {
645					_helpersBlockHelperMissing2['default'](instance);
646					_helpersEach2['default'](instance);
647					_helpersHelperMissing2['default'](instance);
648					_helpersIf2['default'](instance);
649					_helpersLog2['default'](instance);
650					_helpersLookup2['default'](instance);
651					_helpersWith2['default'](instance);
652				}
653
654				function moveHelperToHooks(instance, helperName, keepHelper) {
655					if (instance.helpers[helperName]) {
656						instance.hooks[helperName] = instance.helpers[helperName];
657						if (!keepHelper) {
658							// Using delete is slow
659							instance.helpers[helperName] = undefined;
660						}
661					}
662				}
663
664				/***/ }),
665			/* 11 */
666			/***/ (function(module, exports, __webpack_require__) {
667
668				'use strict';
669
670				exports.__esModule = true;
671
672				var _utils = __webpack_require__(5);
673
674				exports['default'] = function (instance) {
675					instance.registerHelper('blockHelperMissing', function (context, options) {
676						var inverse = options.inverse,
677							fn = options.fn;
678
679						if (context === true) {
680							return fn(this);
681						} else if (context === false || context == null) {
682							return inverse(this);
683						} else if (_utils.isArray(context)) {
684							if (context.length > 0) {
685								if (options.ids) {
686									options.ids = [options.name];
687								}
688
689								return instance.helpers.each(context, options);
690							} else {
691								return inverse(this);
692							}
693						} else {
694							if (options.data && options.ids) {
695								var data = _utils.createFrame(options.data);
696								data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);
697								options = { data: data };
698							}
699
700							return fn(context, options);
701						}
702					});
703				};
704
705				module.exports = exports['default'];
706
707				/***/ }),
708			/* 12 */
709			/***/ (function(module, exports, __webpack_require__) {
710
711				'use strict';
712
713				var _Symbol = __webpack_require__(13)['default'];
714
715				var _Symbol$iterator = __webpack_require__(43)['default'];
716
717				var _getIterator = __webpack_require__(55)['default'];
718
719				var _Object$keys = __webpack_require__(60)['default'];
720
721				var _interopRequireDefault = __webpack_require__(1)['default'];
722
723				exports.__esModule = true;
724
725				var _utils = __webpack_require__(5);
726
727				var _exception = __webpack_require__(6);
728
729				var _exception2 = _interopRequireDefault(_exception);
730
731				exports['default'] = function (instance) {
732					instance.registerHelper('each', function (context, options) {
733						if (!options) {
734							throw new _exception2['default']('Must pass iterator to #each');
735						}
736
737						var fn = options.fn,
738							inverse = options.inverse,
739							i = 0,
740							ret = '',
741							data = undefined,
742							contextPath = undefined;
743
744						if (options.data && options.ids) {
745							contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';
746						}
747
748						if (_utils.isFunction(context)) {
749							context = context.call(this);
750						}
751
752						if (options.data) {
753							data = _utils.createFrame(options.data);
754						}
755
756						function execIteration(field, index, last) {
757							if (data) {
758								data.key = field;
759								data.index = index;
760								data.first = index === 0;
761								data.last = !!last;
762
763								if (contextPath) {
764									data.contextPath = contextPath + field;
765								}
766							}
767
768							ret = ret + fn(context[field], {
769								data: data,
770								blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])
771							});
772						}
773
774						if (context && typeof context === 'object') {
775							if (_utils.isArray(context)) {
776								for (var j = context.length; i < j; i++) {
777									if (i in context) {
778										execIteration(i, i, i === context.length - 1);
779									}
780								}
781							} else if (typeof _Symbol === 'function' && context[_Symbol$iterator]) {
782								var newContext = [];
783								var iterator = _getIterator(context);
784								for (var it = iterator.next(); !it.done; it = iterator.next()) {
785									newContext.push(it.value);
786								}
787								context = newContext;
788								for (var j = context.length; i < j; i++) {
789									execIteration(i, i, i === context.length - 1);
790								}
791							} else {
792								(function () {
793									var priorKey = undefined;
794
795									_Object$keys(context).forEach(function (key) {
796										// We're running the iterations one step out of sync so we can detect
797										// the last iteration without have to scan the object twice and create
798										// an itermediate keys array.
799										if (priorKey !== undefined) {
800											execIteration(priorKey, i - 1);
801										}
802										priorKey = key;
803										i++;
804									});
805									if (priorKey !== undefined) {
806										execIteration(priorKey, i - 1, true);
807									}
808								})();
809							}
810						}
811
812						if (i === 0) {
813							ret = inverse(this);
814						}
815
816						return ret;
817					});
818				};
819
820				module.exports = exports['default'];
821
822				/***/ }),
823			/* 13 */
824			/***/ (function(module, exports, __webpack_require__) {
825
826				module.exports = { "default": __webpack_require__(14), __esModule: true };
827
828				/***/ }),
829			/* 14 */
830			/***/ (function(module, exports, __webpack_require__) {
831
832				__webpack_require__(15);
833				__webpack_require__(42);
834				module.exports = __webpack_require__(21).Symbol;
835
836				/***/ }),
837			/* 15 */
838			/***/ (function(module, exports, __webpack_require__) {
839
840				'use strict';
841				// ECMAScript 6 symbols shim
842				var $              = __webpack_require__(9)
843					, global         = __webpack_require__(16)
844					, has            = __webpack_require__(17)
845					, DESCRIPTORS    = __webpack_require__(18)
846					, $export        = __webpack_require__(20)
847					, redefine       = __webpack_require__(24)
848					, $fails         = __webpack_require__(19)
849					, shared         = __webpack_require__(27)
850					, setToStringTag = __webpack_require__(28)
851					, uid            = __webpack_require__(30)
852					, wks            = __webpack_require__(29)
853					, keyOf          = __webpack_require__(31)
854					, $names         = __webpack_require__(36)
855					, enumKeys       = __webpack_require__(37)
856					, isArray        = __webpack_require__(38)
857					, anObject       = __webpack_require__(39)
858					, toIObject      = __webpack_require__(32)
859					, createDesc     = __webpack_require__(26)
860					, getDesc        = $.getDesc
861					, setDesc        = $.setDesc
862					, _create        = $.create
863					, getNames       = $names.get
864					, $Symbol        = global.Symbol
865					, $JSON          = global.JSON
866					, _stringify     = $JSON && $JSON.stringify
867					, setter         = false
868					, HIDDEN         = wks('_hidden')
869					, isEnum         = $.isEnum
870					, SymbolRegistry = shared('symbol-registry')
871					, AllSymbols     = shared('symbols')
872					, useNative      = typeof $Symbol == 'function'
873					, ObjectProto    = Object.prototype;
874
875				// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
876				var setSymbolDesc = DESCRIPTORS && $fails(function(){
877					return _create(setDesc({}, 'a', {
878						get: function(){ return setDesc(this, 'a', {value: 7}).a; }
879					})).a != 7;
880				}) ? function(it, key, D){
881					var protoDesc = getDesc(ObjectProto, key);
882					if(protoDesc)delete ObjectProto[key];
883					setDesc(it, key, D);
884					if(protoDesc && it !== ObjectProto)setDesc(ObjectProto, key, protoDesc);
885				} : setDesc;
886
887				var wrap = function(tag){
888					var sym = AllSymbols[tag] = _create($Symbol.prototype);
889					sym._k = tag;
890					DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {
891						configurable: true,
892						set: function(value){
893							if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
894							setSymbolDesc(this, tag, createDesc(1, value));
895						}
896					});
897					return sym;
898				};
899
900				var isSymbol = function(it){
901					return typeof it == 'symbol';
902				};
903
904				var $defineProperty = function defineProperty(it, key, D){
905					if(D && has(AllSymbols, key)){
906						if(!D.enumerable){
907							if(!has(it, HIDDEN))setDesc(it, HIDDEN, createDesc(1, {}));
908							it[HIDDEN][key] = true;
909						} else {
910							if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;
911							D = _create(D, {enumerable: createDesc(0, false)});
912						} return setSymbolDesc(it, key, D);
913					} return setDesc(it, key, D);
914				};
915				var $defineProperties = function defineProperties(it, P){
916					anObject(it);
917					var keys = enumKeys(P = toIObject(P))
918						, i    = 0
919						, l = keys.length
920						, key;
921					while(l > i)$defineProperty(it, key = keys[i++], P[key]);
922					return it;
923				};
924				var $create = function create(it, P){
925					return P === undefined ? _create(it) : $defineProperties(_create(it), P);
926				};
927				var $propertyIsEnumerable = function propertyIsEnumerable(key){
928					var E = isEnum.call(this, key);
929					return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key]
930						? E : true;
931				};
932				var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){
933					var D = getDesc(it = toIObject(it), key);
934					if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;
935					return D;
936				};
937				var $getOwnPropertyNames = function getOwnPropertyNames(it){
938					var names  = getNames(toIObject(it))
939						, result = []
940						, i      = 0
941						, key;
942					while(names.length > i)if(!has(AllSymbols, key = names[i++]) && key != HIDDEN)result.push(key);
943					return result;
944				};
945				var $getOwnPropertySymbols = function getOwnPropertySymbols(it){
946					var names  = getNames(toIObject(it))
947						, result = []
948						, i      = 0
949						, key;
950					while(names.length > i)if(has(AllSymbols, key = names[i++]))result.push(AllSymbols[key]);
951					return result;
952				};
953				var $stringify = function stringify(it){
954					if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined
955					var args = [it]
956						, i    = 1
957						, $$   = arguments
958						, replacer, $replacer;
959					while($$.length > i)args.push($$[i++]);
960					replacer = args[1];
961					if(typeof replacer == 'function')$replacer = replacer;
962					if($replacer || !isArray(replacer))replacer = function(key, value){
963						if($replacer)value = $replacer.call(this, key, value);
964						if(!isSymbol(value))return value;
965					};
966					args[1] = replacer;
967					return _stringify.apply($JSON, args);
968				};
969				var buggyJSON = $fails(function(){
970					var S = $Symbol();
971					// MS Edge converts symbol values to JSON as {}
972					// WebKit converts symbol values to JSON as null
973					// V8 throws on boxed symbols
974					return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';
975				});
976
977				// 19.4.1.1 Symbol([description])
978				if(!useNative){
979					$Symbol = function Symbol(){
980						if(isSymbol(this))throw TypeError('Symbol is not a constructor');
981						return wrap(uid(arguments.length > 0 ? arguments[0] : undefined));
982					};
983					redefine($Symbol.prototype, 'toString', function toString(){
984						return this._k;
985					});
986
987					isSymbol = function(it){
988						return it instanceof $Symbol;
989					};
990
991					$.create     = $create;
992					$.isEnum     = $propertyIsEnumerable;
993					$.getDesc    = $getOwnPropertyDescriptor;
994					$.setDesc    = $defineProperty;
995					$.setDescs   = $defineProperties;
996					$.getNames   = $names.get = $getOwnPropertyNames;
997					$.getSymbols = $getOwnPropertySymbols;
998
999					if(DESCRIPTORS && !__webpack_require__(41)){
1000						redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
1001					}
1002				}
1003
1004				var symbolStatics = {
1005					// 19.4.2.1 Symbol.for(key)
1006					'for': function(key){
1007						return has(SymbolRegistry, key += '')
1008							? SymbolRegistry[key]
1009							: SymbolRegistry[key] = $Symbol(key);
1010					},
1011					// 19.4.2.5 Symbol.keyFor(sym)
1012					keyFor: function keyFor(key){
1013						return keyOf(SymbolRegistry, key);
1014					},
1015					useSetter: function(){ setter = true; },
1016					useSimple: function(){ setter = false; }
1017				};
1018				// 19.4.2.2 Symbol.hasInstance
1019				// 19.4.2.3 Symbol.isConcatSpreadable
1020				// 19.4.2.4 Symbol.iterator
1021				// 19.4.2.6 Symbol.match
1022				// 19.4.2.8 Symbol.replace
1023				// 19.4.2.9 Symbol.search
1024				// 19.4.2.10 Symbol.species
1025				// 19.4.2.11 Symbol.split
1026				// 19.4.2.12 Symbol.toPrimitive
1027				// 19.4.2.13 Symbol.toStringTag
1028				// 19.4.2.14 Symbol.unscopables
1029				$.each.call((
1030					'hasInstance,isConcatSpreadable,iterator,match,replace,search,' +
1031					'species,split,toPrimitive,toStringTag,unscopables'
1032				).split(','), function(it){
1033					var sym = wks(it);
1034					symbolStatics[it] = useNative ? sym : wrap(sym);
1035				});
1036
1037				setter = true;
1038
1039				$export($export.G + $export.W, {Symbol: $Symbol});
1040
1041				$export($export.S, 'Symbol', symbolStatics);
1042
1043				$export($export.S + $export.F * !useNative, 'Object', {
1044					// 19.1.2.2 Object.create(O [, Properties])
1045					create: $create,
1046					// 19.1.2.4 Object.defineProperty(O, P, Attributes)
1047					defineProperty: $defineProperty,
1048					// 19.1.2.3 Object.defineProperties(O, Properties)
1049					defineProperties: $defineProperties,
1050					// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
1051					getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
1052					// 19.1.2.7 Object.getOwnPropertyNames(O)
1053					getOwnPropertyNames: $getOwnPropertyNames,
1054					// 19.1.2.8 Object.getOwnPropertySymbols(O)
1055					getOwnPropertySymbols: $getOwnPropertySymbols
1056				});
1057
1058				// 24.3.2 JSON.stringify(value [, replacer [, space]])
1059				$JSON && $export($export.S + $export.F * (!useNative || buggyJSON), 'JSON', {stringify: $stringify});
1060
1061				// 19.4.3.5 Symbol.prototype[@@toStringTag]
1062				setToStringTag($Symbol, 'Symbol');
1063				// 20.2.1.9 Math[@@toStringTag]
1064				setToStringTag(Math, 'Math', true);
1065				// 24.3.3 JSON[@@toStringTag]
1066				setToStringTag(global.JSON, 'JSON', true);
1067
1068				/***/ }),
1069			/* 16 */
1070			/***/ (function(module, exports) {
1071
1072				// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
1073				var global = module.exports = typeof window != 'undefined' && window.Math == Math
1074					? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
1075				if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
1076
1077				/***/ }),
1078			/* 17 */
1079			/***/ (function(module, exports) {
1080
1081				var hasOwnProperty = {}.hasOwnProperty;
1082				module.exports = function(it, key){
1083					return hasOwnProperty.call(it, key);
1084				};
1085
1086				/***/ }),
1087			/* 18 */
1088			/***/ (function(module, exports, __webpack_require__) {
1089
1090				// Thank's IE8 for his funny defineProperty
1091				module.exports = !__webpack_require__(19)(function(){
1092					return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
1093				});
1094
1095				/***/ }),
1096			/* 19 */
1097			/***/ (function(module, exports) {
1098
1099				module.exports = function(exec){
1100					try {
1101						return !!exec();
1102					} catch(e){
1103						return true;
1104					}
1105				};
1106
1107				/***/ }),
1108			/* 20 */
1109			/***/ (function(module, exports, __webpack_require__) {
1110
1111				var global    = __webpack_require__(16)
1112					, core      = __webpack_require__(21)
1113					, ctx       = __webpack_require__(22)
1114					, PROTOTYPE = 'prototype';
1115
1116				var $export = function(type, name, source){
1117					var IS_FORCED = type & $export.F
1118						, IS_GLOBAL = type & $export.G
1119						, IS_STATIC = type & $export.S
1120						, IS_PROTO  = type & $export.P
1121						, IS_BIND   = type & $export.B
1122						, IS_WRAP   = type & $export.W
1123						, exports   = IS_GLOBAL ? core : core[name] || (core[name] = {})
1124						, target    = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]
1125						, key, own, out;
1126					if(IS_GLOBAL)source = name;
1127					for(key in source){
1128						// contains in native
1129						own = !IS_FORCED && target && key in target;
1130						if(own && key in exports)continue;
1131						// export native or passed
1132						out = own ? target[key] : source[key];
1133						// prevent global pollution for namespaces
1134						exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
1135							// bind timers to global for call from export context
1136							: IS_BIND && own ? ctx(out, global)
1137								// wrap global constructors for prevent change them in library
1138								: IS_WRAP && target[key] == out ? (function(C){
1139									var F = function(param){
1140										return this instanceof C ? new C(param) : C(param);
1141									};
1142									F[PROTOTYPE] = C[PROTOTYPE];
1143									return F;
1144									// make static versions for prototype methods
1145								})(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
1146						if(IS_PROTO)(exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out;
1147					}
1148				};
1149				// type bitmap
1150				$export.F = 1;  // forced
1151				$export.G = 2;  // global
1152				$export.S = 4;  // static
1153				$export.P = 8;  // proto
1154				$export.B = 16; // bind
1155				$export.W = 32; // wrap
1156				module.exports = $export;
1157
1158				/***/ }),
1159			/* 21 */
1160			/***/ (function(module, exports) {
1161
1162				var core = module.exports = {version: '1.2.6'};
1163				if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
1164
1165				/***/ }),
1166			/* 22 */
1167			/***/ (function(module, exports, __webpack_require__) {
1168
1169				// optional / simple context binding
1170				var aFunction = __webpack_require__(23);
1171				module.exports = function(fn, that, length){
1172					aFunction(fn);
1173					if(that === undefined)return fn;
1174					switch(length){
1175						case 1: return function(a){
1176							return fn.call(that, a);
1177						};
1178						case 2: return function(a, b){
1179							return fn.call(that, a, b);
1180						};
1181						case 3: return function(a, b, c){
1182							return fn.call(that, a, b, c);
1183						};
1184					}
1185					return function(/* ...args */){
1186						return fn.apply(that, arguments);
1187					};
1188				};
1189
1190				/***/ }),
1191			/* 23 */
1192			/***/ (function(module, exports) {
1193
1194				module.exports = function(it){
1195					if(typeof it != 'function')throw TypeError(it + ' is not a function!');
1196					return it;
1197				};
1198
1199				/***/ }),
1200			/* 24 */
1201			/***/ (function(module, exports, __webpack_require__) {
1202
1203				module.exports = __webpack_require__(25);
1204
1205				/***/ }),
1206			/* 25 */
1207			/***/ (function(module, exports, __webpack_require__) {
1208
1209				var $          = __webpack_require__(9)
1210					, createDesc = __webpack_require__(26);
1211				module.exports = __webpack_require__(18) ? function(object, key, value){
1212					return $.setDesc(object, key, createDesc(1, value));
1213				} : function(object, key, value){
1214					object[key] = value;
1215					return object;
1216				};
1217
1218				/***/ }),
1219			/* 26 */
1220			/***/ (function(module, exports) {
1221
1222				module.exports = function(bitmap, value){
1223					return {
1224						enumerable  : !(bitmap & 1),
1225						configurable: !(bitmap & 2),
1226						writable    : !(bitmap & 4),
1227						value       : value
1228					};
1229				};
1230
1231				/***/ }),
1232			/* 27 */
1233			/***/ (function(module, exports, __webpack_require__) {
1234
1235				var global = __webpack_require__(16)
1236					, SHARED = '__core-js_shared__'
1237					, store  = global[SHARED] || (global[SHARED] = {});
1238				module.exports = function(key){
1239					return store[key] || (store[key] = {});
1240				};
1241
1242				/***/ }),
1243			/* 28 */
1244			/***/ (function(module, exports, __webpack_require__) {
1245
1246				var def = __webpack_require__(9).setDesc
1247					, has = __webpack_require__(17)
1248					, TAG = __webpack_require__(29)('toStringTag');
1249
1250				module.exports = function(it, tag, stat){
1251					if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});
1252				};
1253
1254				/***/ }),
1255			/* 29 */
1256			/***/ (function(module, exports, __webpack_require__) {
1257
1258				var store  = __webpack_require__(27)('wks')
1259					, uid    = __webpack_require__(30)
1260					, Symbol = __webpack_require__(16).Symbol;
1261				module.exports = function(name){
1262					return store[name] || (store[name] =
1263						Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name));
1264				};
1265
1266				/***/ }),
1267			/* 30 */
1268			/***/ (function(module, exports) {
1269
1270				var id = 0
1271					, px = Math.random();
1272				module.exports = function(key){
1273					return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
1274				};
1275
1276				/***/ }),
1277			/* 31 */
1278			/***/ (function(module, exports, __webpack_require__) {
1279
1280				var $         = __webpack_require__(9)
1281					, toIObject = __webpack_require__(32);
1282				module.exports = function(object, el){
1283					var O      = toIObject(object)
1284						, keys   = $.getKeys(O)
1285						, length = keys.length
1286						, index  = 0
1287						, key;
1288					while(length > index)if(O[key = keys[index++]] === el)return key;
1289				};
1290
1291				/***/ }),
1292			/* 32 */
1293			/***/ (function(module, exports, __webpack_require__) {
1294
1295				// to indexed object, toObject with fallback for non-array-like ES3 strings
1296				var IObject = __webpack_require__(33)
1297					, defined = __webpack_require__(35);
1298				module.exports = function(it){
1299					return IObject(defined(it));
1300				};
1301
1302				/***/ }),
1303			/* 33 */
1304			/***/ (function(module, exports, __webpack_require__) {
1305
1306				// fallback for non-array-like ES3 and non-enumerable old V8 strings
1307				var cof = __webpack_require__(34);
1308				module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
1309					return cof(it) == 'String' ? it.split('') : Object(it);
1310				};
1311
1312				/***/ }),
1313			/* 34 */
1314			/***/ (function(module, exports) {
1315
1316				var toString = {}.toString;
1317
1318				module.exports = function(it){
1319					return toString.call(it).slice(8, -1);
1320				};
1321
1322				/***/ }),
1323			/* 35 */
1324			/***/ (function(module, exports) {
1325
1326				// 7.2.1 RequireObjectCoercible(argument)
1327				module.exports = function(it){
1328					if(it == undefined)throw TypeError("Can't call method on  " + it);
1329					return it;
1330				};
1331
1332				/***/ }),
1333			/* 36 */
1334			/***/ (function(module, exports, __webpack_require__) {
1335
1336				// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
1337				var toIObject = __webpack_require__(32)
1338					, getNames  = __webpack_require__(9).getNames
1339					, toString  = {}.toString;
1340
1341				var windowNames = typeof window == 'object' && Object.getOwnPropertyNames
1342					? Object.getOwnPropertyNames(window) : [];
1343
1344				var getWindowNames = function(it){
1345					try {
1346						return getNames(it);
1347					} catch(e){
1348						return windowNames.slice();
1349					}
1350				};
1351
1352				module.exports.get = function getOwnPropertyNames(it){
1353					if(windowNames && toString.call(it) == '[object Window]')return getWindowNames(it);
1354					return getNames(toIObject(it));
1355				};
1356
1357				/***/ }),
1358			/* 37 */
1359			/***/ (function(module, exports, __webpack_require__) {
1360
1361				// all enumerable object keys, includes symbols
1362				var $ = __webpack_require__(9);
1363				module.exports = function(it){
1364					var keys       = $.getKeys(it)
1365						, getSymbols = $.getSymbols;
1366					if(getSymbols){
1367						var symbols = getSymbols(it)
1368							, isEnum  = $.isEnum
1369							, i       = 0
1370							, key;
1371						while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))keys.push(key);
1372					}
1373					return keys;
1374				};
1375
1376				/***/ }),
1377			/* 38 */
1378			/***/ (function(module, exports, __webpack_require__) {
1379
1380				// 7.2.2 IsArray(argument)
1381				var cof = __webpack_require__(34);
1382				module.exports = Array.isArray || function(arg){
1383					return cof(arg) == 'Array';
1384				};
1385
1386				/***/ }),
1387			/* 39 */
1388			/***/ (function(module, exports, __webpack_require__) {
1389
1390				var isObject = __webpack_require__(40);
1391				module.exports = function(it){
1392					if(!isObject(it))throw TypeError(it + ' is not an object!');
1393					return it;
1394				};
1395
1396				/***/ }),
1397			/* 40 */
1398			/***/ (function(module, exports) {
1399
1400				module.exports = function(it){
1401					return typeof it === 'object' ? it !== null : typeof it === 'function';
1402				};
1403
1404				/***/ }),
1405			/* 41 */
1406			/***/ (function(module, exports) {
1407
1408				module.exports = true;
1409
1410				/***/ }),
1411			/* 42 */
1412			/***/ (function(module, exports) {
1413
1414
1415
1416				/***/ }),
1417			/* 43 */
1418			/***/ (function(module, exports, __webpack_require__) {
1419
1420				module.exports = { "default": __webpack_require__(44), __esModule: true };
1421
1422				/***/ }),
1423			/* 44 */
1424			/***/ (function(module, exports, __webpack_require__) {
1425
1426				__webpack_require__(45);
1427				__webpack_require__(51);
1428				module.exports = __webpack_require__(29)('iterator');
1429
1430				/***/ }),
1431			/* 45 */
1432			/***/ (function(module, exports, __webpack_require__) {
1433
1434				'use strict';
1435				var $at  = __webpack_require__(46)(true);
1436
1437				// 21.1.3.27 String.prototype[@@iterator]()
1438				__webpack_require__(48)(String, 'String', function(iterated){
1439					this._t = String(iterated); // target
1440					this._i = 0;                // next index
1441					// 21.1.5.2.1 %StringIteratorPrototype%.next()
1442				}, function(){
1443					var O     = this._t
1444						, index = this._i
1445						, point;
1446					if(index >= O.length)return {value: undefined, done: true};
1447					point = $at(O, index);
1448					this._i += point.length;
1449					return {value: point, done: false};
1450				});
1451
1452				/***/ }),
1453			/* 46 */
1454			/***/ (function(module, exports, __webpack_require__) {
1455
1456				var toInteger = __webpack_require__(47)
1457					, defined   = __webpack_require__(35);
1458				// true  -> String#at
1459				// false -> String#codePointAt
1460				module.exports = function(TO_STRING){
1461					return function(that, pos){
1462						var s = String(defined(that))
1463							, i = toInteger(pos)
1464							, l = s.length
1465							, a, b;
1466						if(i < 0 || i >= l)return TO_STRING ? '' : undefined;
1467						a = s.charCodeAt(i);
1468						return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
1469							? TO_STRING ? s.charAt(i) : a
1470							: TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
1471					};
1472				};
1473
1474				/***/ }),
1475			/* 47 */
1476			/***/ (function(module, exports) {
1477
1478				// 7.1.4 ToInteger
1479				var ceil  = Math.ceil
1480					, floor = Math.floor;
1481				module.exports = function(it){
1482					return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
1483				};
1484
1485				/***/ }),
1486			/* 48 */
1487			/***/ (function(module, exports, __webpack_require__) {
1488
1489				'use strict';
1490				var LIBRARY        = __webpack_require__(41)
1491					, $export        = __webpack_require__(20)
1492					, redefine       = __webpack_require__(24)
1493					, hide           = __webpack_require__(25)
1494					, has            = __webpack_require__(17)
1495					, Iterators      = __webpack_require__(49)
1496					, $iterCreate    = __webpack_require__(50)
1497					, setToStringTag = __webpack_require__(28)
1498					, getProto       = __webpack_require__(9).getProto
1499					, ITERATOR       = __webpack_require__(29)('iterator')
1500					, BUGGY          = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`
1501					, FF_ITERATOR    = '@@iterator'
1502					, KEYS           = 'keys'
1503					, VALUES         = 'values';
1504
1505				var returnThis = function(){ return this; };
1506
1507				module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){
1508					$iterCreate(Constructor, NAME, next);
1509					var getMethod = function(kind){
1510						if(!BUGGY && kind in proto)return proto[kind];
1511						switch(kind){
1512							case KEYS: return function keys(){ return new Constructor(this, kind); };
1513							case VALUES: return function values(){ return new Constructor(this, kind); };
1514						} return function entries(){ return new Constructor(this, kind); };
1515					};
1516					var TAG        = NAME + ' Iterator'
1517						, DEF_VALUES = DEFAULT == VALUES
1518						, VALUES_BUG = false
1519						, proto      = Base.prototype
1520						, $native    = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]
1521						, $default   = $native || getMethod(DEFAULT)
1522						, methods, key;
1523					// Fix native
1524					if($native){
1525						var IteratorPrototype = getProto($default.call(new Base));
1526						// Set @@toStringTag to native iterators
1527						setToStringTag(IteratorPrototype, TAG, true);
1528						// FF fix
1529						if(!LIBRARY && has(proto, FF_ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);
1530						// fix Array#{values, @@iterator}.name in V8 / FF
1531						if(DEF_VALUES && $native.name !== VALUES){
1532							VALUES_BUG = true;
1533							$default = function values(){ return $native.call(this); };
1534						}
1535					}
1536					// Define iterator
1537					if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){
1538						hide(proto, ITERATOR, $default);
1539					}
1540					// Plug for library
1541					Iterators[NAME] = $default;
1542					Iterators[TAG]  = returnThis;
1543					if(DEFAULT){
1544						methods = {
1545							values:  DEF_VALUES  ? $default : getMethod(VALUES),
1546							keys:    IS_SET      ? $default : getMethod(KEYS),
1547							entries: !DEF_VALUES ? $default : getMethod('entries')
1548						};
1549						if(FORCED)for(key in methods){
1550							if(!(key in proto))redefine(proto, key, methods[key]);
1551						} else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
1552					}
1553					return methods;
1554				};
1555
1556				/***/ }),
1557			/* 49 */
1558			/***/ (function(module, exports) {
1559
1560				module.exports = {};
1561
1562				/***/ }),
1563			/* 50 */
1564			/***/ (function(module, exports, __webpack_require__) {
1565
1566				'use strict';
1567				var $              = __webpack_require__(9)
1568					, descriptor     = __webpack_require__(26)
1569					, setToStringTag = __webpack_require__(28)
1570					, IteratorPrototype = {};
1571
1572				// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
1573				__webpack_require__(25)(IteratorPrototype, __webpack_require__(29)('iterator'), function(){ return this; });
1574
1575				module.exports = function(Constructor, NAME, next){
1576					Constructor.prototype = $.create(IteratorPrototype, {next: descriptor(1, next)});
1577					setToStringTag(Constructor, NAME + ' Iterator');
1578				};
1579
1580				/***/ }),
1581			/* 51 */
1582			/***/ (function(module, exports, __webpack_require__) {
1583
1584				__webpack_require__(52);
1585				var Iterators = __webpack_require__(49);
1586				Iterators.NodeList = Iterators.HTMLCollection = Iterators.Array;
1587
1588				/***/ }),
1589			/* 52 */
1590			/***/ (function(module, exports, __webpack_require__) {
1591
1592				'use strict';
1593				var addToUnscopables = __webpack_require__(53)
1594					, step             = __webpack_require__(54)
1595					, Iterators        = __webpack_require__(49)
1596					, toIObject        = __webpack_require__(32);
1597
1598				// 22.1.3.4 Array.prototype.entries()
1599				// 22.1.3.13 Array.prototype.keys()
1600				// 22.1.3.29 Array.prototype.values()
1601				// 22.1.3.30 Array.prototype[@@iterator]()
1602				module.exports = __webpack_require__(48)(Array, 'Array', function(iterated, kind){
1603					this._t = toIObject(iterated); // target
1604					this._i = 0;                   // next index
1605					this._k = kind;                // kind
1606					// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
1607				}, function(){
1608					var O     = this._t
1609						, kind  = this._k
1610						, index = this._i++;
1611					if(!O || index >= O.length){
1612						this._t = undefined;
1613						return step(1);
1614					}
1615					if(kind == 'keys'  )return step(0, index);
1616					if(kind == 'values')return step(0, O[index]);
1617					return step(0, [index, O[index]]);
1618				}, 'values');
1619
1620				// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
1621				Iterators.Arguments = Iterators.Array;
1622
1623				addToUnscopables('keys');
1624				addToUnscopables('values');
1625				addToUnscopables('entries');
1626
1627				/***/ }),
1628			/* 53 */
1629			/***/ (function(module, exports) {
1630
1631				module.exports = function(){ /* empty */ };
1632
1633				/***/ }),
1634			/* 54 */
1635			/***/ (function(module, exports) {
1636
1637				module.exports = function(done, value){
1638					return {value: value, done: !!done};
1639				};
1640
1641				/***/ }),
1642			/* 55 */
1643			/***/ (function(module, exports, __webpack_require__) {
1644
1645				module.exports = { "default": __webpack_require__(56), __esModule: true };
1646
1647				/***/ }),
1648			/* 56 */
1649			/***/ (function(module, exports, __webpack_require__) {
1650
1651				__webpack_require__(51);
1652				__webpack_require__(45);
1653				module.exports = __webpack_require__(57);
1654
1655				/***/ }),
1656			/* 57 */
1657			/***/ (function(module, exports, __webpack_require__) {
1658
1659				var anObject = __webpack_require__(39)
1660					, get      = __webpack_require__(58);
1661				module.exports = __webpack_require__(21).getIterator = function(it){
1662					var iterFn = get(it);
1663					if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!');
1664					return anObject(iterFn.call(it));
1665				};
1666
1667				/***/ }),
1668			/* 58 */
1669			/***/ (function(module, exports, __webpack_require__) {
1670
1671				var classof   = __webpack_require__(59)
1672					, ITERATOR  = __webpack_require__(29)('iterator')
1673					, Iterators = __webpack_require__(49);
1674				module.exports = __webpack_require__(21).getIteratorMethod = function(it){
1675					if(it != undefined)return it[ITERATOR]
1676						|| it['@@iterator']
1677						|| Iterators[classof(it)];
1678				};
1679
1680				/***/ }),
1681			/* 59 */
1682			/***/ (function(module, exports, __webpack_require__) {
1683
1684				// getting tag from 19.1.3.6 Object.prototype.toString()
1685				var cof = __webpack_require__(34)
1686					, TAG = __webpack_require__(29)('toStringTag')
1687					// ES3 wrong here
1688					, ARG = cof(function(){ return arguments; }()) == 'Arguments';
1689
1690				module.exports = function(it){
1691					var O, T, B;
1692					return it === undefined ? 'Undefined' : it === null ? 'Null'
1693						// @@toStringTag case
1694						: typeof (T = (O = Object(it))[TAG]) == 'string' ? T
1695							// builtinTag case
1696							: ARG ? cof(O)
1697								// ES3 arguments fallback
1698								: (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
1699				};
1700
1701				/***/ }),
1702			/* 60 */
1703			/***/ (function(module, exports, __webpack_require__) {
1704
1705				module.exports = { "default": __webpack_require__(61), __esModule: true };
1706
1707				/***/ }),
1708			/* 61 */
1709			/***/ (function(module, exports, __webpack_require__) {
1710
1711				__webpack_require__(62);
1712				module.exports = __webpack_require__(21).Object.keys;
1713
1714				/***/ }),
1715			/* 62 */
1716			/***/ (function(module, exports, __webpack_require__) {
1717
1718				// 19.1.2.14 Object.keys(O)
1719				var toObject = __webpack_require__(63);
1720
1721				__webpack_require__(64)('keys', function($keys){
1722					return function keys(it){
1723						return $keys(toObject(it));
1724					};
1725				});
1726
1727				/***/ }),
1728			/* 63 */
1729			/***/ (function(module, exports, __webpack_require__) {
1730
1731				// 7.1.13 ToObject(argument)
1732				var defined = __webpack_require__(35);
1733				module.exports = function(it){
1734					return Object(defined(it));
1735				};
1736
1737				/***/ }),
1738			/* 64 */
1739			/***/ (function(module, exports, __webpack_require__) {
1740
1741				// most Object methods by ES6 should accept primitives
1742				var $export = __webpack_require__(20)
1743					, core    = __webpack_require__(21)
1744					, fails   = __webpack_require__(19);
1745				module.exports = function(KEY, exec){
1746					var fn  = (core.Object || {})[KEY] || Object[KEY]
1747						, exp = {};
1748					exp[KEY] = exec(fn);
1749					$export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);
1750				};
1751
1752				/***/ }),
1753			/* 65 */
1754			/***/ (function(module, exports, __webpack_require__) {
1755
1756				'use strict';
1757
1758				var _interopRequireDefault = __webpack_require__(1)['default'];
1759
1760				exports.__esModule = true;
1761
1762				var _exception = __webpack_require__(6);
1763
1764				var _exception2 = _interopRequireDefault(_exception);
1765
1766				exports['default'] = function (instance) {
1767					instance.registerHelper('helperMissing', function () /* [args, ]options */{
1768						if (arguments.length === 1) {
1769							// A missing field in a {{foo}} construct.
1770							return undefined;
1771						} else {
1772							// Someone is actually trying to call something, blow up.
1773							throw new _exception2['default']('Missing helper: "' + arguments[arguments.length - 1].name + '"');
1774						}
1775					});
1776				};
1777
1778				module.exports = exports['default'];
1779
1780				/***/ }),
1781			/* 66 */
1782			/***/ (function(module, exports, __webpack_require__) {
1783
1784				'use strict';
1785
1786				var _interopRequireDefault = __webpack_require__(1)['default'];
1787
1788				exports.__esModule = true;
1789
1790				var _utils = __webpack_require__(5);
1791
1792				var _exception = __webpack_require__(6);
1793
1794				var _exception2 = _interopRequireDefault(_exception);
1795
1796				exports['default'] = function (instance) {
1797					instance.registerHelper('if', function (conditional, options) {
1798						if (arguments.length != 2) {
1799							throw new _exception2['default']('#if requires exactly one argument');
1800						}
1801						if (_utils.isFunction(conditional)) {
1802							conditional = conditional.call(this);
1803						}
1804
1805						// Default behavior is to render the positive path if the value is truthy and not empty.
1806						// The `includeZero` option may be set to treat the condtional as purely not empty based on the
1807						// behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.
1808						if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {
1809							return options.inverse(this);
1810						} else {
1811							return options.fn(this);
1812						}
1813					});
1814
1815					instance.registerHelper('unless', function (conditional, options) {
1816						if (arguments.length != 2) {
1817							throw new _exception2['default']('#unless requires exactly one argument');
1818						}
1819						return instance.helpers['if'].call(this, conditional, {
1820							fn: options.inverse,
1821							inverse: options.fn,
1822							hash: options.hash
1823						});
1824					});
1825				};
1826
1827				module.exports = exports['default'];
1828
1829				/***/ }),
1830			/* 67 */
1831			/***/ (function(module, exports) {
1832
1833				'use strict';
1834
1835				exports.__esModule = true;
1836
1837				exports['default'] = function (instance) {
1838					instance.registerHelper('log', function () /* message, options */{
1839						var args = [undefined],
1840							options = arguments[arguments.length - 1];
1841						for (var i = 0; i < arguments.length - 1; i++) {
1842							args.push(arguments[i]);
1843						}
1844
1845						var level = 1;
1846						if (options.hash.level != null) {
1847							level = options.hash.level;
1848						} else if (options.data && options.data.level != null) {
1849							level = options.data.level;
1850						}
1851						args[0] = level;
1852
1853						instance.log.apply(instance, args);
1854					});
1855				};
1856
1857				module.exports = exports['default'];
1858
1859				/***/ }),
1860			/* 68 */
1861			/***/ (function(module, exports) {
1862
1863				'use strict';
1864
1865				exports.__esModule = true;
1866
1867				exports['default'] = function (instance) {
1868					instance.registerHelper('lookup', function (obj, field, options) {
1869						if (!obj) {
1870							// Note for 5.0: Change to "obj == null" in 5.0
1871							return obj;
1872						}
1873						return options.lookupProperty(obj, field);
1874					});
1875				};
1876
1877				module.exports = exports['default'];
1878
1879				/***/ }),
1880			/* 69 */
1881			/***/ (function(module, exports, __webpack_require__) {
1882
1883				'use strict';
1884
1885				var _interopRequireDefault = __webpack_require__(1)['default'];
1886
1887				exports.__esModule = true;
1888
1889				var _utils = __webpack_require__(5);
1890
1891				var _exception = __webpack_require__(6);
1892
1893				var _exception2 = _interopRequireDefault(_exception);
1894
1895				exports['default'] = function (instance) {
1896					instance.registerHelper('with', function (context, options) {
1897						if (arguments.length != 2) {
1898							throw new _exception2['default']('#with requires exactly one argument');
1899						}
1900						if (_utils.isFunction(context)) {
1901							context = context.call(this);
1902						}
1903
1904						var fn = options.fn;
1905
1906						if (!_utils.isEmpty(context)) {
1907							var data = options.data;
1908							if (options.data && options.ids) {
1909								data = _utils.createFrame(options.data);
1910								data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);
1911							}
1912
1913							return fn(context, {
1914								data: data,
1915								blockParams: _utils.blockParams([context], [data && data.contextPath])
1916							});
1917						} else {
1918							return options.inverse(this);
1919						}
1920					});
1921				};
1922
1923				module.exports = exports['default'];
1924
1925				/***/ }),
1926			/* 70 */
1927			/***/ (function(module, exports, __webpack_require__) {
1928
1929				'use strict';
1930
1931				var _interopRequireDefault = __webpack_require__(1)['default'];
1932
1933				exports.__esModule = true;
1934				exports.registerDefaultDecorators = registerDefaultDecorators;
1935
1936				var _decoratorsInline = __webpack_require__(71);
1937
1938				var _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);
1939
1940				function registerDefaultDecorators(instance) {
1941					_decoratorsInline2['default'](instance);
1942				}
1943
1944				/***/ }),
1945			/* 71 */
1946			/***/ (function(module, exports, __webpack_require__) {
1947
1948				'use strict';
1949
1950				exports.__esModule = true;
1951
1952				var _utils = __webpack_require__(5);
1953
1954				exports['default'] = function (instance) {
1955					instance.registerDecorator('inline', function (fn, props, container, options) {
1956						var ret = fn;
1957						if (!props.partials) {
1958							props.partials = {};
1959							ret = function (context, options) {
1960								// Create a new partials stack frame prior to exec.
1961								var original = container.partials;
1962								container.partials = _utils.extend({}, original, props.partials);
1963								var ret = fn(context, options);
1964								container.partials = original;
1965								return ret;
1966							};
1967						}
1968
1969						props.partials[options.args[0]] = options.fn;
1970
1971						return ret;
1972					});
1973				};
1974
1975				module.exports = exports['default'];
1976
1977				/***/ }),
1978			/* 72 */
1979			/***/ (function(module, exports, __webpack_require__) {
1980
1981				'use strict';
1982
1983				exports.__esModule = true;
1984
1985				var _utils = __webpack_require__(5);
1986
1987				var logger = {
1988					methodMap: ['debug', 'info', 'warn', 'error'],
1989					level: 'info',
1990
1991					// Maps a given level value to the `methodMap` indexes above.
1992					lookupLevel: function lookupLevel(level) {
1993						if (typeof level === 'string') {
1994							var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());
1995							if (levelMap >= 0) {
1996								level = levelMap;
1997							} else {
1998								level = parseInt(level, 10);
1999							}
2000						}
2001
2002						return level;
2003					},
2004
2005					// Can be overridden in the host environment
2006					log: function log(level) {
2007						level = logger.lookupLevel(level);
2008
2009						if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {
2010							var method = logger.methodMap[level];
2011							// eslint-disable-next-line no-console
2012							if (!console[method]) {
2013								method = 'log';
2014							}
2015
2016							for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
2017								message[_key - 1] = arguments[_key];
2018							}
2019
2020							console[method].apply(console, message); // eslint-disable-line no-console
2021						}
2022					}
2023				};
2024
2025				exports['default'] = logger;
2026				module.exports = exports['default'];
2027
2028				/***/ }),
2029			/* 73 */
2030			/***/ (function(module, exports, __webpack_require__) {
2031
2032				'use strict';
2033
2034				var _Object$create = __webpack_require__(74)['default'];
2035
2036				var _Object$keys = __webpack_require__(60)['default'];
2037
2038				var _interopRequireDefault = __webpack_require__(1)['default'];
2039
2040				exports.__esModule = true;
2041				exports.createProtoAccessControl = createProtoAccessControl;
2042				exports.resultIsAllowed = resultIsAllowed;
2043				exports.resetLoggedProperties = resetLoggedProperties;
2044
2045				var _utils = __webpack_require__(5);
2046
2047				var _logger = __webpack_require__(72);
2048
2049				var _logger2 = _interopRequireDefault(_logger);
2050
2051				var loggedProperties = _Object$create(null);
2052
2053				function createProtoAccessControl(runtimeOptions) {
2054					// Create an object with "null"-prototype to avoid truthy results on
2055					// prototype properties.
2056					var propertyWhiteList = _Object$create(null);
2057					// eslint-disable-next-line no-proto
2058					propertyWhiteList['__proto__'] = false;
2059					_utils.extend(propertyWhiteList, runtimeOptions.allowedProtoProperties);
2060
2061					var methodWhiteList = _Object$create(null);
2062					methodWhiteList['constructor'] = false;
2063					methodWhiteList['__defineGetter__'] = false;
2064					methodWhiteList['__defineSetter__'] = false;
2065					methodWhiteList['__lookupGetter__'] = false;
2066					methodWhiteList['__lookupSetter__'] = false;
2067					_utils.extend(methodWhiteList, runtimeOptions.allowedProtoMethods);
2068
2069					return {
2070						properties: {
2071							whitelist: propertyWhiteList,
2072							defaultValue: runtimeOptions.allowProtoPropertiesByDefault
2073						},
2074						methods: {
2075							whitelist: methodWhiteList,
2076							defaultValue: runtimeOptions.allowProtoMethodsByDefault
2077						}
2078					};
2079				}
2080
2081				function resultIsAllowed(result, protoAccessControl, propertyName) {
2082					if (typeof result === 'function') {
2083						return checkWhiteList(protoAccessControl.methods, propertyName);
2084					} else {
2085						return checkWhiteList(protoAccessControl.properties, propertyName);
2086					}
2087				}
2088
2089				function checkWhiteList(protoAccessControlForType, propertyName) {
2090					if (protoAccessControlForType.whitelist[propertyName] !== undefined) {
2091						return protoAccessControlForType.whitelist[propertyName] === true;
2092					}
2093					if (protoAccessControlForType.defaultValue !== undefined) {
2094						return protoAccessControlForType.defaultValue;
2095					}
2096					logUnexpecedPropertyAccessOnce(propertyName);
2097					return false;
2098				}
2099
2100				function logUnexpecedPropertyAccessOnce(propertyName) {
2101					if (loggedProperties[propertyName] !== true) {
2102						loggedProperties[propertyName] = true;
2103						_logger2['default'].log('error', 'Handlebars: Access has been denied to resolve the property "' + propertyName + '" because it is not an "own property" of its parent.\n' + 'You can add a runtime option to disable the check or this warning:\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');
2104					}
2105				}
2106
2107				function resetLoggedProperties() {
2108					_Object$keys(loggedProperties).forEach(function (propertyName) {
2109						delete loggedProperties[propertyName];
2110					});
2111				}
2112
2113				/***/ }),
2114			/* 74 */
2115			/***/ (function(module, exports, __webpack_require__) {
2116
2117				module.exports = { "default": __webpack_require__(75), __esModule: true };
2118
2119				/***/ }),
2120			/* 75 */
2121			/***/ (function(module, exports, __webpack_require__) {
2122
2123				var $ = __webpack_require__(9);
2124				module.exports = function create(P, D){
2125					return $.create(P, D);
2126				};
2127
2128				/***/ }),
2129			/* 76 */
2130			/***/ (function(module, exports) {
2131
2132				// Build out our basic SafeString type
2133				'use strict';
2134
2135				exports.__esModule = true;
2136				function SafeString(string) {
2137					this.string = string;
2138				}
2139
2140				SafeString.prototype.toString = SafeString.prototype.toHTML = function () {
2141					return '' + this.string;
2142				};
2143
2144				exports['default'] = SafeString;
2145				module.exports = exports['default'];
2146
2147				/***/ }),
2148			/* 77 */
2149			/***/ (function(module, exports, __webpack_require__) {
2150
2151				'use strict';
2152
2153				var _Object$seal = __webpack_require__(78)['default'];
2154
2155				var _Object$keys = __webpack_require__(60)['default'];
2156
2157				var _interopRequireWildcard = __webpack_require__(3)['default'];
2158
2159				var _interopRequireDefault = __webpack_require__(1)['default'];
2160
2161				exports.__esModule = true;
2162				exports.checkRevision = checkRevision;
2163				exports.template = template;
2164				exports.wrapProgram = wrapProgram;
2165				exports.resolvePartial = resolvePartial;
2166				exports.invokePartial = invokePartial;
2167				exports.noop = noop;
2168
2169				var _utils = __webpack_require__(5);
2170
2171				var Utils = _interopRequireWildcard(_utils);
2172
2173				var _exception = __webpack_require__(6);
2174
2175				var _exception2 = _interopRequireDefault(_exception);
2176
2177				var _base = __webpack_require__(4);
2178
2179				var _helpers = __webpack_require__(10);
2180
2181				var _internalWrapHelper = __webpack_require__(81);
2182
2183				var _internalProtoAccess = __webpack_require__(73);
2184
2185				function checkRevision(compilerInfo) {
2186					var compilerRevision = compilerInfo && compilerInfo[0] || 1,
2187						currentRevision = _base.COMPILER_REVISION;
2188
2189					if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {
2190						return;
2191					}
2192
2193					if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {
2194						var runtimeVersions = _base.REVISION_CHANGES[currentRevision],
2195							compilerVersions = _base.REVISION_CHANGES[compilerRevision];
2196						throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');
2197					} else {
2198						// Use the embedded version info since the runtime doesn't know about this revision yet
2199						throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');
2200					}
2201				}
2202
2203				function template(templateSpec, env) {
2204					/* istanbul ignore next */
2205					if (!env) {
2206						throw new _exception2['default']('No environment passed to template');
2207					}
2208					if (!templateSpec || !templateSpec.main) {
2209						throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);
2210					}
2211
2212					templateSpec.main.decorator = templateSpec.main_d;
2213
2214					// Note: Using env.VM references rather than local var references throughout this section to allow
2215					// for external users to override these as pseudo-supported APIs.
2216					env.VM.checkRevision(templateSpec.compiler);
2217
2218					// backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)
2219					var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;
2220
2221					function invokePartialWrapper(partial, context, options) {
2222						if (options.hash) {
2223							context = Utils.extend({}, context, options.hash);
2224							if (options.ids) {
2225								options.ids[0] = true;
2226							}
2227						}
2228						partial = env.VM.resolvePartial.call(this, partial, context, options);
2229
2230						options.hooks = this.hooks;
2231						options.protoAccessControl = this.protoAccessControl;
2232
2233						var result = env.VM.invokePartial.call(this, partial, context, options);
2234
2235						if (result == null && env.compile) {
2236							options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);
2237							result = options.partials[options.name](context, options);
2238						}
2239						if (result != null) {
2240							if (options.indent) {
2241								var lines = result.split('\n');
2242								for (var i = 0, l = lines.length; i < l; i++) {
2243									if (!lines[i] && i + 1 === l) {
2244										break;
2245									}
2246
2247									lines[i] = options.indent + lines[i];
2248								}
2249								result = lines.join('\n');
2250							}
2251							return result;
2252						} else {
2253							throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');
2254						}
2255					}
2256
2257					// Just add water
2258					var container = {
2259						strict: function strict(obj, name, loc) {
2260							if (!obj || !(name in obj)) {
2261								throw new _exception2['default']('"' + name + '" not defined in ' + obj, {
2262									loc: loc
2263								});
2264							}
2265							return container.lookupProperty(obj, name);
2266						},
2267						lookupProperty: function lookupProperty(parent, propertyName) {
2268							var result = parent[propertyName];
2269							if (result == null) {
2270								return result;
2271							}
2272							if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
2273								return result;
2274							}
2275
2276							if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {
2277								return result;
2278							}
2279							return undefined;
2280						},
2281						lookup: function lookup(depths, name) {
2282							var len = depths.length;
2283							for (var i = 0; i < len; i++) {
2284								var result = depths[i] && container.lookupProperty(depths[i], name);
2285								if (result != null) {
2286									return result;
2287								}
2288							}
2289						},
2290						lambda: function lambda(current, context) {
2291							return typeof current === 'function' ? current.call(context) : current;
2292						},
2293
2294						escapeExpression: Utils.escapeExpression,
2295						invokePartial: invokePartialWrapper,
2296
2297						fn: function fn(i) {
2298							var ret = templateSpec[i];
2299							ret.decorator = templateSpec[i + '_d'];
2300							return ret;
2301						},
2302
2303						programs: [],
2304						program: function program(i, data, declaredBlockParams, blockParams, depths) {
2305							var programWrapper = this.programs[i],
2306								fn = this.fn(i);
2307							if (data || depths || blockParams || declaredBlockParams) {
2308								programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);
2309							} else if (!programWrapper) {
2310								programWrapper = this.programs[i] = wrapProgram(this, i, fn);
2311							}
2312							return programWrapper;
2313						},
2314
2315						data: function data(value, depth) {
2316							while (value && depth--) {
2317								value = value._parent;
2318							}
2319							return value;
2320						},
2321						mergeIfNeeded: function mergeIfNeeded(param, common) {
2322							var obj = param || common;
2323
2324							if (param && common && param !== common) {
2325								obj = Utils.extend({}, common, param);
2326							}
2327
2328							return obj;
2329						},
2330						// An empty object to use as replacement for null-contexts
2331						nullContext: _Object$seal({}),
2332
2333						noop: env.VM.noop,
2334						compilerInfo: templateSpec.compiler
2335					};
2336
2337					function ret(context) {
2338						var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
2339
2340						var data = options.data;
2341
2342						ret._setup(options);
2343						if (!options.partial && templateSpec.useData) {
2344							data = initData(context, data);
2345						}
2346						var depths = undefined,
2347							blockParams = templateSpec.useBlockParams ? [] : undefined;
2348						if (templateSpec.useDepths) {
2349							if (options.depths) {
2350								depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;
2351							} else {
2352								depths = [context];
2353							}
2354						}
2355
2356						function main(context /*, options*/) {
2357							return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);
2358						}
2359
2360						main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);
2361						return main(context, options);
2362					}
2363
2364					ret.isTop = true;
2365
2366					ret._setup = function (options) {
2367						if (!options.partial) {
2368							var mergedHelpers = {};
2369							addHelpers(mergedHelpers, env.helpers, container);
2370							addHelpers(mergedHelpers, options.helpers, container);
2371							container.helpers = mergedHelpers;
2372
2373							if (templateSpec.usePartial) {
2374								// Use mergeIfNeeded here to prevent compiling global partials multiple times
2375								container.partials = container.mergeIfNeeded(options.partials, env.partials);
2376							}
2377							if (templateSpec.usePartial || templateSpec.useDecorators) {
2378								container.decorators = Utils.extend({}, env.decorators, options.decorators);
2379							}
2380
vendor: 4,932 bytes, lines 2381-2516
2381							container.hooks = {};
2382							container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);
2383
2384							var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;
2385							_helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);
2386							_helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);
2387						} else {
2388							container.protoAccessControl = options.protoAccessControl; // internal option
2389							container.helpers = options.helpers;
2390							container.partials = options.partials;
2391							container.decorators = options.decorators;
2392							container.hooks = options.hooks;
2393						}
2394					};
2395
2396					ret._child = function (i, data, blockParams, depths) {
2397						if (templateSpec.useBlockParams && !blockParams) {
2398							throw new _exception2['default']('must pass block params');
2399						}
2400						if (templateSpec.useDepths && !depths) {
2401							throw new _exception2['default']('must pass parent depths');
2402						}
2403
2404						return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);
2405					};
2406					return ret;
2407				}
2408
2409				function wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {
2410					function prog(context) {
2411						var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
2412
2413						var currentDepths = depths;
2414						if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {
2415							currentDepths = [context].concat(depths);
2416						}
2417
2418						return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);
2419					}
2420
2421					prog = executeDecorators(fn, prog, container, depths, data, blockParams);
2422
2423					prog.program = i;
2424					prog.depth = depths ? depths.length : 0;
2425					prog.blockParams = declaredBlockParams || 0;
2426					return prog;
2427				}
2428
2429				/**
2430				 * This is currently part of the official API, therefore implementation details should not be changed.
2431				 */
2432
2433				function resolvePartial(partial, context, options) {
2434					if (!partial) {
2435						if (options.name === '@partial-block') {
2436							partial = lookupOwnProperty(options.data, 'partial-block');
2437						} else {
2438							partial = lookupOwnProperty(options.partials, options.name);
2439						}
2440					} else if (!partial.call && !options.name) {
2441						// This is a dynamic partial that returned a string
2442						options.name = partial;
2443						partial = lookupOwnProperty(options.partials, partial);
2444					}
2445					return partial;
2446				}
2447
2448				function invokePartial(partial, context, options) {
2449					// Use the current closure context to save the partial-block if this partial
2450					var currentPartialBlock = lookupOwnProperty(options.data, 'partial-block');
2451					options.partial = true;
2452					if (options.ids) {
2453						options.data.contextPath = options.ids[0] || options.data.contextPath;
2454					}
2455
2456					var partialBlock = undefined;
2457					if (options.fn && options.fn !== noop) {
2458						(function () {
2459							options.data = _base.createFrame(options.data);
2460							// Wrapper function to get access to currentPartialBlock from the closure
2461							var fn = options.fn;
2462							partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {
2463								var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
2464
2465								// Restore the partial-block from the closure for the execution of the block
2466								// i.e. the part inside the block of the partial call.
2467								options.data = _base.createFrame(options.data);
2468								options.data['partial-block'] = currentPartialBlock;
2469								return fn(context, options);
2470							};
2471							if (fn.partials) {
2472								options.partials = Utils.extend({}, options.partials, fn.partials);
2473							}
2474						})();
2475					}
2476
2477					if (partial === undefined && partialBlock) {
2478						partial = partialBlock;
2479					}
2480
2481					if (partial === undefined) {
2482						throw new _exception2['default']('The partial ' + options.name + ' could not be found');
2483					} else if (partial instanceof Function) {
2484						return partial(context, options);
2485					}
2486				}
2487
2488				function noop() {
2489					return '';
2490				}
2491
2492				function lookupOwnProperty(obj, name) {
2493					if (obj && Object.prototype.hasOwnProperty.call(obj, name)) {
2494						return obj[name];
2495					}
2496				}
2497
2498				function initData(context, data) {
2499					if (!data || !('root' in data)) {
2500						data = data ? _base.createFrame(data) : {};
2501						data.root = context;
2502					}
2503					return data;
2504				}
2505
2506				function executeDecorators(fn, prog, container, depths, data, blockParams) {
2507					if (fn.decorator) {
2508						var props = {};
2509						prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);
2510						Utils.extend(prog, props);
2511					}
2512					return prog;
2513				}
2514
2515				function addHelpers(mergedHelpers, helpers, container) {
2516					if (!helpers) return;
vendor: 14,317 bytes, lines 2517-2885
2517					_Object$keys(helpers).forEach(function (helperName) {
2518						var helper = helpers[helperName];
2519						mergedHelpers[helperName] = passLookupPropertyOption(helper, container);
2520					});
2521				}
2522
2523				function passLookupPropertyOption(helper, container) {
2524					var lookupProperty = container.lookupProperty;
2525					return _internalWrapHelper.wrapHelper(helper, function (options) {
2526						options.lookupProperty = lookupProperty;
2527						return options;
2528					});
2529				}
2530
2531				/***/ }),
2532			/* 78 */
2533			/***/ (function(module, exports, __webpack_require__) {
2534
2535				module.exports = { "default": __webpack_require__(79), __esModule: true };
2536
2537				/***/ }),
2538			/* 79 */
2539			/***/ (function(module, exports, __webpack_require__) {
2540
2541				__webpack_require__(80);
2542				module.exports = __webpack_require__(21).Object.seal;
2543
2544				/***/ }),
2545			/* 80 */
2546			/***/ (function(module, exports, __webpack_require__) {
2547
2548				// 19.1.2.17 Object.seal(O)
2549				var isObject = __webpack_require__(40);
2550
2551				__webpack_require__(64)('seal', function($seal){
2552					return function seal(it){
2553						return $seal && isObject(it) ? $seal(it) : it;
2554					};
2555				});
2556
2557				/***/ }),
2558			/* 81 */
2559			/***/ (function(module, exports) {
2560
2561				'use strict';
2562
2563				exports.__esModule = true;
2564				exports.wrapHelper = wrapHelper;
2565
2566				function wrapHelper(helper, transformOptionsFn) {
2567					if (typeof helper !== 'function') {
2568						// This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639
2569						// We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.
2570						return helper;
2571					}
2572					var wrapper = function wrapper() /* dynamic arguments */{
2573						var options = arguments[arguments.length - 1];
2574						arguments[arguments.length - 1] = transformOptionsFn(options);
2575						return helper.apply(this, arguments);
2576					};
2577					return wrapper;
2578				}
2579
2580				/***/ }),
2581			/* 82 */
2582			/***/ (function(module, exports) {
2583
2584				/* global globalThis */
2585				'use strict';
2586
2587				exports.__esModule = true;
2588
2589				exports['default'] = function (Handlebars) {
2590					/* istanbul ignore next */
2591					// https://mathiasbynens.be/notes/globalthis
2592					(function () {
2593						if (typeof globalThis === 'object') return;
2594						Object.prototype.__defineGetter__('__magic__', function () {
2595							return this;
2596						});
2597						__magic__.globalThis = __magic__; // eslint-disable-line no-undef
2598						delete Object.prototype.__magic__;
2599					})();
2600
2601					var $Handlebars = globalThis.Handlebars;
2602
2603					/* istanbul ignore next */
2604					Handlebars.noConflict = function () {
2605						if (globalThis.Handlebars === Handlebars) {
2606							globalThis.Handlebars = $Handlebars;
2607						}
2608						return Handlebars;
2609					};
2610				};
2611
2612				module.exports = exports['default'];
2613
2614				/***/ }),
2615			/* 83 */
2616			/***/ (function(module, exports) {
2617
2618				'use strict';
2619
2620				exports.__esModule = true;
2621				var AST = {
2622					// Public API used to evaluate derived attributes regarding AST nodes
2623					helpers: {
2624						// a mustache is definitely a helper if:
2625						// * it is an eligible helper, and
2626						// * it has at least one parameter or hash segment
2627						helperExpression: function helperExpression(node) {
2628							return node.type === 'SubExpression' || (node.type === 'MustacheStatement' || node.type === 'BlockStatement') && !!(node.params && node.params.length || node.hash);
2629						},
2630
2631						scopedId: function scopedId(path) {
2632							return (/^\.|this\b/.test(path.original)
2633							);
2634						},
2635
2636						// an ID is simple if it only has one part, and that part is not
2637						// `..` or `this`.
2638						simpleId: function simpleId(path) {
2639							return path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth;
2640						}
2641					}
2642				};
2643
2644				// Must be exported as an object rather than the root of the module as the jison lexer
2645				// must modify the object to operate properly.
2646				exports['default'] = AST;
2647				module.exports = exports['default'];
2648
2649				/***/ }),
2650			/* 84 */
2651			/***/ (function(module, exports, __webpack_require__) {
2652
2653				'use strict';
2654
2655				var _Object$keys = __webpack_require__(60)['default'];
2656
2657				var _interopRequireDefault = __webpack_require__(1)['default'];
2658
2659				var _interopRequireWildcard = __webpack_require__(3)['default'];
2660
2661				exports.__esModule = true;
2662				exports.parseWithoutProcessing = parseWithoutProcessing;
2663				exports.parse = parse;
2664
2665				var _parser = __webpack_require__(85);
2666
2667				var _parser2 = _interopRequireDefault(_parser);
2668
2669				var _whitespaceControl = __webpack_require__(86);
2670
2671				var _whitespaceControl2 = _interopRequireDefault(_whitespaceControl);
2672
2673				var _helpers = __webpack_require__(88);
2674
2675				var Helpers = _interopRequireWildcard(_helpers);
2676
2677				var _exception = __webpack_require__(6);
2678
2679				var _exception2 = _interopRequireDefault(_exception);
2680
2681				var _utils = __webpack_require__(5);
2682
2683				exports.parser = _parser2['default'];
2684
2685				var yy = {};
2686				_utils.extend(yy, Helpers);
2687
2688				function parseWithoutProcessing(input, options) {
2689					// Just return if an already-compiled AST was passed in.
2690					if (input.type === 'Program') {
2691						// When a pre-parsed AST is passed in, validate all node values to prevent
2692						// code injection via type-confused literals.
2693						validateInputAst(input);
2694						return input;
2695					}
2696
2697					_parser2['default'].yy = yy;
2698
2699					// Altering the shared object here, but this is ok as parser is a sync operation
2700					yy.locInfo = function (locInfo) {
2701						return new yy.SourceLocation(options && options.srcName, locInfo);
2702					};
2703
2704					var ast = _parser2['default'].parse(input);
2705
2706					return ast;
2707				}
2708
2709				function parse(input, options) {
2710					var ast = parseWithoutProcessing(input, options);
2711					var strip = new _whitespaceControl2['default'](options);
2712
2713					return strip.accept(ast);
2714				}
2715
2716				function validateInputAst(ast) {
2717					validateAstNode(ast);
2718				}
2719
2720				function validateAstNode(node) {
2721					if (node == null) {
2722						return;
2723					}
2724
2725					if (Array.isArray(node)) {
2726						node.forEach(validateAstNode);
2727						return;
2728					}
2729
2730					if (typeof node !== 'object') {
2731						return;
2732					}
2733
2734					if (node.type === 'PathExpression') {
2735						if (!isValidDepth(node.depth)) {
2736							throw new _exception2['default']('Invalid AST: PathExpression.depth must be an integer');
2737						}
2738						if (!Array.isArray(node.parts)) {
2739							throw new _exception2['default']('Invalid AST: PathExpression.parts must be an array');
2740						}
2741						for (var i = 0; i < node.parts.length; i++) {
2742							if (typeof node.parts[i] !== 'string') {
2743								throw new _exception2['default']('Invalid AST: PathExpression.parts must only contain strings');
2744							}
2745						}
2746					} else if (node.type === 'NumberLiteral') {
2747						if (typeof node.value !== 'number' || !isFinite(node.value)) {
2748							throw new _exception2['default']('Invalid AST: NumberLiteral.value must be a number');
2749						}
2750					} else if (node.type === 'BooleanLiteral') {
2751						if (typeof node.value !== 'boolean') {
2752							throw new _exception2['default']('Invalid AST: BooleanLiteral.value must be a boolean');
2753						}
2754					}
2755
2756					_Object$keys(node).forEach(function (propertyName) {
2757						if (propertyName === 'loc') {
2758							return;
2759						}
2760						validateAstNode(node[propertyName]);
2761					});
2762				}
2763
2764				function isValidDepth(depth) {
2765					return typeof depth === 'number' && isFinite(depth) && Math.floor(depth) === depth && depth >= 0;
2766				}
2767
2768				/***/ }),
2769			/* 85 */
2770			/***/ (function(module, exports) {
2771
2772				// File ignored in coverage tests via setting in .istanbul.yml
2773				/* Jison generated parser */
2774				"use strict";
2775
2776				exports.__esModule = true;
2777				var handlebars = (function () {
2778					var parser = { trace: function trace() {},
2779						yy: {},
2780						symbols_: { "error": 2, "root": 3, "program": 4, "EOF": 5, "program_repetition0": 6, "statement": 7, "mustache": 8, "block": 9, "rawBlock": 10, "partial": 11, "partialBlock": 12, "content": 13, "COMMENT": 14, "CONTENT": 15, "openRawBlock": 16, "rawBlock_repetition0": 17, "END_RAW_BLOCK": 18, "OPEN_RAW_BLOCK": 19, "helperName": 20, "openRawBlock_repetition0": 21, "openRawBlock_option0": 22, "CLOSE_RAW_BLOCK": 23, "openBlock": 24, "block_option0": 25, "closeBlock": 26, "openInverse": 27, "block_option1": 28, "OPEN_BLOCK": 29, "openBlock_repetition0": 30, "openBlock_option0": 31, "openBlock_option1": 32, "CLOSE": 33, "OPEN_INVERSE": 34, "openInverse_repetition0": 35, "openInverse_option0": 36, "openInverse_option1": 37, "openInverseChain": 38, "OPEN_INVERSE_CHAIN": 39, "openInverseChain_repetition0": 40, "openInverseChain_option0": 41, "openInverseChain_option1": 42, "inverseAndProgram": 43, "INVERSE": 44, "inverseChain": 45, "inverseChain_option0": 46, "OPEN_ENDBLOCK": 47, "OPEN": 48, "mustache_repetition0": 49, "mustache_option0": 50, "OPEN_UNESCAPED": 51, "mustache_repetition1": 52, "mustache_option1": 53, "CLOSE_UNESCAPED": 54, "OPEN_PARTIAL": 55, "partialName": 56, "partial_repetition0": 57, "partial_option0": 58, "openPartialBlock": 59, "OPEN_PARTIAL_BLOCK": 60, "openPartialBlock_repetition0": 61, "openPartialBlock_option0": 62, "param": 63, "sexpr": 64, "OPEN_SEXPR": 65, "sexpr_repetition0": 66, "sexpr_option0": 67, "CLOSE_SEXPR": 68, "hash": 69, "hash_repetition_plus0": 70, "hashSegment": 71, "ID": 72, "EQUALS": 73, "blockParams": 74, "OPEN_BLOCK_PARAMS": 75, "blockParams_repetition_plus0": 76, "CLOSE_BLOCK_PARAMS": 77, "path": 78, "dataName": 79, "STRING": 80, "NUMBER": 81, "BOOLEAN": 82, "UNDEFINED": 83, "NULL": 84, "DATA": 85, "pathSegments": 86, "SEP": 87, "$accept": 0, "$end": 1 },
2781						terminals_: { 2: "error", 5: "EOF", 14: "COMMENT", 15: "CONTENT", 18: "END_RAW_BLOCK", 19: "OPEN_RAW_BLOCK", 23: "CLOSE_RAW_BLOCK", 29: "OPEN_BLOCK", 33: "CLOSE", 34: "OPEN_INVERSE", 39: "OPEN_INVERSE_CHAIN", 44: "INVERSE", 47: "OPEN_ENDBLOCK", 48: "OPEN", 51: "OPEN_UNESCAPED", 54: "CLOSE_UNESCAPED", 55: "OPEN_PARTIAL", 60: "OPEN_PARTIAL_BLOCK", 65: "OPEN_SEXPR", 68: "CLOSE_SEXPR", 72: "ID", 73: "EQUALS", 75: "OPEN_BLOCK_PARAMS", 77: "CLOSE_BLOCK_PARAMS", 80: "STRING", 81: "NUMBER", 82: "BOOLEAN", 83: "UNDEFINED", 84: "NULL", 85: "DATA", 87: "SEP" },
2782						productions_: [0, [3, 2], [4, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [13, 1], [10, 3], [16, 5], [9, 4], [9, 4], [24, 6], [27, 6], [38, 6], [43, 2], [45, 3], [45, 1], [26, 3], [8, 5], [8, 5], [11, 5], [12, 3], [59, 5], [63, 1], [63, 1], [64, 5], [69, 1], [71, 3], [74, 3], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [56, 1], [56, 1], [79, 2], [78, 1], [86, 3], [86, 1], [6, 0], [6, 2], [17, 0], [17, 2], [21, 0], [21, 2], [22, 0], [22, 1], [25, 0], [25, 1], [28, 0], [28, 1], [30, 0], [30, 2], [31, 0], [31, 1], [32, 0], [32, 1], [35, 0], [35, 2], [36, 0], [36, 1], [37, 0], [37, 1], [40, 0], [40, 2], [41, 0], [41, 1], [42, 0], [42, 1], [46, 0], [46, 1], [49, 0], [49, 2], [50, 0], [50, 1], [52, 0], [52, 2], [53, 0], [53, 1], [57, 0], [57, 2], [58, 0], [58, 1], [61, 0], [61, 2], [62, 0], [62, 1], [66, 0], [66, 2], [67, 0], [67, 1], [70, 1], [70, 2], [76, 1], [76, 2]],
2783						performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {
2784
2785							var $0 = $$.length - 1;
2786							switch (yystate) {
2787								case 1:
2788									return $$[$0 - 1];
2789									break;
2790								case 2:
2791									this.$ = yy.prepareProgram($$[$0]);
2792									break;
2793								case 3:
2794									this.$ = $$[$0];
2795									break;
2796								case 4:
2797									this.$ = $$[$0];
2798									break;
2799								case 5:
2800									this.$ = $$[$0];
2801									break;
2802								case 6:
2803									this.$ = $$[$0];
2804									break;
2805								case 7:
2806									this.$ = $$[$0];
2807									break;
2808								case 8:
2809									this.$ = $$[$0];
2810									break;
2811								case 9:
2812									this.$ = {
2813										type: 'CommentStatement',
2814										value: yy.stripComment($$[$0]),
2815										strip: yy.stripFlags($$[$0], $$[$0]),
2816										loc: yy.locInfo(this._$)
2817									};
2818
2819									break;
2820								case 10:
2821									this.$ = {
2822										type: 'ContentStatement',
2823										original: $$[$0],
2824										value: $$[$0],
2825										loc: yy.locInfo(this._$)
2826									};
2827
2828									break;
2829								case 11:
2830									this.$ = yy.prepareRawBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);
2831									break;
2832								case 12:
2833									this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1] };
2834									break;
2835								case 13:
2836									this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], false, this._$);
2837									break;
2838								case 14:
2839									this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], true, this._$);
2840									break;
2841								case 15:
2842									this.$ = { open: $$[$0 - 5], path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) };
2843									break;
2844								case 16:
2845									this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) };
2846									break;
2847								case 17:
2848									this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) };
2849									break;
2850								case 18:
2851									this.$ = { strip: yy.stripFlags($$[$0 - 1], $$[$0 - 1]), program: $$[$0] };
2852									break;
2853								case 19:
2854									var inverse = yy.prepareBlock($$[$0 - 2], $$[$0 - 1], $$[$0], $$[$0], false, this._$),
2855										program = yy.prepareProgram([inverse], $$[$0 - 1].loc);
2856									program.chained = true;
2857
2858									this.$ = { strip: $$[$0 - 2].strip, program: program, chain: true };
2859
2860									break;
2861								case 20:
2862									this.$ = $$[$0];
2863									break;
2864								case 21:
2865									this.$ = { path: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 2], $$[$0]) };
2866									break;
2867								case 22:
2868									this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$);
2869									break;
2870								case 23:
2871									this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$);
2872									break;
2873								case 24:
2874									this.$ = {
2875										type: 'PartialStatement',
2876										name: $$[$0 - 3],
2877										params: $$[$0 - 2],
2878										hash: $$[$0 - 1],
2879										indent: '',
2880										strip: yy.stripFlags($$[$0 - 4], $$[$0]),
2881										loc: yy.locInfo(this._$)
2882									};
2883
2884									break;
2885								case 25:
vendor: 3,917 bytes, lines 2886-3035
2886									this.$ = yy.preparePartialBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);
2887									break;
2888								case 26:
2889									this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 4], $$[$0]) };
2890									break;
2891								case 27:
2892									this.$ = $$[$0];
2893									break;
2894								case 28:
2895									this.$ = $$[$0];
2896									break;
2897								case 29:
2898									this.$ = {
2899										type: 'SubExpression',
2900										path: $$[$0 - 3],
2901										params: $$[$0 - 2],
2902										hash: $$[$0 - 1],
2903										loc: yy.locInfo(this._$)
2904									};
2905
2906									break;
2907								case 30:
2908									this.$ = { type: 'Hash', pairs: $$[$0], loc: yy.locInfo(this._$) };
2909									break;
2910								case 31:
2911									this.$ = { type: 'HashPair', key: yy.id($$[$0 - 2]), value: $$[$0], loc: yy.locInfo(this._$) };
2912									break;
2913								case 32:
2914									this.$ = yy.id($$[$0 - 1]);
2915									break;
2916								case 33:
2917									this.$ = $$[$0];
2918									break;
2919								case 34:
2920									this.$ = $$[$0];
2921									break;
2922								case 35:
2923									this.$ = { type: 'StringLiteral', value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$) };
2924									break;
2925								case 36:
2926									this.$ = { type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$) };
2927									break;
2928								case 37:
2929									this.$ = { type: 'BooleanLiteral', value: $$[$0] === 'true', original: $$[$0] === 'true', loc: yy.locInfo(this._$) };
2930									break;
2931								case 38:
2932									this.$ = { type: 'UndefinedLiteral', original: undefined, value: undefined, loc: yy.locInfo(this._$) };
2933									break;
2934								case 39:
2935									this.$ = { type: 'NullLiteral', original: null, value: null, loc: yy.locInfo(this._$) };
2936									break;
2937								case 40:
2938									this.$ = $$[$0];
2939									break;
2940								case 41:
2941									this.$ = $$[$0];
2942									break;
2943								case 42:
2944									this.$ = yy.preparePath(true, $$[$0], this._$);
2945									break;
2946								case 43:
2947									this.$ = yy.preparePath(false, $$[$0], this._$);
2948									break;
2949								case 44:
2950									$$[$0 - 2].push({ part: yy.id($$[$0]), original: $$[$0], separator: $$[$0 - 1] });this.$ = $$[$0 - 2];
2951									break;
2952								case 45:
2953									this.$ = [{ part: yy.id($$[$0]), original: $$[$0] }];
2954									break;
2955								case 46:
2956									this.$ = [];
2957									break;
2958								case 47:
2959									$$[$0 - 1].push($$[$0]);
2960									break;
2961								case 48:
2962									this.$ = [];
2963									break;
2964								case 49:
2965									$$[$0 - 1].push($$[$0]);
2966									break;
2967								case 50:
2968									this.$ = [];
2969									break;
2970								case 51:
2971									$$[$0 - 1].push($$[$0]);
2972									break;
2973								case 58:
2974									this.$ = [];
2975									break;
2976								case 59:
2977									$$[$0 - 1].push($$[$0]);
2978									break;
2979								case 64:
2980									this.$ = [];
2981									break;
2982								case 65:
2983									$$[$0 - 1].push($$[$0]);
2984									break;
2985								case 70:
2986									this.$ = [];
2987									break;
2988								case 71:
2989									$$[$0 - 1].push($$[$0]);
2990									break;
2991								case 78:
2992									this.$ = [];
2993									break;
2994								case 79:
2995									$$[$0 - 1].push($$[$0]);
2996									break;
2997								case 82:
2998									this.$ = [];
2999									break;
3000								case 83:
3001									$$[$0 - 1].push($$[$0]);
3002									break;
3003								case 86:
3004									this.$ = [];
3005									break;
3006								case 87:
3007									$$[$0 - 1].push($$[$0]);
3008									break;
3009								case 90:
3010									this.$ = [];
3011									break;
3012								case 91:
3013									$$[$0 - 1].push($$[$0]);
3014									break;
3015								case 94:
3016									this.$ = [];
3017									break;
3018								case 95:
3019									$$[$0 - 1].push($$[$0]);
3020									break;
3021								case 98:
3022									this.$ = [$$[$0]];
3023									break;
3024								case 99:
3025									$$[$0 - 1].push($$[$0]);
3026									break;
3027								case 100:
3028									this.$ = [$$[$0]];
3029									break;
3030								case 101:
3031									$$[$0 - 1].push($$[$0]);
3032									break;
3033							}
3034						},
3035						
vendor: 14,905 bytes, line 3035
3035table: [{ 3: 1, 4: 2, 5: [2, 46], 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 1: [3] }, { 5: [1, 4] }, { 5: [2, 2], 7: 5, 8: 6, 9: 7, 10: 8, 11: 9, 12: 10, 13: 11, 14: [1, 12], 15: [1, 20], 16: 17, 19: [1, 23], 24: 15, 27: 16, 29: [1, 21], 34: [1, 22], 39: [2, 2], 44: [2, 2], 47: [2, 2], 48: [1, 13], 51: [1, 14], 55: [1, 18], 59: 19, 60: [1, 24] }, { 1: [2, 1] }, { 5: [2, 47], 14: [2, 47], 15: [2, 47], 19: [2, 47], 29: [2, 47], 34: [2, 47], 39: [2, 47], 44: [2, 47], 47: [2, 47], 48: [2, 47], 51: [2, 47], 55: [2, 47], 60: [2, 47] }, { 5: [2, 3], 14: [2, 3], 15: [2, 3], 19: [2, 3], 29: [2, 3], 34: [2, 3], 39: [2, 3], 44: [2, 3], 47: [2, 3], 48: [2, 3], 51: [2, 3], 55: [2, 3], 60: [2, 3] }, { 5: [2, 4], 14: [2, 4], 15: [2, 4], 19: [2, 4], 29: [2, 4], 34: [2, 4], 39: [2, 4], 44: [2, 4], 47: [2, 4], 48: [2, 4], 51: [2, 4], 55: [2, 4], 60: [2, 4] }, { 5: [2, 5], 14: [2, 5], 15: [2, 5], 19: [2, 5], 29: [2, 5], 34: [2, 5], 39: [2, 5], 44: [2, 5], 47: [2, 5], 48: [2, 5], 51: [2, 5], 55: [2, 5], 60: [2, 5] }, { 5: [2, 6], 14: [2, 6], 15: [2, 6], 19: [2, 6], 29: [2, 6], 34: [2, 6], 39: [2, 6], 44: [2, 6], 47: [2, 6], 48: [2, 6], 51: [2, 6], 55: [2, 6], 60: [2, 6] }, { 5: [2, 7], 14: [2, 7], 15: [2, 7], 19: [2, 7], 29: [2, 7], 34: [2, 7], 39: [2, 7], 44: [2, 7], 47: [2, 7], 48: [2, 7], 51: [2, 7], 55: [2, 7], 60: [2, 7] }, { 5: [2, 8], 14: [2, 8], 15: [2, 8], 19: [2, 8], 29: [2, 8], 34: [2, 8], 39: [2, 8], 44: [2, 8], 47: [2, 8], 48: [2, 8], 51: [2, 8], 55: [2, 8], 60: [2, 8] }, { 5: [2, 9], 14: [2, 9], 15: [2, 9], 19: [2, 9], 29: [2, 9], 34: [2, 9], 39: [2, 9], 44: [2, 9], 47: [2, 9], 48: [2, 9], 51: [2, 9], 55: [2, 9], 60: [2, 9] }, { 20: 25, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 36, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 37, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 4: 38, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 15: [2, 48], 17: 39, 18: [2, 48] }, { 20: 41, 56: 40, 64: 42, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 44, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 5: [2, 10], 14: [2, 10], 15: [2, 10], 18: [2, 10], 19: [2, 10], 29: [2, 10], 34: [2, 10], 39: [2, 10], 44: [2, 10], 47: [2, 10], 48: [2, 10], 51: [2, 10], 55: [2, 10], 60: [2, 10] }, { 20: 45, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 46, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 47, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 41, 56: 48, 64: 42, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [2, 78], 49: 49, 65: [2, 78], 72: [2, 78], 80: [2, 78], 81: [2, 78], 82: [2, 78], 83: [2, 78], 84: [2, 78], 85: [2, 78] }, { 23: [2, 33], 33: [2, 33], 54: [2, 33], 65: [2, 33], 68: [2, 33], 72: [2, 33], 75: [2, 33], 80: [2, 33], 81: [2, 33], 82: [2, 33], 83: [2, 33], 84: [2, 33], 85: [2, 33] }, { 23: [2, 34], 33: [2, 34], 54: [2, 34], 65: [2, 34], 68: [2, 34], 72: [2, 34], 75: [2, 34], 80: [2, 34], 81: [2, 34], 82: [2, 34], 83: [2, 34], 84: [2, 34], 85: [2, 34] }, { 23: [2, 35], 33: [2, 35], 54: [2, 35], 65: [2, 35], 68: [2, 35], 72: [2, 35], 75: [2, 35], 80: [2, 35], 81: [2, 35], 82: [2, 35], 83: [2, 35], 84: [2, 35], 85: [2, 35] }, { 23: [2, 36], 33: [2, 36], 54: [2, 36], 65: [2, 36], 68: [2, 36], 72: [2, 36], 75: [2, 36], 80: [2, 36], 81: [2, 36], 82: [2, 36], 83: [2, 36], 84: [2, 36], 85: [2, 36] }, { 23: [2, 37], 33: [2, 37], 54: [2, 37], 65: [2, 37], 68: [2, 37], 72: [2, 37], 75: [2, 37], 80: [2, 37], 81: [2, 37], 82: [2, 37], 83: [2, 37], 84: [2, 37], 85: [2, 37] }, { 23: [2, 38], 33: [2, 38], 54: [2, 38], 65: [2, 38], 68: [2, 38], 72: [2, 38], 75: [2, 38], 80: [2, 38], 81: [2, 38], 82: [2, 38], 83: [2, 38], 84: [2, 38], 85: [2, 38] }, { 23: [2, 39], 33: [2, 39], 54: [2, 39], 65: [2, 39], 68: [2, 39], 72: [2, 39], 75: [2, 39], 80: [2, 39], 81: [2, 39], 82: [2, 39], 83: [2, 39], 84: [2, 39], 85: [2, 39] }, { 23: [2, 43], 33: [2, 43], 54: [2, 43], 65: [2, 43], 68: [2, 43], 72: [2, 43], 75: [2, 43], 80: [2, 43], 81: [2, 43], 82: [2, 43], 83: [2, 43], 84: [2, 43], 85: [2, 43], 87: [1, 50] }, { 72: [1, 35], 86: 51 }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 52: 52, 54: [2, 82], 65: [2, 82], 72: [2, 82], 80: [2, 82], 81: [2, 82], 82: [2, 82], 83: [2, 82], 84: [2, 82], 85: [2, 82] }, { 25: 53, 38: 55, 39: [1, 57], 43: 56, 44: [1, 58], 45: 54, 47: [2, 54] }, { 28: 59, 43: 60, 44: [1, 58], 47: [2, 56] }, { 13: 62, 15: [1, 20], 18: [1, 61] }, { 33: [2, 86], 57: 63, 65: [2, 86], 72: [2, 86], 80: [2, 86], 81: [2, 86], 82: [2, 86], 83: [2, 86], 84: [2, 86], 85: [2, 86] }, { 33: [2, 40], 65: [2, 40], 72: [2, 40], 80: [2, 40], 81: [2, 40], 82: [2, 40], 83: [2, 40], 84: [2, 40], 85: [2, 40] }, { 33: [2, 41], 65: [2, 41], 72: [2, 41], 80: [2, 41], 81: [2, 41], 82: [2, 41], 83: [2, 41], 84: [2, 41], 85: [2, 41] }, { 20: 64, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 65, 47: [1, 66] }, { 30: 67, 33: [2, 58], 65: [2, 58], 72: [2, 58], 75: [2, 58], 80: [2, 58], 81: [2, 58], 82: [2, 58], 83: [2, 58], 84: [2, 58], 85: [2, 58] }, { 33: [2, 64], 35: 68, 65: [2, 64], 72: [2, 64], 75: [2, 64], 80: [2, 64], 81: [2, 64], 82: [2, 64], 83: [2, 64], 84: [2, 64], 85: [2, 64] }, { 21: 69, 23: [2, 50], 65: [2, 50], 72: [2, 50], 80: [2, 50], 81: [2, 50], 82: [2, 50], 83: [2, 50], 84: [2, 50], 85: [2, 50] }, { 33: [2, 90], 61: 70, 65: [2, 90], 72: [2, 90], 80: [2, 90], 81: [2, 90], 82: [2, 90], 83: [2, 90], 84: [2, 90], 85: [2, 90] }, { 20: 74, 33: [2, 80], 50: 71, 63: 72, 64: 75, 65: [1, 43], 69: 73, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 72: [1, 79] }, { 23: [2, 42], 33: [2, 42], 54: [2, 42], 65: [2, 42], 68: [2, 42], 72: [2, 42], 75: [2, 42], 80: [2, 42], 81: [2, 42], 82: [2, 42], 83: [2, 42], 84: [2, 42], 85: [2, 42], 87: [1, 50] }, { 20: 74, 53: 80, 54: [2, 84], 63: 81, 64: 75, 65: [1, 43], 69: 82, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 83, 47: [1, 66] }, { 47: [2, 55] }, { 4: 84, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 47: [2, 20] }, { 20: 85, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 86, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 26: 87, 47: [1, 66] }, { 47: [2, 57] }, { 5: [2, 11], 14: [2, 11], 15: [2, 11], 19: [2, 11], 29: [2, 11], 34: [2, 11], 39: [2, 11], 44: [2, 11], 47: [2, 11], 48: [2, 11], 51: [2, 11], 55: [2, 11], 60: [2, 11] }, { 15: [2, 49], 18: [2, 49] }, { 20: 74, 33: [2, 88], 58: 88, 63: 89, 64: 75, 65: [1, 43], 69: 90, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 65: [2, 94], 66: 91, 68: [2, 94], 72: [2, 94], 80: [2, 94], 81: [2, 94], 82: [2, 94], 83: [2, 94], 84: [2, 94], 85: [2, 94] }, { 5: [2, 25], 14: [2, 25], 15: [2, 25], 19: [2, 25], 29: [2, 25], 34: [2, 25], 39: [2, 25], 44: [2, 25], 47: [2, 25], 48: [2, 25], 51: [2, 25], 55: [2, 25], 60: [2, 25] }, { 20: 92, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 31: 93, 33: [2, 60], 63: 94, 64: 75, 65: [1, 43], 69: 95, 70: 76, 71: 77, 72: [1, 78], 75: [2, 60], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 33: [2, 66], 36: 96, 63: 97, 64: 75, 65: [1, 43], 69: 98, 70: 76, 71: 77, 72: [1, 78], 75: [2, 66], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 22: 99, 23: [2, 52], 63: 100, 64: 75, 65: [1, 43], 69: 101, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 33: [2, 92], 62: 102, 63: 103, 64: 75, 65: [1, 43], 69: 104, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 105] }, { 33: [2, 79], 65: [2, 79], 72: [2, 79], 80: [2, 79], 81: [2, 79], 82: [2, 79], 83: [2, 79], 84: [2, 79], 85: [2, 79] }, { 33: [2, 81] }, { 23: [2, 27], 33: [2, 27], 54: [2, 27], 65: [2, 27], 68: [2, 27], 72: [2, 27], 75: [2, 27], 80: [2, 27], 81: [2, 27], 82: [2, 27], 83: [2, 27], 84: [2, 27], 85: [2, 27] }, { 23: [2, 28], 33: [2, 28], 54: [2, 28], 65: [2, 28], 68: [2, 28], 72: [2, 28], 75: [2, 28], 80: [2, 28], 81: [2, 28], 82: [2, 28], 83: [2, 28], 84: [2, 28], 85: [2, 28] }, { 23: [2, 30], 33: [2, 30], 54: [2, 30], 68: [2, 30], 71: 106, 72: [1, 107], 75: [2, 30] }, { 23: [2, 98], 33: [2, 98], 54: [2, 98], 68: [2, 98], 72: [2, 98], 75: [2, 98] }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 73: [1, 108], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 23: [2, 44], 33: [2, 44], 54: [2, 44], 65: [2, 44], 68: [2, 44], 72: [2, 44], 75: [2, 44], 80: [2, 44], 81: [2, 44], 82: [2, 44], 83: [2, 44], 84: [2, 44], 85: [2, 44], 87: [2, 44] }, { 54: [1, 109] }, { 54: [2, 83], 65: [2, 83], 72: [2, 83], 80: [2, 83], 81: [2, 83], 82: [2, 83], 83: [2, 83], 84: [2, 83], 85: [2, 83] }, { 54: [2, 85] }, { 5: [2, 13], 14: [2, 13], 15: [2, 13], 19: [2, 13], 29: [2, 13], 34: [2, 13], 39: [2, 13], 44: [2, 13], 47: [2, 13], 48: [2, 13], 51: [2, 13], 55: [2, 13], 60: [2, 13] }, { 38: 55, 39: [1, 57], 43: 56, 44: [1, 58], 45: 111, 46: 110, 47: [2, 76] }, { 33: [2, 70], 40: 112, 65: [2, 70], 72: [2, 70], 75: [2, 70], 80: [2, 70], 81: [2, 70], 82: [2, 70], 83: [2, 70], 84: [2, 70], 85: [2, 70] }, { 47: [2, 18] }, { 5: [2, 14], 14: [2, 14], 15: [2, 14], 19: [2, 14], 29: [2, 14], 34: [2, 14], 39: [2, 14], 44: [2, 14], 47: [2, 14], 48: [2, 14], 51: [2, 14], 55: [2, 14], 60: [2, 14] }, { 33: [1, 113] }, { 33: [2, 87], 65: [2, 87], 72: [2, 87], 80: [2, 87], 81: [2, 87], 82: [2, 87], 83: [2, 87], 84: [2, 87], 85: [2, 87] }, { 33: [2, 89] }, { 20: 74, 63: 115, 64: 75, 65: [1, 43], 67: 114, 68: [2, 96], 69: 116, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 117] }, { 32: 118, 33: [2, 62], 74: 119, 75: [1, 120] }, { 33: [2, 59], 65: [2, 59], 72: [2, 59], 75: [2, 59], 80: [2, 59], 81: [2, 59], 82: [2, 59], 83: [2, 59], 84: [2, 59], 85: [2, 59] }, { 33: [2, 61], 75: [2, 61] }, { 33: [2, 68], 37: 121, 74: 122, 75: [1, 120] }, { 33: [2, 65], 65: [2, 65], 72: [2, 65], 75: [2, 65], 80: [2, 65], 81: [2, 65], 82: [2, 65], 83: [2, 65], 84: [2, 65], 85: [2, 65] }, { 33: [2, 67], 75: [2, 67] }, { 23: [1, 123] }, { 23: [2, 51], 65: [2, 51], 72: [2, 51], 80: [2, 51], 81: [2, 51], 82: [2, 51], 83: [2, 51], 84: [2, 51], 85: [2, 51] }, { 23: [2, 53] }, { 33: [1, 124] }, { 33: [2, 91], 65: [2, 91], 72: [2, 91], 80: [2, 91], 81: [2, 91], 82: [2, 91], 83: [2, 91], 84: [2, 91], 85: [2, 91] }, { 33: [2, 93] }, { 5: [2, 22], 14: [2, 22], 15: [2, 22], 19: [2, 22], 29: [2, 22], 34: [2, 22], 39: [2, 22], 44: [2, 22], 47: [2, 22], 48: [2, 22], 51: [2, 22], 55: [2, 22], 60: [2, 22] }, { 23: [2, 99], 33: [2, 99], 54: [2, 99], 68: [2, 99], 72: [2, 99], 75: [2, 99] }, { 73: [1, 108] }, { 20: 74, 63: 125, 64: 75, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 23], 14: [2, 23], 15: [2, 23], 19: [2, 23], 29: [2, 23], 34: [2, 23], 39: [2, 23], 44: [2, 23], 47: [2, 23], 48: [2, 23], 51: [2, 23], 55: [2, 23], 60: [2, 23] }, { 47: [2, 19] }, { 47: [2, 77] }, { 20: 74, 33: [2, 72], 41: 126, 63: 127, 64: 75, 65: [1, 43], 69: 128, 70: 76, 71: 77, 72: [1, 78], 75: [2, 72], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 24], 14: [2, 24], 15: [2, 24], 19: [2, 24], 29: [2, 24], 34: [2, 24], 39: [2, 24], 44: [2, 24], 47: [2, 24], 48: [2, 24], 51: [2, 24], 55: [2, 24], 60: [2, 24] }, { 68: [1, 129] }, { 65: [2, 95], 68: [2, 95], 72: [2, 95], 80: [2, 95], 81: [2, 95], 82: [2, 95], 83: [2, 95], 84: [2, 95], 85: [2, 95] }, { 68: [2, 97] }, { 5: [2, 21], 14: [2, 21], 15: [2, 21], 19: [2, 21], 29: [2, 21], 34: [2, 21], 39: [2, 21], 44: [2, 21], 47: [2, 21], 48: [2, 21], 51: [2, 21], 55: [2, 21], 60: [2, 21] }, { 33: [1, 130] }, { 33: [2, 63] }, { 72: [1, 132], 76: 131 }, { 33: [1, 133] }, { 33: [2, 69] }, { 15: [2, 12], 18: [2, 12] }, { 14: [2, 26], 15: [2, 26], 19: [2, 26], 29: [2, 26], 34: [2, 26], 47: [2, 26], 48: [2, 26], 51: [2, 26], 55: [2, 26], 60: [2, 26] }, { 23: [2, 31], 33: [2, 31], 54: [2, 31], 68: [2, 31], 72: [2, 31], 75: [2, 31] }, { 33: [2, 74], 42: 134, 74: 135, 75: [1, 120] }, { 33: [2, 71], 65: [2, 71], 72: [2, 71], 75: [2, 71], 80: [2, 71], 81: [2, 71], 82: [2, 71], 83: [2, 71], 84: [2, 71], 85: [2, 71] }, { 33: [2, 73], 75: [2, 73] }, { 23: [2, 29], 33: [2, 29], 54: [2, 29], 65: [2, 29], 68: [2, 29], 72: [2, 29], 75: [2, 29], 80: [2, 29], 81: [2, 29], 82: [2, 29], 83: [2, 29], 84: [2, 29], 85: [2, 29] }, { 14: [2, 15], 15: [2, 15], 19: [2, 15], 29: [2, 15], 34: [2, 15], 39: [2, 15], 44: [2, 15], 47: [2, 15], 48: [2, 15], 51: [2, 15], 55: [2, 15], 60: [2, 15] }, { 72: [1, 137], 77: [1, 136] }, { 72: [2, 100], 77: [2, 100] }, { 14: [2, 16], 15: [2, 16], 19: [2, 16], 29: [2, 16], 34: [2, 16], 44: [2, 16], 47: [2, 16], 48: [2, 16], 51: [2, 16], 55: [2, 16], 60: [2, 16] }, { 33: [1, 138] }, { 33: [2, 75] }, { 33: [2, 32] }, { 72: [2, 101], 77: [2, 101] }, { 14: [2, 17], 15: [2, 17], 19: [2, 17], 29: [2, 17], 34: [2, 17], 39: [2, 17], 44: [2, 17], 47: [2, 17], 48: [2, 17], 51: [2, 17], 55: [2, 17], 60: [2, 17] }],
vendor: 16,107 bytes, lines 3036-3499
3036						defaultActions: { 4: [2, 1], 54: [2, 55], 56: [2, 20], 60: [2, 57], 73: [2, 81], 82: [2, 85], 86: [2, 18], 90: [2, 89], 101: [2, 53], 104: [2, 93], 110: [2, 19], 111: [2, 77], 116: [2, 97], 119: [2, 63], 122: [2, 69], 135: [2, 75], 136: [2, 32] },
3037						parseError: function parseError(str, hash) {
3038							throw new Error(str);
3039						},
3040						parse: function parse(input) {
3041							var self = this,
3042								stack = [0],
3043								vstack = [null],
3044								lstack = [],
3045								table = this.table,
3046								yytext = "",
3047								yylineno = 0,
3048								yyleng = 0,
3049								recovering = 0,
3050								TERROR = 2,
3051								EOF = 1;
3052							this.lexer.setInput(input);
3053							this.lexer.yy = this.yy;
3054							this.yy.lexer = this.lexer;
3055							this.yy.parser = this;
3056							if (typeof this.lexer.yylloc == "undefined") this.lexer.yylloc = {};
3057							var yyloc = this.lexer.yylloc;
3058							lstack.push(yyloc);
3059							var ranges = this.lexer.options && this.lexer.options.ranges;
3060							if (typeof this.yy.parseError === "function") this.parseError = this.yy.parseError;
3061							function popStack(n) {
3062								stack.length = stack.length - 2 * n;
3063								vstack.length = vstack.length - n;
3064								lstack.length = lstack.length - n;
3065							}
3066							function lex() {
3067								var token;
3068								token = self.lexer.lex() || 1;
3069								if (typeof token !== "number") {
3070									token = self.symbols_[token] || token;
3071								}
3072								return token;
3073							}
3074							var symbol,
3075								preErrorSymbol,
3076								state,
3077								action,
3078								a,
3079								r,
3080								yyval = {},
3081								p,
3082								len,
3083								newState,
3084								expected;
3085							while (true) {
3086								state = stack[stack.length - 1];
3087								if (this.defaultActions[state]) {
3088									action = this.defaultActions[state];
3089								} else {
3090									if (symbol === null || typeof symbol == "undefined") {
3091										symbol = lex();
3092									}
3093									action = table[state] && table[state][symbol];
3094								}
3095								if (typeof action === "undefined" || !action.length || !action[0]) {
3096									var errStr = "";
3097									if (!recovering) {
3098										expected = [];
3099										for (p in table[state]) if (this.terminals_[p] && p > 2) {
3100											expected.push("'" + this.terminals_[p] + "'");
3101										}
3102										if (this.lexer.showPosition) {
3103											errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'";
3104										} else {
3105											errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'");
3106										}
3107										this.parseError(errStr, { text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected });
3108									}
3109								}
3110								if (action[0] instanceof Array && action.length > 1) {
3111									throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
3112								}
3113								switch (action[0]) {
3114									case 1:
3115										stack.push(symbol);
3116										vstack.push(this.lexer.yytext);
3117										lstack.push(this.lexer.yylloc);
3118										stack.push(action[1]);
3119										symbol = null;
3120										if (!preErrorSymbol) {
3121											yyleng = this.lexer.yyleng;
3122											yytext = this.lexer.yytext;
3123											yylineno = this.lexer.yylineno;
3124											yyloc = this.lexer.yylloc;
3125											if (recovering > 0) recovering--;
3126										} else {
3127											symbol = preErrorSymbol;
3128											preErrorSymbol = null;
3129										}
3130										break;
3131									case 2:
3132										len = this.productions_[action[1]][1];
3133										yyval.$ = vstack[vstack.length - len];
3134										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 };
3135										if (ranges) {
3136											yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];
3137										}
3138										r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);
3139										if (typeof r !== "undefined") {
3140											return r;
3141										}
3142										if (len) {
3143											stack = stack.slice(0, -1 * len * 2);
3144											vstack = vstack.slice(0, -1 * len);
3145											lstack = lstack.slice(0, -1 * len);
3146										}
3147										stack.push(this.productions_[action[1]][0]);
3148										vstack.push(yyval.$);
3149										lstack.push(yyval._$);
3150										newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
3151										stack.push(newState);
3152										break;
3153									case 3:
3154										return true;
3155								}
3156							}
3157							return true;
3158						}
3159					};
3160					/* Jison generated lexer */
3161					var lexer = (function () {
3162						var lexer = { EOF: 1,
3163							parseError: function parseError(str, hash) {
3164								if (this.yy.parser) {
3165									this.yy.parser.parseError(str, hash);
3166								} else {
3167									throw new Error(str);
3168								}
3169							},
3170							setInput: function setInput(input) {
3171								this._input = input;
3172								this._more = this._less = this.done = false;
3173								this.yylineno = this.yyleng = 0;
3174								this.yytext = this.matched = this.match = '';
3175								this.conditionStack = ['INITIAL'];
3176								this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 };
3177								if (this.options.ranges) this.yylloc.range = [0, 0];
3178								this.offset = 0;
3179								return this;
3180							},
3181							input: function input() {
3182								var ch = this._input[0];
3183								this.yytext += ch;
3184								this.yyleng++;
3185								this.offset++;
3186								this.match += ch;
3187								this.matched += ch;
3188								var lines = ch.match(/(?:\r\n?|\n).*/g);
3189								if (lines) {
3190									this.yylineno++;
3191									this.yylloc.last_line++;
3192								} else {
3193									this.yylloc.last_column++;
3194								}
3195								if (this.options.ranges) this.yylloc.range[1]++;
3196
3197								this._input = this._input.slice(1);
3198								return ch;
3199							},
3200							unput: function unput(ch) {
3201								var len = ch.length;
3202								var lines = ch.split(/(?:\r\n?|\n)/g);
3203
3204								this._input = ch + this._input;
3205								this.yytext = this.yytext.substr(0, this.yytext.length - len - 1);
3206								//this.yyleng -= len;
3207								this.offset -= len;
3208								var oldLines = this.match.split(/(?:\r\n?|\n)/g);
3209								this.match = this.match.substr(0, this.match.length - 1);
3210								this.matched = this.matched.substr(0, this.matched.length - 1);
3211
3212								if (lines.length - 1) this.yylineno -= lines.length - 1;
3213								var r = this.yylloc.range;
3214
3215								this.yylloc = { first_line: this.yylloc.first_line,
3216									last_line: this.yylineno + 1,
3217									first_column: this.yylloc.first_column,
3218									last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len
3219								};
3220
3221								if (this.options.ranges) {
3222									this.yylloc.range = [r[0], r[0] + this.yyleng - len];
3223								}
3224								return this;
3225							},
3226							more: function more() {
3227								this._more = true;
3228								return this;
3229							},
3230							less: function less(n) {
3231								this.unput(this.match.slice(n));
3232							},
3233							pastInput: function pastInput() {
3234								var past = this.matched.substr(0, this.matched.length - this.match.length);
3235								return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, "");
3236							},
3237							upcomingInput: function upcomingInput() {
3238								var next = this.match;
3239								if (next.length < 20) {
3240									next += this._input.substr(0, 20 - next.length);
3241								}
3242								return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
3243							},
3244							showPosition: function showPosition() {
3245								var pre = this.pastInput();
3246								var c = new Array(pre.length + 1).join("-");
3247								return pre + this.upcomingInput() + "\n" + c + "^";
3248							},
3249							next: function next() {
3250								if (this.done) {
3251									return this.EOF;
3252								}
3253								if (!this._input) this.done = true;
3254
3255								var token, match, tempMatch, index, col, lines;
3256								if (!this._more) {
3257									this.yytext = '';
3258									this.match = '';
3259								}
3260								var rules = this._currentRules();
3261								for (var i = 0; i < rules.length; i++) {
3262									tempMatch = this._input.match(this.rules[rules[i]]);
3263									if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
3264										match = tempMatch;
3265										index = i;
3266										if (!this.options.flex) break;
3267									}
3268								}
3269								if (match) {
3270									lines = match[0].match(/(?:\r\n?|\n).*/g);
3271									if (lines) this.yylineno += lines.length;
3272									this.yylloc = { first_line: this.yylloc.last_line,
3273										last_line: this.yylineno + 1,
3274										first_column: this.yylloc.last_column,
3275										last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length };
3276									this.yytext += match[0];
3277									this.match += match[0];
3278									this.matches = match;
3279									this.yyleng = this.yytext.length;
3280									if (this.options.ranges) {
3281										this.yylloc.range = [this.offset, this.offset += this.yyleng];
3282									}
3283									this._more = false;
3284									this._input = this._input.slice(match[0].length);
3285									this.matched += match[0];
3286									token = this.performAction.call(this, this.yy, this, rules[index], this.conditionStack[this.conditionStack.length - 1]);
3287									if (this.done && this._input) this.done = false;
3288									if (token) return token;else return;
3289								}
3290								if (this._input === "") {
3291									return this.EOF;
3292								} else {
3293									return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { text: "", token: null, line: this.yylineno });
3294								}
3295							},
3296							lex: function lex() {
3297								var r = this.next();
3298								if (typeof r !== 'undefined') {
3299									return r;
3300								} else {
3301									return this.lex();
3302								}
3303							},
3304							begin: function begin(condition) {
3305								this.conditionStack.push(condition);
3306							},
3307							popState: function popState() {
3308								return this.conditionStack.pop();
3309							},
3310							_currentRules: function _currentRules() {
3311								return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
3312							},
3313							topState: function topState() {
3314								return this.conditionStack[this.conditionStack.length - 2];
3315							},
3316							pushState: function begin(condition) {
3317								this.begin(condition);
3318							} };
3319						lexer.options = {};
3320						lexer.performAction = function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {
3321
3322							function strip(start, end) {
3323								return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start);
3324							}
3325
3326							var YYSTATE = YY_START;
3327							switch ($avoiding_name_collisions) {
3328								case 0:
3329									if (yy_.yytext.slice(-2) === "\\\\") {
3330										strip(0, 1);
3331										this.begin("mu");
3332									} else if (yy_.yytext.slice(-1) === "\\") {
3333										strip(0, 1);
3334										this.begin("emu");
3335									} else {
3336										this.begin("mu");
3337									}
3338									if (yy_.yytext) return 15;
3339
3340									break;
3341								case 1:
3342									return 15;
3343									break;
3344								case 2:
3345									this.popState();
3346									return 15;
3347
3348									break;
3349								case 3:
3350									this.begin('raw');return 15;
3351									break;
3352								case 4:
3353									this.popState();
3354									// Should be using `this.topState()` below, but it currently
3355									// returns the second top instead of the first top. Opened an
3356									// issue about it at https://github.com/zaach/jison/issues/291
3357									if (this.conditionStack[this.conditionStack.length - 1] === 'raw') {
3358										return 15;
3359									} else {
3360										strip(5, 9);
3361										return 'END_RAW_BLOCK';
3362									}
3363
3364									break;
3365								case 5:
3366									return 15;
3367									break;
3368								case 6:
3369									this.popState();
3370									return 14;
3371
3372									break;
3373								case 7:
3374									return 65;
3375									break;
3376								case 8:
3377									return 68;
3378									break;
3379								case 9:
3380									return 19;
3381									break;
3382								case 10:
3383									this.popState();
3384									this.begin('raw');
3385									return 23;
3386
3387									break;
3388								case 11:
3389									return 55;
3390									break;
3391								case 12:
3392									return 60;
3393									break;
3394								case 13:
3395									return 29;
3396									break;
3397								case 14:
3398									return 47;
3399									break;
3400								case 15:
3401									this.popState();return 44;
3402									break;
3403								case 16:
3404									this.popState();return 44;
3405									break;
3406								case 17:
3407									return 34;
3408									break;
3409								case 18:
3410									return 39;
3411									break;
3412								case 19:
3413									return 51;
3414									break;
3415								case 20:
3416									return 48;
3417									break;
3418								case 21:
3419									this.unput(yy_.yytext);
3420									this.popState();
3421									this.begin('com');
3422
3423									break;
3424								case 22:
3425									this.popState();
3426									return 14;
3427
3428									break;
3429								case 23:
3430									return 48;
3431									break;
3432								case 24:
3433									return 73;
3434									break;
3435								case 25:
3436									return 72;
3437									break;
3438								case 26:
3439									return 72;
3440									break;
3441								case 27:
3442									return 87;
3443									break;
3444								case 28:
3445									// ignore whitespace
3446									break;
3447								case 29:
3448									this.popState();return 54;
3449									break;
3450								case 30:
3451									this.popState();return 33;
3452									break;
3453								case 31:
3454									yy_.yytext = strip(1, 2).replace(/\\"/g, '"');return 80;
3455									break;
3456								case 32:
3457									yy_.yytext = strip(1, 2).replace(/\\'/g, "'");return 80;
3458									break;
3459								case 33:
3460									return 85;
3461									break;
3462								case 34:
3463									return 82;
3464									break;
3465								case 35:
3466									return 82;
3467									break;
3468								case 36:
3469									return 83;
3470									break;
3471								case 37:
3472									return 84;
3473									break;
3474								case 38:
3475									return 81;
3476									break;
3477								case 39:
3478									return 75;
3479									break;
3480								case 40:
3481									return 77;
3482									break;
3483								case 41:
3484									return 72;
3485									break;
3486								case 42:
3487									yy_.yytext = yy_.yytext.replace(/\\([\\\]])/g, '$1');return 72;
3488									break;
3489								case 43:
3490									return 'INVALID';
3491									break;
3492								case 44:
3493									return 5;
3494									break;
3495							}
3496						};
3497						lexer.rules = [/^(?:[^\x00]*?(?=(\{\{)))/, /^(?:[^\x00]+)/, /^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/, /^(?:\{\{\{\{(?=[^\/]))/, /^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/, /^(?:[^\x00]+?(?=(\{\{\{\{)))/, /^(?:[\s\S]*?--(~)?\}\})/, /^(?:\()/, /^(?:\))/, /^(?:\{\{\{\{)/, /^(?:\}\}\}\})/, /^(?:\{\{(~)?>)/, /^(?:\{\{(~)?#>)/, /^(?:\{\{(~)?#\*?)/, /^(?:\{\{(~)?\/)/, /^(?:\{\{(~)?\^\s*(~)?\}\})/, /^(?:\{\{(~)?\s*else\s*(~)?\}\})/, /^(?:\{\{(~)?\^)/, /^(?:\{\{(~)?\s*else\b)/, /^(?:\{\{(~)?\{)/, /^(?:\{\{(~)?&)/, /^(?:\{\{(~)?!--)/, /^(?:\{\{(~)?![\s\S]*?\}\})/, /^(?:\{\{(~)?\*?)/, /^(?:=)/, /^(?:\.\.)/, /^(?:\.(?=([=~}\s\/.)|])))/, /^(?:[\/.])/, /^(?:\s+)/, /^(?:\}(~)?\}\})/, /^(?:(~)?\}\})/, /^(?:"(\\["]|[^"])*")/, /^(?:'(\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=([~}\s)])))/, /^(?:false(?=([~}\s)])))/, /^(?:undefined(?=([~}\s)])))/, /^(?:null(?=([~}\s)])))/, /^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/, /^(?:as\s+\|)/, /^(?:\|)/, /^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/, /^(?:\[(\\\]|[^\]])*\])/, /^(?:.)/, /^(?:$)/];
3498						lexer.conditions = { "mu": { "rules": [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, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44], "inclusive": false }, "emu": { "rules": [2], "inclusive": false }, "com": { "rules": [6], "inclusive": false }, "raw": { "rules": [3, 4, 5], "inclusive": false }, "INITIAL": { "rules": [0, 1, 44], "inclusive": true } };
3499						return lexer;
vendor: 14,092 bytes, lines 3500-3977
3500					})();
3501					parser.lexer = lexer;
3502					function Parser() {
3503						this.yy = {};
3504					}Parser.prototype = parser;parser.Parser = Parser;
3505					return new Parser();
3506				})();exports["default"] = handlebars;
3507				module.exports = exports["default"];
3508
3509				/***/ }),
3510			/* 86 */
3511			/***/ (function(module, exports, __webpack_require__) {
3512
3513				'use strict';
3514
3515				var _interopRequireDefault = __webpack_require__(1)['default'];
3516
3517				exports.__esModule = true;
3518
3519				var _visitor = __webpack_require__(87);
3520
3521				var _visitor2 = _interopRequireDefault(_visitor);
3522
3523				function WhitespaceControl() {
3524					var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
3525
3526					this.options = options;
3527				}
3528				WhitespaceControl.prototype = new _visitor2['default']();
3529
3530				WhitespaceControl.prototype.Program = function (program) {
3531					var doStandalone = !this.options.ignoreStandalone;
3532
3533					var isRoot = !this.isRootSeen;
3534					this.isRootSeen = true;
3535
3536					var body = program.body;
3537					for (var i = 0, l = body.length; i < l; i++) {
3538						var current = body[i],
3539							strip = this.accept(current);
3540
3541						if (!strip) {
3542							continue;
3543						}
3544
3545						var _isPrevWhitespace = isPrevWhitespace(body, i, isRoot),
3546							_isNextWhitespace = isNextWhitespace(body, i, isRoot),
3547							openStandalone = strip.openStandalone && _isPrevWhitespace,
3548							closeStandalone = strip.closeStandalone && _isNextWhitespace,
3549							inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;
3550
3551						if (strip.close) {
3552							omitRight(body, i, true);
3553						}
3554						if (strip.open) {
3555							omitLeft(body, i, true);
3556						}
3557
3558						if (doStandalone && inlineStandalone) {
3559							omitRight(body, i);
3560
3561							if (omitLeft(body, i)) {
3562								// If we are on a standalone node, save the indent info for partials
3563								if (current.type === 'PartialStatement') {
3564									// Pull out the whitespace from the final line
3565									current.indent = /([ \t]+$)/.exec(body[i - 1].original)[1];
3566								}
3567							}
3568						}
3569						if (doStandalone && openStandalone) {
3570							omitRight((current.program || current.inverse).body);
3571
3572							// Strip out the previous content node if it's whitespace only
3573							omitLeft(body, i);
3574						}
3575						if (doStandalone && closeStandalone) {
3576							// Always strip the next node
3577							omitRight(body, i);
3578
3579							omitLeft((current.inverse || current.program).body);
3580						}
3581					}
3582
3583					return program;
3584				};
3585
3586				WhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function (block) {
3587					this.accept(block.program);
3588					this.accept(block.inverse);
3589
3590					// Find the inverse program that is involed with whitespace stripping.
3591					var program = block.program || block.inverse,
3592						inverse = block.program && block.inverse,
3593						firstInverse = inverse,
3594						lastInverse = inverse;
3595
3596					if (inverse && inverse.chained) {
3597						firstInverse = inverse.body[0].program;
3598
3599						// Walk the inverse chain to find the last inverse that is actually in the chain.
3600						while (lastInverse.chained) {
3601							lastInverse = lastInverse.body[lastInverse.body.length - 1].program;
3602						}
3603					}
3604
3605					var strip = {
3606						open: block.openStrip.open,
3607						close: block.closeStrip.close,
3608
3609						// Determine the standalone candiacy. Basically flag our content as being possibly standalone
3610						// so our parent can determine if we actually are standalone
3611						openStandalone: isNextWhitespace(program.body),
3612						closeStandalone: isPrevWhitespace((firstInverse || program).body)
3613					};
3614
3615					if (block.openStrip.close) {
3616						omitRight(program.body, null, true);
3617					}
3618
3619					if (inverse) {
3620						var inverseStrip = block.inverseStrip;
3621
3622						if (inverseStrip.open) {
3623							omitLeft(program.body, null, true);
3624						}
3625
3626						if (inverseStrip.close) {
3627							omitRight(firstInverse.body, null, true);
3628						}
3629						if (block.closeStrip.open) {
3630							omitLeft(lastInverse.body, null, true);
3631						}
3632
3633						// Find standalone else statments
3634						if (!this.options.ignoreStandalone && isPrevWhitespace(program.body) && isNextWhitespace(firstInverse.body)) {
3635							omitLeft(program.body);
3636							omitRight(firstInverse.body);
3637						}
3638					} else if (block.closeStrip.open) {
3639						omitLeft(program.body, null, true);
3640					}
3641
3642					return strip;
3643				};
3644
3645				WhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function (mustache) {
3646					return mustache.strip;
3647				};
3648
3649				WhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function (node) {
3650					/* istanbul ignore next */
3651					var strip = node.strip || {};
3652					return {
3653						inlineStandalone: true,
3654						open: strip.open,
3655						close: strip.close
3656					};
3657				};
3658
3659				function isPrevWhitespace(body, i, isRoot) {
3660					if (i === undefined) {
3661						i = body.length;
3662					}
3663
3664					// Nodes that end with newlines are considered whitespace (but are special
3665					// cased for strip operations)
3666					var prev = body[i - 1],
3667						sibling = body[i - 2];
3668					if (!prev) {
3669						return isRoot;
3670					}
3671
3672					if (prev.type === 'ContentStatement') {
3673						return (sibling || !isRoot ? /\r?\n\s*?$/ : /(^|\r?\n)\s*?$/).test(prev.original);
3674					}
3675				}
3676				function isNextWhitespace(body, i, isRoot) {
3677					if (i === undefined) {
3678						i = -1;
3679					}
3680
3681					var next = body[i + 1],
3682						sibling = body[i + 2];
3683					if (!next) {
3684						return isRoot;
3685					}
3686
3687					if (next.type === 'ContentStatement') {
3688						return (sibling || !isRoot ? /^\s*?\r?\n/ : /^\s*?(\r?\n|$)/).test(next.original);
3689					}
3690				}
3691
3692				// Marks the node to the right of the position as omitted.
3693				// I.e. {{foo}}' ' will mark the ' ' node as omitted.
3694				//
3695				// If i is undefined, then the first child will be marked as such.
3696				//
3697				// If mulitple is truthy then all whitespace will be stripped out until non-whitespace
3698				// content is met.
3699				function omitRight(body, i, multiple) {
3700					var current = body[i == null ? 0 : i + 1];
3701					if (!current || current.type !== 'ContentStatement' || !multiple && current.rightStripped) {
3702						return;
3703					}
3704
3705					var original = current.value;
3706					current.value = current.value.replace(multiple ? /^\s+/ : /^[ \t]*\r?\n?/, '');
3707					current.rightStripped = current.value !== original;
3708				}
3709
3710				// Marks the node to the left of the position as omitted.
3711				// I.e. ' '{{foo}} will mark the ' ' node as omitted.
3712				//
3713				// If i is undefined then the last child will be marked as such.
3714				//
3715				// If mulitple is truthy then all whitespace will be stripped out until non-whitespace
3716				// content is met.
3717				function omitLeft(body, i, multiple) {
3718					var current = body[i == null ? body.length - 1 : i - 1];
3719					if (!current || current.type !== 'ContentStatement' || !multiple && current.leftStripped) {
3720						return;
3721					}
3722
3723					// We omit the last node if it's whitespace only and not preceded by a non-content node.
3724					var original = current.value;
3725					current.value = current.value.replace(multiple ? /\s+$/ : /[ \t]+$/, '');
3726					current.leftStripped = current.value !== original;
3727					return current.leftStripped;
3728				}
3729
3730				exports['default'] = WhitespaceControl;
3731				module.exports = exports['default'];
3732
3733				/***/ }),
3734			/* 87 */
3735			/***/ (function(module, exports, __webpack_require__) {
3736
3737				'use strict';
3738
3739				var _interopRequireDefault = __webpack_require__(1)['default'];
3740
3741				exports.__esModule = true;
3742
3743				var _exception = __webpack_require__(6);
3744
3745				var _exception2 = _interopRequireDefault(_exception);
3746
3747				function Visitor() {
3748					this.parents = [];
3749				}
3750
3751				Visitor.prototype = {
3752					constructor: Visitor,
3753					mutating: false,
3754
3755					// Visits a given value. If mutating, will replace the value if necessary.
3756					acceptKey: function acceptKey(node, name) {
3757						var value = this.accept(node[name]);
3758						if (this.mutating) {
3759							// Hacky sanity check: This may have a few false positives for type for the helper
3760							// methods but will generally do the right thing without a lot of overhead.
3761							if (value && !Visitor.prototype[value.type]) {
3762								throw new _exception2['default']('Unexpected node type "' + value.type + '" found when accepting ' + name + ' on ' + node.type);
3763							}
3764							node[name] = value;
3765						}
3766					},
3767
3768					// Performs an accept operation with added sanity check to ensure
3769					// required keys are not removed.
3770					acceptRequired: function acceptRequired(node, name) {
3771						this.acceptKey(node, name);
3772
3773						if (!node[name]) {
3774							throw new _exception2['default'](node.type + ' requires ' + name);
3775						}
3776					},
3777
3778					// Traverses a given array. If mutating, empty respnses will be removed
3779					// for child elements.
3780					acceptArray: function acceptArray(array) {
3781						for (var i = 0, l = array.length; i < l; i++) {
3782							this.acceptKey(array, i);
3783
3784							if (!array[i]) {
3785								array.splice(i, 1);
3786								i--;
3787								l--;
3788							}
3789						}
3790					},
3791
3792					accept: function accept(object) {
3793						if (!object) {
3794							return;
3795						}
3796
3797						/* istanbul ignore next: Sanity code */
3798						if (!this[object.type]) {
3799							throw new _exception2['default']('Unknown type: ' + object.type, object);
3800						}
3801
3802						if (this.current) {
3803							this.parents.unshift(this.current);
3804						}
3805						this.current = object;
3806
3807						var ret = this[object.type](object);
3808
3809						this.current = this.parents.shift();
3810
3811						if (!this.mutating || ret) {
3812							return ret;
3813						} else if (ret !== false) {
3814							return object;
3815						}
3816					},
3817
3818					Program: function Program(program) {
3819						this.acceptArray(program.body);
3820					},
3821
3822					MustacheStatement: visitSubExpression,
3823					Decorator: visitSubExpression,
3824
3825					BlockStatement: visitBlock,
3826					DecoratorBlock: visitBlock,
3827
3828					PartialStatement: visitPartial,
3829					PartialBlockStatement: function PartialBlockStatement(partial) {
3830						visitPartial.call(this, partial);
3831
3832						this.acceptKey(partial, 'program');
3833					},
3834
3835					ContentStatement: function ContentStatement() /* content */{},
3836					CommentStatement: function CommentStatement() /* comment */{},
3837
3838					SubExpression: visitSubExpression,
3839
3840					PathExpression: function PathExpression() /* path */{},
3841
3842					StringLiteral: function StringLiteral() /* string */{},
3843					NumberLiteral: function NumberLiteral() /* number */{},
3844					BooleanLiteral: function BooleanLiteral() /* bool */{},
3845					UndefinedLiteral: function UndefinedLiteral() /* literal */{},
3846					NullLiteral: function NullLiteral() /* literal */{},
3847
3848					Hash: function Hash(hash) {
3849						this.acceptArray(hash.pairs);
3850					},
3851					HashPair: function HashPair(pair) {
3852						this.acceptRequired(pair, 'value');
3853					}
3854				};
3855
3856				function visitSubExpression(mustache) {
3857					this.acceptRequired(mustache, 'path');
3858					this.acceptArray(mustache.params);
3859					this.acceptKey(mustache, 'hash');
3860				}
3861				function visitBlock(block) {
3862					visitSubExpression.call(this, block);
3863
3864					this.acceptKey(block, 'program');
3865					this.acceptKey(block, 'inverse');
3866				}
3867				function visitPartial(partial) {
3868					this.acceptRequired(partial, 'name');
3869					this.acceptArray(partial.params);
3870					this.acceptKey(partial, 'hash');
3871				}
3872
3873				exports['default'] = Visitor;
3874				module.exports = exports['default'];
3875
3876				/***/ }),
3877			/* 88 */
3878			/***/ (function(module, exports, __webpack_require__) {
3879
3880				'use strict';
3881
3882				var _interopRequireDefault = __webpack_require__(1)['default'];
3883
3884				exports.__esModule = true;
3885				exports.SourceLocation = SourceLocation;
3886				exports.id = id;
3887				exports.stripFlags = stripFlags;
3888				exports.stripComment = stripComment;
3889				exports.preparePath = preparePath;
3890				exports.prepareMustache = prepareMustache;
3891				exports.prepareRawBlock = prepareRawBlock;
3892				exports.prepareBlock = prepareBlock;
3893				exports.prepareProgram = prepareProgram;
3894				exports.preparePartialBlock = preparePartialBlock;
3895
3896				var _exception = __webpack_require__(6);
3897
3898				var _exception2 = _interopRequireDefault(_exception);
3899
3900				function validateClose(open, close) {
3901					close = close.path ? close.path.original : close;
3902
3903					if (open.path.original !== close) {
3904						var errorNode = { loc: open.path.loc };
3905
3906						throw new _exception2['default'](open.path.original + " doesn't match " + close, errorNode);
3907					}
3908				}
3909
3910				function SourceLocation(source, locInfo) {
3911					this.source = source;
3912					this.start = {
3913						line: locInfo.first_line,
3914						column: locInfo.first_column
3915					};
3916					this.end = {
3917						line: locInfo.last_line,
3918						column: locInfo.last_column
3919					};
3920				}
3921
3922				function id(token) {
3923					if (/^\[.*\]$/.test(token)) {
3924						return token.substring(1, token.length - 1);
3925					} else {
3926						return token;
3927					}
3928				}
3929
3930				function stripFlags(open, close) {
3931					return {
3932						open: open.charAt(2) === '~',
3933						close: close.charAt(close.length - 3) === '~'
3934					};
3935				}
3936
3937				function stripComment(comment) {
3938					return comment.replace(/^\{\{~?!-?-?/, '').replace(/-?-?~?\}\}$/, '');
3939				}
3940
3941				function preparePath(data, parts, loc) {
3942					loc = this.locInfo(loc);
3943
3944					var original = data ? '@' : '',
3945						dig = [],
3946						depth = 0;
3947
3948					for (var i = 0, l = parts.length; i < l; i++) {
3949						var part = parts[i].part,
3950
3951							// If we have [] syntax then we do not treat path references as operators,
3952							// i.e. foo.[this] resolves to approximately context.foo['this']
3953							isLiteral = parts[i].original !== part;
3954						original += (parts[i].separator || '') + part;
3955
3956						if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {
3957							if (dig.length > 0) {
3958								throw new _exception2['default']('Invalid path: ' + original, { loc: loc });
3959							} else if (part === '..') {
3960								depth++;
3961							}
3962						} else {
3963							dig.push(part);
3964						}
3965					}
3966
3967					return {
3968						type: 'PathExpression',
3969						data: data,
3970						depth: depth,
3971						parts: dig,
3972						original: original,
3973						loc: loc
3974					};
3975				}
3976
3977				function prepareMustache(path, params, hash, open, strip, locInfo) {
vendor: 1,121 bytes, lines 3978-4022
3978					// Must use charAt to support IE pre-10
3979					var escapeFlag = open.charAt(3) || open.charAt(2),
3980						escaped = escapeFlag !== '{' && escapeFlag !== '&';
3981
3982					var decorator = /\*/.test(open);
3983					return {
3984						type: decorator ? 'Decorator' : 'MustacheStatement',
3985						path: path,
3986						params: params,
3987						hash: hash,
3988						escaped: escaped,
3989						strip: strip,
3990						loc: this.locInfo(locInfo)
3991					};
3992				}
3993
3994				function prepareRawBlock(openRawBlock, contents, close, locInfo) {
3995					validateClose(openRawBlock, close);
3996
3997					locInfo = this.locInfo(locInfo);
3998					var program = {
3999						type: 'Program',
4000						body: contents,
4001						strip: {},
4002						loc: locInfo
4003					};
4004
4005					return {
4006						type: 'BlockStatement',
4007						path: openRawBlock.path,
4008						params: openRawBlock.params,
4009						hash: openRawBlock.hash,
4010						program: program,
4011						openStrip: {},
4012						inverseStrip: {},
4013						closeStrip: {},
4014						loc: locInfo
4015					};
4016				}
4017
4018				function prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) {
4019					if (close && close.path) {
4020						validateClose(openBlock, close);
4021					}
4022
vendor: 5,645 bytes, lines 4023-4240
4023					var decorator = /\*/.test(openBlock.open);
4024
4025					program.blockParams = openBlock.blockParams;
4026
4027					var inverse = undefined,
4028						inverseStrip = undefined;
4029
4030					if (inverseAndProgram) {
4031						if (decorator) {
4032							throw new _exception2['default']('Unexpected inverse block on decorator', inverseAndProgram);
4033						}
4034
4035						if (inverseAndProgram.chain) {
4036							inverseAndProgram.program.body[0].closeStrip = close.strip;
4037						}
4038
4039						inverseStrip = inverseAndProgram.strip;
4040						inverse = inverseAndProgram.program;
4041					}
4042
4043					if (inverted) {
4044						inverted = inverse;
4045						inverse = program;
4046						program = inverted;
4047					}
4048
4049					return {
4050						type: decorator ? 'DecoratorBlock' : 'BlockStatement',
4051						path: openBlock.path,
4052						params: openBlock.params,
4053						hash: openBlock.hash,
4054						program: program,
4055						inverse: inverse,
4056						openStrip: openBlock.strip,
4057						inverseStrip: inverseStrip,
4058						closeStrip: close && close.strip,
4059						loc: this.locInfo(locInfo)
4060					};
4061				}
4062
4063				function prepareProgram(statements, loc) {
4064					if (!loc && statements.length) {
4065						var firstLoc = statements[0].loc,
4066							lastLoc = statements[statements.length - 1].loc;
4067
4068						/* istanbul ignore else */
4069						if (firstLoc && lastLoc) {
4070							loc = {
4071								source: firstLoc.source,
4072								start: {
4073									line: firstLoc.start.line,
4074									column: firstLoc.start.column
4075								},
4076								end: {
4077									line: lastLoc.end.line,
4078									column: lastLoc.end.column
4079								}
4080							};
4081						}
4082					}
4083
4084					return {
4085						type: 'Program',
4086						body: statements,
4087						strip: {},
4088						loc: loc
4089					};
4090				}
4091
4092				function preparePartialBlock(open, program, close, locInfo) {
4093					validateClose(open, close);
4094
4095					return {
4096						type: 'PartialBlockStatement',
4097						name: open.path,
4098						params: open.params,
4099						hash: open.hash,
4100						program: program,
4101						openStrip: open.strip,
4102						closeStrip: close && close.strip,
4103						loc: this.locInfo(locInfo)
4104					};
4105				}
4106
4107				/***/ }),
4108			/* 89 */
4109			/***/ (function(module, exports, __webpack_require__) {
4110
4111				/* eslint-disable new-cap */
4112
4113				'use strict';
4114
4115				var _Object$create = __webpack_require__(74)['default'];
4116
4117				var _interopRequireDefault = __webpack_require__(1)['default'];
4118
4119				exports.__esModule = true;
4120				exports.Compiler = Compiler;
4121				exports.precompile = precompile;
4122				exports.compile = compile;
4123
4124				var _exception = __webpack_require__(6);
4125
4126				var _exception2 = _interopRequireDefault(_exception);
4127
4128				var _utils = __webpack_require__(5);
4129
4130				var _ast = __webpack_require__(83);
4131
4132				var _ast2 = _interopRequireDefault(_ast);
4133
4134				var slice = [].slice;
4135
4136				function Compiler() {}
4137
4138				// the foundHelper register will disambiguate helper lookup from finding a
4139				// function in a context. This is necessary for mustache compatibility, which
4140				// requires that context functions in blocks are evaluated by blockHelperMissing,
4141				// and then proceed as if the resulting value was provided to blockHelperMissing.
4142
4143				Compiler.prototype = {
4144					compiler: Compiler,
4145
4146					equals: function equals(other) {
4147						var len = this.opcodes.length;
4148						if (other.opcodes.length !== len) {
4149							return false;
4150						}
4151
4152						for (var i = 0; i < len; i++) {
4153							var opcode = this.opcodes[i],
4154								otherOpcode = other.opcodes[i];
4155							if (opcode.opcode !== otherOpcode.opcode || !argEquals(opcode.args, otherOpcode.args)) {
4156								return false;
4157							}
4158						}
4159
4160						// We know that length is the same between the two arrays because they are directly tied
4161						// to the opcode behavior above.
4162						len = this.children.length;
4163						for (var i = 0; i < len; i++) {
4164							if (!this.children[i].equals(other.children[i])) {
4165								return false;
4166							}
4167						}
4168
4169						return true;
4170					},
4171
4172					guid: 0,
4173
4174					compile: function compile(program, options) {
4175						this.sourceNode = [];
4176						this.opcodes = [];
4177						this.children = [];
4178						this.options = options;
4179						this.stringParams = options.stringParams;
4180						this.trackIds = options.trackIds;
4181
4182						options.blockParams = options.blockParams || [];
4183
4184						options.knownHelpers = _utils.extend(_Object$create(null), {
4185							helperMissing: true,
4186							blockHelperMissing: true,
4187							each: true,
4188							'if': true,
4189							unless: true,
4190							'with': true,
4191							log: true,
4192							lookup: true
4193						}, options.knownHelpers);
4194
4195						return this.accept(program);
4196					},
4197
4198					compileProgram: function compileProgram(program) {
4199						var childCompiler = new this.compiler(),
4200							// eslint-disable-line new-cap
4201							result = childCompiler.compile(program, this.options),
4202							guid = this.guid++;
4203
4204						this.usePartial = this.usePartial || result.usePartial;
4205
4206						this.children[guid] = result;
4207						this.useDepths = this.useDepths || result.useDepths;
4208
4209						return guid;
4210					},
4211
4212					accept: function accept(node) {
4213						/* istanbul ignore next: Sanity code */
4214						if (!this[node.type]) {
4215							throw new _exception2['default']('Unknown type: ' + node.type, node);
4216						}
4217
4218						this.sourceNode.unshift(node);
4219						var ret = this[node.type](node);
4220						this.sourceNode.shift();
4221						return ret;
4222					},
4223
4224					Program: function Program(program) {
4225						this.options.blockParams.unshift(program.blockParams);
4226
4227						var body = program.body,
4228							bodyLength = body.length;
4229						for (var i = 0; i < bodyLength; i++) {
4230							this.accept(body[i]);
4231						}
4232
4233						this.options.blockParams.shift();
4234
4235						this.isSimple = bodyLength === 1;
4236						this.blockParams = program.blockParams ? program.blockParams.length : 0;
4237
4238						return this;
4239					},
4240
vendor: 12,687 bytes, lines 4241-4655
4241					BlockStatement: function BlockStatement(block) {
4242						transformLiteralToPath(block);
4243
4244						var program = block.program,
4245							inverse = block.inverse;
4246
4247						program = program && this.compileProgram(program);
4248						inverse = inverse && this.compileProgram(inverse);
4249
4250						var type = this.classifySexpr(block);
4251
4252						if (type === 'helper') {
4253							this.helperSexpr(block, program, inverse);
4254						} else if (type === 'simple') {
4255							this.simpleSexpr(block);
4256
4257							// now that the simple mustache is resolved, we need to
4258							// evaluate it by executing `blockHelperMissing`
4259							this.opcode('pushProgram', program);
4260							this.opcode('pushProgram', inverse);
4261							this.opcode('emptyHash');
4262							this.opcode('blockValue', block.path.original);
4263						} else {
4264							this.ambiguousSexpr(block, program, inverse);
4265
4266							// now that the simple mustache is resolved, we need to
4267							// evaluate it by executing `blockHelperMissing`
4268							this.opcode('pushProgram', program);
4269							this.opcode('pushProgram', inverse);
4270							this.opcode('emptyHash');
4271							this.opcode('ambiguousBlockValue');
4272						}
4273
4274						this.opcode('append');
4275					},
4276
4277					DecoratorBlock: function DecoratorBlock(decorator) {
4278						var program = decorator.program && this.compileProgram(decorator.program);
4279						var params = this.setupFullMustacheParams(decorator, program, undefined),
4280							path = decorator.path;
4281
4282						this.useDecorators = true;
4283						this.opcode('registerDecorator', params.length, path.original);
4284					},
4285
4286					PartialStatement: function PartialStatement(partial) {
4287						this.usePartial = true;
4288
4289						var program = partial.program;
4290						if (program) {
4291							program = this.compileProgram(partial.program);
4292						}
4293
4294						var params = partial.params;
4295						if (params.length > 1) {
4296							throw new _exception2['default']('Unsupported number of partial arguments: ' + params.length, partial);
4297						} else if (!params.length) {
4298							if (this.options.explicitPartialContext) {
4299								this.opcode('pushLiteral', 'undefined');
4300							} else {
4301								params.push({ type: 'PathExpression', parts: [], depth: 0 });
4302							}
4303						}
4304
4305						var partialName = partial.name.original,
4306							isDynamic = partial.name.type === 'SubExpression';
4307						if (isDynamic) {
4308							this.accept(partial.name);
4309						}
4310
4311						this.setupFullMustacheParams(partial, program, undefined, true);
4312
4313						var indent = partial.indent || '';
4314						if (this.options.preventIndent && indent) {
4315							this.opcode('appendContent', indent);
4316							indent = '';
4317						}
4318
4319						this.opcode('invokePartial', isDynamic, partialName, indent);
4320						this.opcode('append');
4321					},
4322					PartialBlockStatement: function PartialBlockStatement(partialBlock) {
4323						this.PartialStatement(partialBlock);
4324					},
4325
4326					MustacheStatement: function MustacheStatement(mustache) {
4327						this.SubExpression(mustache);
4328
4329						if (mustache.escaped && !this.options.noEscape) {
4330							this.opcode('appendEscaped');
4331						} else {
4332							this.opcode('append');
4333						}
4334					},
4335					Decorator: function Decorator(decorator) {
4336						this.DecoratorBlock(decorator);
4337					},
4338
4339					ContentStatement: function ContentStatement(content) {
4340						if (content.value) {
4341							this.opcode('appendContent', content.value);
4342						}
4343					},
4344
4345					CommentStatement: function CommentStatement() {},
4346
4347					SubExpression: function SubExpression(sexpr) {
4348						transformLiteralToPath(sexpr);
4349						var type = this.classifySexpr(sexpr);
4350
4351						if (type === 'simple') {
4352							this.simpleSexpr(sexpr);
4353						} else if (type === 'helper') {
4354							this.helperSexpr(sexpr);
4355						} else {
4356							this.ambiguousSexpr(sexpr);
4357						}
4358					},
4359					ambiguousSexpr: function ambiguousSexpr(sexpr, program, inverse) {
4360						var path = sexpr.path,
4361							name = path.parts[0],
4362							isBlock = program != null || inverse != null;
4363
4364						this.opcode('getContext', path.depth);
4365
4366						this.opcode('pushProgram', program);
4367						this.opcode('pushProgram', inverse);
4368
4369						path.strict = true;
4370						this.accept(path);
4371
4372						this.opcode('invokeAmbiguous', name, isBlock);
4373					},
4374
4375					simpleSexpr: function simpleSexpr(sexpr) {
4376						var path = sexpr.path;
4377						path.strict = true;
4378						this.accept(path);
4379						this.opcode('resolvePossibleLambda');
4380					},
4381
4382					helperSexpr: function helperSexpr(sexpr, program, inverse) {
4383						var params = this.setupFullMustacheParams(sexpr, program, inverse),
4384							path = sexpr.path,
4385							name = path.parts[0];
4386
4387						if (this.options.knownHelpers[name]) {
4388							this.opcode('invokeKnownHelper', params.length, name);
4389						} else if (this.options.knownHelpersOnly) {
4390							throw new _exception2['default']('You specified knownHelpersOnly, but used the unknown helper ' + name, sexpr);
4391						} else {
4392							path.strict = true;
4393							path.falsy = true;
4394
4395							this.accept(path);
4396							this.opcode('invokeHelper', params.length, path.original, _ast2['default'].helpers.simpleId(path));
4397						}
4398					},
4399
4400					PathExpression: function PathExpression(path) {
4401						this.addDepth(path.depth);
4402						this.opcode('getContext', path.depth);
4403
4404						var name = path.parts[0],
4405							scoped = _ast2['default'].helpers.scopedId(path),
4406							blockParamId = !path.depth && !scoped && this.blockParamIndex(name);
4407
4408						if (blockParamId) {
4409							this.opcode('lookupBlockParam', blockParamId, path.parts);
4410						} else if (!name) {
4411							// Context reference, i.e. `{{foo .}}` or `{{foo ..}}`
4412							this.opcode('pushContext');
4413						} else if (path.data) {
4414							this.options.data = true;
4415							this.opcode('lookupData', path.depth, path.parts, path.strict);
4416						} else {
4417							this.opcode('lookupOnContext', path.parts, path.falsy, path.strict, scoped);
4418						}
4419					},
4420
4421					StringLiteral: function StringLiteral(string) {
4422						this.opcode('pushString', string.value);
4423					},
4424
4425					NumberLiteral: function NumberLiteral(number) {
4426						this.opcode('pushLiteral', number.value);
4427					},
4428
4429					BooleanLiteral: function BooleanLiteral(bool) {
4430						this.opcode('pushLiteral', bool.value);
4431					},
4432
4433					UndefinedLiteral: function UndefinedLiteral() {
4434						this.opcode('pushLiteral', 'undefined');
4435					},
4436
4437					NullLiteral: function NullLiteral() {
4438						this.opcode('pushLiteral', 'null');
4439					},
4440
4441					Hash: function Hash(hash) {
4442						var pairs = hash.pairs,
4443							i = 0,
4444							l = pairs.length;
4445
4446						this.opcode('pushHash');
4447
4448						for (; i < l; i++) {
4449							this.pushParam(pairs[i].value);
4450						}
4451						while (i--) {
4452							this.opcode('assignToHash', pairs[i].key);
4453						}
4454						this.opcode('popHash');
4455					},
4456
4457					// HELPERS
4458					opcode: function opcode(name) {
4459						this.opcodes.push({
4460							opcode: name,
4461							args: slice.call(arguments, 1),
4462							loc: this.sourceNode[0].loc
4463						});
4464					},
4465
4466					addDepth: function addDepth(depth) {
4467						if (!depth) {
4468							return;
4469						}
4470
4471						this.useDepths = true;
4472					},
4473
4474					classifySexpr: function classifySexpr(sexpr) {
4475						var isSimple = _ast2['default'].helpers.simpleId(sexpr.path);
4476
4477						var isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]);
4478
4479						// a mustache is an eligible helper if:
4480						// * its id is simple (a single part, not `this` or `..`)
4481						var isHelper = !isBlockParam && _ast2['default'].helpers.helperExpression(sexpr);
4482
4483						// if a mustache is an eligible helper but not a definite
4484						// helper, it is ambiguous, and will be resolved in a later
4485						// pass or at runtime.
4486						var isEligible = !isBlockParam && (isHelper || isSimple);
4487
4488						// if ambiguous, we can possibly resolve the ambiguity now
4489						// An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.
4490						if (isEligible && !isHelper) {
4491							var _name = sexpr.path.parts[0],
4492								options = this.options;
4493							if (options.knownHelpers[_name]) {
4494								isHelper = true;
4495							} else if (options.knownHelpersOnly) {
4496								isEligible = false;
4497							}
4498						}
4499
4500						if (isHelper) {
4501							return 'helper';
4502						} else if (isEligible) {
4503							return 'ambiguous';
4504						} else {
4505							return 'simple';
4506						}
4507					},
4508
4509					pushParams: function pushParams(params) {
4510						for (var i = 0, l = params.length; i < l; i++) {
4511							this.pushParam(params[i]);
4512						}
4513					},
4514
4515					pushParam: function pushParam(val) {
4516						var value = val.value != null ? val.value : val.original || '';
4517
4518						if (this.stringParams) {
4519							if (value.replace) {
4520								value = value.replace(/^(\.?\.\/)*/g, '').replace(/\//g, '.');
4521							}
4522
4523							if (val.depth) {
4524								this.addDepth(val.depth);
4525							}
4526							this.opcode('getContext', val.depth || 0);
4527							this.opcode('pushStringParam', value, val.type);
4528
4529							if (val.type === 'SubExpression') {
4530								// SubExpressions get evaluated and passed in
4531								// in string params mode.
4532								this.accept(val);
4533							}
4534						} else {
4535							if (this.trackIds) {
4536								var blockParamIndex = undefined;
4537								if (val.parts && !_ast2['default'].helpers.scopedId(val) && !val.depth) {
4538									blockParamIndex = this.blockParamIndex(val.parts[0]);
4539								}
4540								if (blockParamIndex) {
4541									var blockParamChild = val.parts.slice(1).join('.');
4542									this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild);
4543								} else {
4544									value = val.original || value;
4545									if (value.replace) {
4546										value = value.replace(/^this(?:\.|$)/, '').replace(/^\.\//, '').replace(/^\.$/, '');
4547									}
4548
4549									this.opcode('pushId', val.type, value);
4550								}
4551							}
4552							this.accept(val);
4553						}
4554					},
4555
4556					setupFullMustacheParams: function setupFullMustacheParams(sexpr, program, inverse, omitEmpty) {
4557						var params = sexpr.params;
4558						this.pushParams(params);
4559
4560						this.opcode('pushProgram', program);
4561						this.opcode('pushProgram', inverse);
4562
4563						if (sexpr.hash) {
4564							this.accept(sexpr.hash);
4565						} else {
4566							this.opcode('emptyHash', omitEmpty);
4567						}
4568
4569						return params;
4570					},
4571
4572					blockParamIndex: function blockParamIndex(name) {
4573						for (var depth = 0, len = this.options.blockParams.length; depth < len; depth++) {
4574							var blockParams = this.options.blockParams[depth],
4575								param = blockParams && _utils.indexOf(blockParams, name);
4576							if (blockParams && param >= 0) {
4577								return [depth, param];
4578							}
4579						}
4580					}
4581				};
4582
4583				function precompile(input, options, env) {
4584					if (input == null || typeof input !== 'string' && input.type !== 'Program') {
4585						throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' + input);
4586					}
4587
4588					options = options || {};
4589					if (!('data' in options)) {
4590						options.data = true;
4591					}
4592					if (options.compat) {
4593						options.useDepths = true;
4594					}
4595
4596					var ast = env.parse(input, options),
4597						environment = new env.Compiler().compile(ast, options);
4598					return new env.JavaScriptCompiler().compile(environment, options);
4599				}
4600
4601				function compile(input, options, env) {
4602					if (options === undefined) options = {};
4603
4604					if (input == null || typeof input !== 'string' && input.type !== 'Program') {
4605						throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.compile. You passed ' + input);
4606					}
4607
4608					options = _utils.extend({}, options);
4609					if (!('data' in options)) {
4610						options.data = true;
4611					}
4612					if (options.compat) {
4613						options.useDepths = true;
4614					}
4615
4616					var compiled = undefined;
4617
4618					function compileInput() {
4619						var ast = env.parse(input, options),
4620							environment = new env.Compiler().compile(ast, options),
4621							templateSpec = new env.JavaScriptCompiler().compile(environment, options, undefined, true);
4622						return env.template(templateSpec);
4623					}
4624
4625					// Template is only compiled on first use and cached after that point.
4626					function ret(context, execOptions) {
4627						if (!compiled) {
4628							compiled = compileInput();
4629						}
4630						return compiled.call(this, context, execOptions);
4631					}
4632					ret._setup = function (setupOptions) {
4633						if (!compiled) {
4634							compiled = compileInput();
4635						}
4636						return compiled._setup(setupOptions);
4637					};
4638					ret._child = function (i, data, blockParams, depths) {
4639						if (!compiled) {
4640							compiled = compileInput();
4641						}
4642						return compiled._child(i, data, blockParams, depths);
4643					};
4644					return ret;
4645				}
4646
4647				function argEquals(a, b) {
4648					if (a === b) {
4649						return true;
4650					}
4651
4652					if (_utils.isArray(a) && _utils.isArray(b) && a.length === b.length) {
4653						for (var i = 0; i < a.length; i++) {
4654							if (!argEquals(a[i], b[i])) {
4655								return false;
vendor: 7,892 bytes, lines 4656-4914
4656							}
4657						}
4658						return true;
4659					}
4660				}
4661
4662				function transformLiteralToPath(sexpr) {
4663					if (!sexpr.path.parts) {
4664						var literal = sexpr.path;
4665						// Casting to string here to make false and 0 literal values play nicely with the rest
4666						// of the system.
4667						sexpr.path = {
4668							type: 'PathExpression',
4669							data: false,
4670							depth: 0,
4671							parts: [literal.original + ''],
4672							original: literal.original + '',
4673							loc: literal.loc
4674						};
4675					}
4676				}
4677
4678				/***/ }),
4679			/* 90 */
4680			/***/ (function(module, exports, __webpack_require__) {
4681
4682				'use strict';
4683
4684				var _Object$keys = __webpack_require__(60)['default'];
4685
4686				var _interopRequireDefault = __webpack_require__(1)['default'];
4687
4688				exports.__esModule = true;
4689
4690				var _base = __webpack_require__(4);
4691
4692				var _exception = __webpack_require__(6);
4693
4694				var _exception2 = _interopRequireDefault(_exception);
4695
4696				var _utils = __webpack_require__(5);
4697
4698				var _codeGen = __webpack_require__(91);
4699
4700				var _codeGen2 = _interopRequireDefault(_codeGen);
4701
4702				function Literal(value) {
4703					this.value = value;
4704				}
4705
4706				function JavaScriptCompiler() {}
4707
4708				JavaScriptCompiler.prototype = {
4709					// PUBLIC API: You can override these methods in a subclass to provide
4710					// alternative compiled forms for name lookup and buffering semantics
4711					nameLookup: function nameLookup(parent, name /*,  type */) {
4712						return this.internalNameLookup(parent, name);
4713					},
4714					depthedLookup: function depthedLookup(name) {
4715						return [this.aliasable('container.lookup'), '(depths, ', JSON.stringify(name), ')'];
4716					},
4717
4718					compilerInfo: function compilerInfo() {
4719						var revision = _base.COMPILER_REVISION,
4720							versions = _base.REVISION_CHANGES[revision];
4721						return [revision, versions];
4722					},
4723
4724					appendToBuffer: function appendToBuffer(source, location, explicit) {
4725						// Force a source as this simplifies the merge logic.
4726						if (!_utils.isArray(source)) {
4727							source = [source];
4728						}
4729						source = this.source.wrap(source, location);
4730
4731						if (this.environment.isSimple) {
4732							return ['return ', source, ';'];
4733						} else if (explicit) {
4734							// This is a case where the buffer operation occurs as a child of another
4735							// construct, generally braces. We have to explicitly output these buffer
4736							// operations to ensure that the emitted code goes in the correct location.
4737							return ['buffer += ', source, ';'];
4738						} else {
4739							source.appendToBuffer = true;
4740							return source;
4741						}
4742					},
4743
4744					initializeBuffer: function initializeBuffer() {
4745						return this.quotedString('');
4746					},
4747					// END PUBLIC API
4748					internalNameLookup: function internalNameLookup(parent, name) {
4749						this.lookupPropertyFunctionIsUsed = true;
4750						return ['lookupProperty(', parent, ',', JSON.stringify(name), ')'];
4751					},
4752
4753					lookupPropertyFunctionIsUsed: false,
4754
4755					compile: function compile(environment, options, context, asObject) {
4756						this.environment = environment;
4757						this.options = options;
4758						this.stringParams = this.options.stringParams;
4759						this.trackIds = this.options.trackIds;
4760						this.precompile = !asObject;
4761
4762						this.name = this.environment.name;
4763						this.isChild = !!context;
4764						this.context = context || {
4765							decorators: [],
4766							programs: [],
4767							environments: []
4768						};
4769
4770						this.preamble();
4771
4772						this.stackSlot = 0;
4773						this.stackVars = [];
4774						this.aliases = {};
4775						this.registers = { list: [] };
4776						this.hashes = [];
4777						this.compileStack = [];
4778						this.inlineStack = [];
4779						this.blockParams = [];
4780
4781						this.compileChildren(environment, options);
4782
4783						this.useDepths = this.useDepths || environment.useDepths || environment.useDecorators || this.options.compat;
4784						this.useBlockParams = this.useBlockParams || environment.useBlockParams;
4785
4786						var opcodes = environment.opcodes,
4787							opcode = undefined,
4788							firstLoc = undefined,
4789							i = undefined,
4790							l = undefined;
4791
4792						for (i = 0, l = opcodes.length; i < l; i++) {
4793							opcode = opcodes[i];
4794
4795							this.source.currentLocation = opcode.loc;
4796							firstLoc = firstLoc || opcode.loc;
4797							this[opcode.opcode].apply(this, opcode.args);
4798						}
4799
4800						// Flush any trailing content that might be pending.
4801						this.source.currentLocation = firstLoc;
4802						this.pushSource('');
4803
4804						/* istanbul ignore next */
4805						if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {
4806							throw new _exception2['default']('Compile completed with content left on stack');
4807						}
4808
4809						if (!this.decorators.isEmpty()) {
4810							this.useDecorators = true;
4811
4812							this.decorators.prepend(['var decorators = container.decorators, ', this.lookupPropertyFunctionVarDeclaration(), ';\n']);
4813							this.decorators.push('return fn;');
4814
4815							if (asObject) {
4816								this.decorators = Function.apply(this, ['fn', 'props', 'container', 'depth0', 'data', 'blockParams', 'depths', this.decorators.merge()]);
4817							} else {
4818								this.decorators.prepend('function(fn, props, container, depth0, data, blockParams, depths) {\n');
4819								this.decorators.push('}\n');
4820								this.decorators = this.decorators.merge();
4821							}
4822						} else {
4823							this.decorators = undefined;
4824						}
4825
4826						var fn = this.createFunctionContext(asObject);
4827						if (!this.isChild) {
4828							var ret = {
4829								compiler: this.compilerInfo(),
4830								main: fn
4831							};
4832
4833							if (this.decorators) {
4834								ret.main_d = this.decorators; // eslint-disable-line camelcase
4835								ret.useDecorators = true;
4836							}
4837
4838							var _context = this.context;
4839							var programs = _context.programs;
4840							var decorators = _context.decorators;
4841
4842							for (i = 0, l = programs.length; i < l; i++) {
4843								ret[i] = programs[i];
4844								if (decorators[i]) {
4845									ret[i + '_d'] = decorators[i];
4846									ret.useDecorators = true;
4847								}
4848							}
4849
4850							if (this.environment.usePartial) {
4851								ret.usePartial = true;
4852							}
4853							if (this.options.data) {
4854								ret.useData = true;
4855							}
4856							if (this.useDepths) {
4857								ret.useDepths = true;
4858							}
4859							if (this.useBlockParams) {
4860								ret.useBlockParams = true;
4861							}
4862							if (this.options.compat) {
4863								ret.compat = true;
4864							}
4865
4866							if (!asObject) {
4867								ret.compiler = JSON.stringify(ret.compiler);
4868
4869								this.source.currentLocation = { start: { line: 1, column: 0 } };
4870								ret = this.objectLiteral(ret);
4871
4872								if (options.srcName) {
4873									ret = ret.toStringWithSourceMap({ file: options.destName });
4874									ret.map = ret.map && ret.map.toString();
4875								} else {
4876									ret = ret.toString();
4877								}
4878							} else {
4879								ret.compilerOptions = this.options;
4880							}
4881
4882							return ret;
4883						} else {
4884							return fn;
4885						}
4886					},
4887
4888					preamble: function preamble() {
4889						// track the last context pushed into place to allow skipping the
4890						// getContext opcode when it would be a noop
4891						this.lastContext = 0;
4892						this.source = new _codeGen2['default'](this.options.srcName);
4893						this.decorators = new _codeGen2['default'](this.options.srcName);
4894					},
4895
4896					createFunctionContext: function createFunctionContext(asObject) {
4897						// istanbul ignore next
4898
4899						var _this = this;
4900
4901						var varDeclarations = '';
4902
4903						var locals = this.stackVars.concat(this.registers.list);
4904						if (locals.length > 0) {
4905							varDeclarations += ', ' + locals.join(', ');
4906						}
4907
4908						// Generate minimizer alias mappings
4909						//
4910						// When using true SourceNodes, this will update all references to the given alias
4911						// as the source nodes are reused in situ. For the non-source node compilation mode,
4912						// aliases will not be used, but this case is already being run on the client and
4913						// we aren't concern about minimizing the template size.
4914						var aliasCount = 0;
vendor: 29,096 bytes, lines 4915-5823
4915						_Object$keys(this.aliases).forEach(function (alias) {
4916							var node = _this.aliases[alias];
4917							if (node.children && node.referenceCount > 1) {
4918								varDeclarations += ', alias' + ++aliasCount + '=' + alias;
4919								node.children[0] = 'alias' + aliasCount;
4920							}
4921						});
4922
4923						if (this.lookupPropertyFunctionIsUsed) {
4924							varDeclarations += ', ' + this.lookupPropertyFunctionVarDeclaration();
4925						}
4926
4927						var params = ['container', 'depth0', 'helpers', 'partials', 'data'];
4928
4929						if (this.useBlockParams || this.useDepths) {
4930							params.push('blockParams');
4931						}
4932						if (this.useDepths) {
4933							params.push('depths');
4934						}
4935
4936						// Perform a second pass over the output to merge content when possible
4937						var source = this.mergeSource(varDeclarations);
4938
4939						if (asObject) {
4940							params.push(source);
4941
4942							return Function.apply(this, params);
4943						} else {
4944							return this.source.wrap(['function(', params.join(','), ') {\n  ', source, '}']);
4945						}
4946					},
4947					mergeSource: function mergeSource(varDeclarations) {
4948						var isSimple = this.environment.isSimple,
4949							appendOnly = !this.forceBuffer,
4950							appendFirst = undefined,
4951							sourceSeen = undefined,
4952							bufferStart = undefined,
4953							bufferEnd = undefined;
4954						this.source.each(function (line) {
4955							if (line.appendToBuffer) {
4956								if (bufferStart) {
4957									line.prepend('  + ');
4958								} else {
4959									bufferStart = line;
4960								}
4961								bufferEnd = line;
4962							} else {
4963								if (bufferStart) {
4964									if (!sourceSeen) {
4965										appendFirst = true;
4966									} else {
4967										bufferStart.prepend('buffer += ');
4968									}
4969									bufferEnd.add(';');
4970									bufferStart = bufferEnd = undefined;
4971								}
4972
4973								sourceSeen = true;
4974								if (!isSimple) {
4975									appendOnly = false;
4976								}
4977							}
4978						});
4979
4980						if (appendOnly) {
4981							if (bufferStart) {
4982								bufferStart.prepend('return ');
4983								bufferEnd.add(';');
4984							} else if (!sourceSeen) {
4985								this.source.push('return "";');
4986							}
4987						} else {
4988							varDeclarations += ', buffer = ' + (appendFirst ? '' : this.initializeBuffer());
4989
4990							if (bufferStart) {
4991								bufferStart.prepend('return buffer + ');
4992								bufferEnd.add(';');
4993							} else {
4994								this.source.push('return buffer;');
4995							}
4996						}
4997
4998						if (varDeclarations) {
4999							this.source.prepend('var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\n'));
5000						}
5001
5002						return this.source.merge();
5003					},
5004
5005					lookupPropertyFunctionVarDeclaration: function lookupPropertyFunctionVarDeclaration() {
5006						return '\n      lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    }\n    '.trim();
5007					},
5008
5009					// [blockValue]
5010					//
5011					// On stack, before: hash, inverse, program, value
5012					// On stack, after: return value of blockHelperMissing
5013					//
5014					// The purpose of this opcode is to take a block of the form
5015					// `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and
5016					// replace it on the stack with the result of properly
5017					// invoking blockHelperMissing.
5018					blockValue: function blockValue(name) {
5019						var blockHelperMissing = this.aliasable('container.hooks.blockHelperMissing'),
5020							params = [this.contextName(0)];
5021						this.setupHelperArgs(name, 0, params);
5022
5023						var blockName = this.popStack();
5024						params.splice(1, 0, blockName);
5025
5026						this.push(this.source.functionCall(blockHelperMissing, 'call', params));
5027					},
5028
5029					// [ambiguousBlockValue]
5030					//
5031					// On stack, before: hash, inverse, program, value
5032					// Compiler value, before: lastHelper=value of last found helper, if any
5033					// On stack, after, if no lastHelper: same as [blockValue]
5034					// On stack, after, if lastHelper: value
5035					ambiguousBlockValue: function ambiguousBlockValue() {
5036						// We're being a bit cheeky and reusing the options value from the prior exec
5037						var blockHelperMissing = this.aliasable('container.hooks.blockHelperMissing'),
5038							params = [this.contextName(0)];
5039						this.setupHelperArgs('', 0, params, true);
5040
5041						this.flushInline();
5042
5043						var current = this.topStack();
5044						params.splice(1, 0, current);
5045
5046						this.pushSource(['if (!', this.lastHelper, ') { ', current, ' = ', this.source.functionCall(blockHelperMissing, 'call', params), '}']);
5047					},
5048
5049					// [appendContent]
5050					//
5051					// On stack, before: ...
5052					// On stack, after: ...
5053					//
5054					// Appends the string value of `content` to the current buffer
5055					appendContent: function appendContent(content) {
5056						if (this.pendingContent) {
5057							content = this.pendingContent + content;
5058						} else {
5059							this.pendingLocation = this.source.currentLocation;
5060						}
5061
5062						this.pendingContent = content;
5063					},
5064
5065					// [append]
5066					//
5067					// On stack, before: value, ...
5068					// On stack, after: ...
5069					//
5070					// Coerces `value` to a String and appends it to the current buffer.
5071					//
5072					// If `value` is truthy, or 0, it is coerced into a string and appended
5073					// Otherwise, the empty string is appended
5074					append: function append() {
5075						if (this.isInline()) {
5076							this.replaceStack(function (current) {
5077								return [' != null ? ', current, ' : ""'];
5078							});
5079
5080							this.pushSource(this.appendToBuffer(this.popStack()));
5081						} else {
5082							var local = this.popStack();
5083							this.pushSource(['if (', local, ' != null) { ', this.appendToBuffer(local, undefined, true), ' }']);
5084							if (this.environment.isSimple) {
5085								this.pushSource(['else { ', this.appendToBuffer("''", undefined, true), ' }']);
5086							}
5087						}
5088					},
5089
5090					// [appendEscaped]
5091					//
5092					// On stack, before: value, ...
5093					// On stack, after: ...
5094					//
5095					// Escape `value` and append it to the buffer
5096					appendEscaped: function appendEscaped() {
5097						this.pushSource(this.appendToBuffer([this.aliasable('container.escapeExpression'), '(', this.popStack(), ')']));
5098					},
5099
5100					// [getContext]
5101					//
5102					// On stack, before: ...
5103					// On stack, after: ...
5104					// Compiler value, after: lastContext=depth
5105					//
5106					// Set the value of the `lastContext` compiler value to the depth
5107					getContext: function getContext(depth) {
5108						this.lastContext = depth;
5109					},
5110
5111					// [pushContext]
5112					//
5113					// On stack, before: ...
5114					// On stack, after: currentContext, ...
5115					//
5116					// Pushes the value of the current context onto the stack.
5117					pushContext: function pushContext() {
5118						this.pushStackLiteral(this.contextName(this.lastContext));
5119					},
5120
5121					// [lookupOnContext]
5122					//
5123					// On stack, before: ...
5124					// On stack, after: currentContext[name], ...
5125					//
5126					// Looks up the value of `name` on the current context and pushes
5127					// it onto the stack.
5128					lookupOnContext: function lookupOnContext(parts, falsy, strict, scoped) {
5129						var i = 0;
5130
5131						if (!scoped && this.options.compat && !this.lastContext) {
5132							// The depthed query is expected to handle the undefined logic for the root level that
5133							// is implemented below, so we evaluate that directly in compat mode
5134							this.push(this.depthedLookup(parts[i++]));
5135						} else {
5136							this.pushContext();
5137						}
5138
5139						this.resolvePath('context', parts, i, falsy, strict);
5140					},
5141
5142					// [lookupBlockParam]
5143					//
5144					// On stack, before: ...
5145					// On stack, after: blockParam[name], ...
5146					//
5147					// Looks up the value of `parts` on the given block param and pushes
5148					// it onto the stack.
5149					lookupBlockParam: function lookupBlockParam(blockParamId, parts) {
5150						this.useBlockParams = true;
5151
5152						this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']);
5153						this.resolvePath('context', parts, 1);
5154					},
5155
5156					// [lookupData]
5157					//
5158					// On stack, before: ...
5159					// On stack, after: data, ...
5160					//
5161					// Push the data lookup operator
5162					lookupData: function lookupData(depth, parts, strict) {
5163						if (!depth) {
5164							this.pushStackLiteral('data');
5165						} else {
5166							this.pushStackLiteral('container.data(data, ' + depth + ')');
5167						}
5168
5169						this.resolvePath('data', parts, 0, true, strict);
5170					},
5171
5172					resolvePath: function resolvePath(type, parts, startPartIndex, falsy, strict) {
5173						// istanbul ignore next
5174
5175						var _this2 = this;
5176
5177						if (this.options.strict || this.options.assumeObjects) {
5178							this.push(strictLookup(this.options.strict && strict, this, parts, startPartIndex, type));
5179							return;
5180						}
5181
5182						var len = parts.length;
5183
5184						var _loop = function (i) {
5185							/* eslint-disable no-loop-func */
5186							_this2.replaceStack(function (current) {
5187								var lookup = _this2.nameLookup(current, parts[i], type);
5188								// We want to ensure that zero and false are handled properly if the context (falsy flag)
5189								// needs to have the special handling for these values.
5190								if (!falsy) {
5191									return [' != null ? ', lookup, ' : ', current];
5192								} else {
5193									// Otherwise we can use generic falsy handling
5194									return [' && ', lookup];
5195								}
5196							});
5197							/* eslint-enable no-loop-func */
5198						};
5199
5200						for (var i = startPartIndex; i < len; i++) {
5201							_loop(i);
5202						}
5203					},
5204
5205					// [resolvePossibleLambda]
5206					//
5207					// On stack, before: value, ...
5208					// On stack, after: resolved value, ...
5209					//
5210					// If the `value` is a lambda, replace it on the stack by
5211					// the return value of the lambda
5212					resolvePossibleLambda: function resolvePossibleLambda() {
5213						this.push([this.aliasable('container.lambda'), '(', this.popStack(), ', ', this.contextName(0), ')']);
5214					},
5215
5216					// [pushStringParam]
5217					//
5218					// On stack, before: ...
5219					// On stack, after: string, currentContext, ...
5220					//
5221					// This opcode is designed for use in string mode, which
5222					// provides the string value of a parameter along with its
5223					// depth rather than resolving it immediately.
5224					pushStringParam: function pushStringParam(string, type) {
5225						this.pushContext();
5226						this.pushString(type);
5227
5228						// If it's a subexpression, the string result
5229						// will be pushed after this opcode.
5230						if (type !== 'SubExpression') {
5231							if (typeof string === 'string') {
5232								this.pushString(string);
5233							} else {
5234								this.pushStackLiteral(string);
5235							}
5236						}
5237					},
5238
5239					emptyHash: function emptyHash(omitEmpty) {
5240						if (this.trackIds) {
5241							this.push('{}'); // hashIds
5242						}
5243						if (this.stringParams) {
5244							this.push('{}'); // hashContexts
5245							this.push('{}'); // hashTypes
5246						}
5247						this.pushStackLiteral(omitEmpty ? 'undefined' : '{}');
5248					},
5249					pushHash: function pushHash() {
5250						if (this.hash) {
5251							this.hashes.push(this.hash);
5252						}
5253						this.hash = { values: {}, types: [], contexts: [], ids: [] };
5254					},
5255					popHash: function popHash() {
5256						var hash = this.hash;
5257						this.hash = this.hashes.pop();
5258
5259						if (this.trackIds) {
5260							this.push(this.objectLiteral(hash.ids));
5261						}
5262						if (this.stringParams) {
5263							this.push(this.objectLiteral(hash.contexts));
5264							this.push(this.objectLiteral(hash.types));
5265						}
5266
5267						this.push(this.objectLiteral(hash.values));
5268					},
5269
5270					// [pushString]
5271					//
5272					// On stack, before: ...
5273					// On stack, after: quotedString(string), ...
5274					//
5275					// Push a quoted version of `string` onto the stack
5276					pushString: function pushString(string) {
5277						this.pushStackLiteral(this.quotedString(string));
5278					},
5279
5280					// [pushLiteral]
5281					//
5282					// On stack, before: ...
5283					// On stack, after: value, ...
5284					//
5285					// Pushes a value onto the stack. This operation prevents
5286					// the compiler from creating a temporary variable to hold
5287					// it.
5288					pushLiteral: function pushLiteral(value) {
5289						this.pushStackLiteral(value);
5290					},
5291
5292					// [pushProgram]
5293					//
5294					// On stack, before: ...
5295					// On stack, after: program(guid), ...
5296					//
5297					// Push a program expression onto the stack. This takes
5298					// a compile-time guid and converts it into a runtime-accessible
5299					// expression.
5300					pushProgram: function pushProgram(guid) {
5301						if (guid != null) {
5302							this.pushStackLiteral(this.programExpression(guid));
5303						} else {
5304							this.pushStackLiteral(null);
5305						}
5306					},
5307
5308					// [registerDecorator]
5309					//
5310					// On stack, before: hash, program, params..., ...
5311					// On stack, after: ...
5312					//
5313					// Pops off the decorator's parameters, invokes the decorator,
5314					// and inserts the decorator into the decorators list.
5315					registerDecorator: function registerDecorator(paramSize, name) {
5316						var foundDecorator = this.nameLookup('decorators', name, 'decorator'),
5317							options = this.setupHelperArgs(name, paramSize);
5318
5319						// Store the resolved decorator in a variable and verify it is a function before
5320						// calling it. Without this, unregistered decorators can cause an unhandled TypeError
5321						// (calling undefined), which crashes the process — enabling Denial of Service.
5322						this.decorators.push(['var decorator = ', foundDecorator, ';']);
5323						this.decorators.push(['if (typeof decorator !== "function") { throw new Error(', this.quotedString('Missing decorator: "' + name + '"'), '); }']);
5324						this.decorators.push(['fn = ', this.decorators.functionCall('decorator', '', ['fn', 'props', 'container', options]), ' || fn;']);
5325					},
5326
5327					// [invokeHelper]
5328					//
5329					// On stack, before: hash, inverse, program, params..., ...
5330					// On stack, after: result of helper invocation
5331					//
5332					// Pops off the helper's parameters, invokes the helper,
5333					// and pushes the helper's return value onto the stack.
5334					//
5335					// If the helper is not found, `helperMissing` is called.
5336					invokeHelper: function invokeHelper(paramSize, name, isSimple) {
5337						var nonHelper = this.popStack(),
5338							helper = this.setupHelper(paramSize, name);
5339
5340						var possibleFunctionCalls = [];
5341
5342						if (isSimple) {
5343							// direct call to helper
5344							possibleFunctionCalls.push(helper.name);
5345						}
5346						// call a function from the input object
5347						possibleFunctionCalls.push(nonHelper);
5348						if (!this.options.strict) {
5349							possibleFunctionCalls.push(this.aliasable('container.hooks.helperMissing'));
5350						}
5351
5352						var functionLookupCode = ['(', this.itemsSeparatedBy(possibleFunctionCalls, '||'), ')'];
5353						var functionCall = this.source.functionCall(functionLookupCode, 'call', helper.callParams);
5354						this.push(functionCall);
5355					},
5356
5357					itemsSeparatedBy: function itemsSeparatedBy(items, separator) {
5358						var result = [];
5359						result.push(items[0]);
5360						for (var i = 1; i < items.length; i++) {
5361							result.push(separator, items[i]);
5362						}
5363						return result;
5364					},
5365					// [invokeKnownHelper]
5366					//
5367					// On stack, before: hash, inverse, program, params..., ...
5368					// On stack, after: result of helper invocation
5369					//
5370					// This operation is used when the helper is known to exist,
5371					// so a `helperMissing` fallback is not required.
5372					invokeKnownHelper: function invokeKnownHelper(paramSize, name) {
5373						var helper = this.setupHelper(paramSize, name);
5374						this.push(this.source.functionCall(helper.name, 'call', helper.callParams));
5375					},
5376
5377					// [invokeAmbiguous]
5378					//
5379					// On stack, before: hash, inverse, program, params..., ...
5380					// On stack, after: result of disambiguation
5381					//
5382					// This operation is used when an expression like `{{foo}}`
5383					// is provided, but we don't know at compile-time whether it
5384					// is a helper or a path.
5385					//
5386					// This operation emits more code than the other options,
5387					// and can be avoided by passing the `knownHelpers` and
5388					// `knownHelpersOnly` flags at compile-time.
5389					invokeAmbiguous: function invokeAmbiguous(name, helperCall) {
5390						this.useRegister('helper');
5391
5392						var nonHelper = this.popStack();
5393
5394						this.emptyHash();
5395						var helper = this.setupHelper(0, name, helperCall);
5396
5397						var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');
5398
5399						var lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];
5400						if (!this.options.strict) {
5401							lookup[0] = '(helper = ';
5402							lookup.push(' != null ? helper : ', this.aliasable('container.hooks.helperMissing'));
5403						}
5404
5405						this.push(['(', lookup, helper.paramsInit ? ['),(', helper.paramsInit] : [], '),', '(typeof helper === ', this.aliasable('"function"'), ' ? ', this.source.functionCall('helper', 'call', helper.callParams), ' : helper))']);
5406					},
5407
5408					// [invokePartial]
5409					//
5410					// On stack, before: context, ...
5411					// On stack after: result of partial invocation
5412					//
5413					// This operation pops off a context, invokes a partial with that context,
5414					// and pushes the result of the invocation back.
5415					invokePartial: function invokePartial(isDynamic, name, indent) {
5416						var params = [],
5417							options = this.setupParams(name, 1, params);
5418
5419						if (isDynamic) {
5420							name = this.popStack();
5421							delete options.name;
5422						}
5423
5424						if (indent) {
5425							options.indent = JSON.stringify(indent);
5426						}
5427						options.helpers = 'helpers';
5428						options.partials = 'partials';
5429						options.decorators = 'container.decorators';
5430
5431						if (!isDynamic) {
5432							params.unshift(this.nameLookup('partials', name, 'partial'));
5433						} else {
5434							params.unshift(name);
5435						}
5436
5437						if (this.options.compat) {
5438							options.depths = 'depths';
5439						}
5440						options = this.objectLiteral(options);
5441						params.push(options);
5442
5443						this.push(this.source.functionCall('container.invokePartial', '', params));
5444					},
5445
5446					// [assignToHash]
5447					//
5448					// On stack, before: value, ..., hash, ...
5449					// On stack, after: ..., hash, ...
5450					//
5451					// Pops a value off the stack and assigns it to the current hash
5452					assignToHash: function assignToHash(key) {
5453						var value = this.popStack(),
5454							context = undefined,
5455							type = undefined,
5456							id = undefined;
5457
5458						if (this.trackIds) {
5459							id = this.popStack();
5460						}
5461						if (this.stringParams) {
5462							type = this.popStack();
5463							context = this.popStack();
5464						}
5465
5466						var hash = this.hash;
5467						if (context) {
5468							hash.contexts[key] = context;
5469						}
5470						if (type) {
5471							hash.types[key] = type;
5472						}
5473						if (id) {
5474							hash.ids[key] = id;
5475						}
5476						hash.values[key] = value;
5477					},
5478
5479					pushId: function pushId(type, name, child) {
5480						if (type === 'BlockParam') {
5481							this.pushStackLiteral('blockParams[' + name[0] + '].path[' + name[1] + ']' + (child ? ' + ' + JSON.stringify('.' + child) : ''));
5482						} else if (type === 'PathExpression') {
5483							this.pushString(name);
5484						} else if (type === 'SubExpression') {
5485							this.pushStackLiteral('true');
5486						} else {
5487							this.pushStackLiteral('null');
5488						}
5489					},
5490
5491					// HELPERS
5492
5493					compiler: JavaScriptCompiler,
5494
5495					compileChildren: function compileChildren(environment, options) {
5496						var children = environment.children,
5497							child = undefined,
5498							compiler = undefined;
5499
5500						for (var i = 0, l = children.length; i < l; i++) {
5501							child = children[i];
5502							compiler = new this.compiler(); // eslint-disable-line new-cap
5503
5504							var existing = this.matchExistingProgram(child);
5505
5506							if (existing == null) {
5507								// Placeholder to prevent name conflicts for nested children
5508								var index = this.context.programs.push('') - 1;
5509								child.index = index;
5510								child.name = 'program' + index;
5511								this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile);
5512								this.context.decorators[index] = compiler.decorators;
5513								this.context.environments[index] = child;
5514
5515								this.useDepths = this.useDepths || compiler.useDepths;
5516								this.useBlockParams = this.useBlockParams || compiler.useBlockParams;
5517								child.useDepths = this.useDepths;
5518								child.useBlockParams = this.useBlockParams;
5519							} else {
5520								child.index = existing.index;
5521								child.name = 'program' + existing.index;
5522
5523								this.useDepths = this.useDepths || existing.useDepths;
5524								this.useBlockParams = this.useBlockParams || existing.useBlockParams;
5525							}
5526						}
5527					},
5528					matchExistingProgram: function matchExistingProgram(child) {
5529						for (var i = 0, len = this.context.environments.length; i < len; i++) {
5530							var environment = this.context.environments[i];
5531							if (environment && environment.equals(child)) {
5532								return environment;
5533							}
5534						}
5535					},
5536
5537					programExpression: function programExpression(guid) {
5538						var child = this.environment.children[guid],
5539							programParams = [child.index, 'data', child.blockParams];
5540
5541						if (this.useBlockParams || this.useDepths) {
5542							programParams.push('blockParams');
5543						}
5544						if (this.useDepths) {
5545							programParams.push('depths');
5546						}
5547
5548						return 'container.program(' + programParams.join(', ') + ')';
5549					},
5550
5551					useRegister: function useRegister(name) {
5552						if (!this.registers[name]) {
5553							this.registers[name] = true;
5554							this.registers.list.push(name);
5555						}
5556					},
5557
5558					push: function push(expr) {
5559						if (!(expr instanceof Literal)) {
5560							expr = this.source.wrap(expr);
5561						}
5562
5563						this.inlineStack.push(expr);
5564						return expr;
5565					},
5566
5567					pushStackLiteral: function pushStackLiteral(item) {
5568						this.push(new Literal(item));
5569					},
5570
5571					pushSource: function pushSource(source) {
5572						if (this.pendingContent) {
5573							this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent), this.pendingLocation));
5574							this.pendingContent = undefined;
5575						}
5576
5577						if (source) {
5578							this.source.push(source);
5579						}
5580					},
5581
5582					replaceStack: function replaceStack(callback) {
5583						var prefix = ['('],
5584							stack = undefined,
5585							createdStack = undefined,
5586							usedLiteral = undefined;
5587
5588						/* istanbul ignore next */
5589						if (!this.isInline()) {
5590							throw new _exception2['default']('replaceStack on non-inline');
5591						}
5592
5593						// We want to merge the inline statement into the replacement statement via ','
5594						var top = this.popStack(true);
5595
5596						if (top instanceof Literal) {
5597							// Literals do not need to be inlined
5598							stack = [top.value];
5599							prefix = ['(', stack];
5600							usedLiteral = true;
5601						} else {
5602							// Get or create the current stack name for use by the inline
5603							createdStack = true;
5604							var _name = this.incrStack();
5605
5606							prefix = ['((', this.push(_name), ' = ', top, ')'];
5607							stack = this.topStack();
5608						}
5609
5610						var item = callback.call(this, stack);
5611
5612						if (!usedLiteral) {
5613							this.popStack();
5614						}
5615						if (createdStack) {
5616							this.stackSlot--;
5617						}
5618						this.push(prefix.concat(item, ')'));
5619					},
5620
5621					incrStack: function incrStack() {
5622						this.stackSlot++;
5623						if (this.stackSlot > this.stackVars.length) {
5624							this.stackVars.push('stack' + this.stackSlot);
5625						}
5626						return this.topStackName();
5627					},
5628					topStackName: function topStackName() {
5629						return 'stack' + this.stackSlot;
5630					},
5631					flushInline: function flushInline() {
5632						var inlineStack = this.inlineStack;
5633						this.inlineStack = [];
5634						for (var i = 0, len = inlineStack.length; i < len; i++) {
5635							var entry = inlineStack[i];
5636							/* istanbul ignore if */
5637							if (entry instanceof Literal) {
5638								this.compileStack.push(entry);
5639							} else {
5640								var stack = this.incrStack();
5641								this.pushSource([stack, ' = ', entry, ';']);
5642								this.compileStack.push(stack);
5643							}
5644						}
5645					},
5646					isInline: function isInline() {
5647						return this.inlineStack.length;
5648					},
5649
5650					popStack: function popStack(wrapped) {
5651						var inline = this.isInline(),
5652							item = (inline ? this.inlineStack : this.compileStack).pop();
5653
5654						if (!wrapped && item instanceof Literal) {
5655							return item.value;
5656						} else {
5657							if (!inline) {
5658								/* istanbul ignore next */
5659								if (!this.stackSlot) {
5660									throw new _exception2['default']('Invalid stack pop');
5661								}
5662								this.stackSlot--;
5663							}
5664							return item;
5665						}
5666					},
5667
5668					topStack: function topStack() {
5669						var stack = this.isInline() ? this.inlineStack : this.compileStack,
5670							item = stack[stack.length - 1];
5671
5672						/* istanbul ignore if */
5673						if (item instanceof Literal) {
5674							return item.value;
5675						} else {
5676							return item;
5677						}
5678					},
5679
5680					contextName: function contextName(context) {
5681						if (this.useDepths && context) {
5682							return 'depths[' + context + ']';
5683						} else {
5684							return 'depth' + context;
5685						}
5686					},
5687
5688					quotedString: function quotedString(str) {
5689						return this.source.quotedString(str);
5690					},
5691
5692					objectLiteral: function objectLiteral(obj) {
5693						return this.source.objectLiteral(obj);
5694					},
5695
5696					aliasable: function aliasable(name) {
5697						var ret = this.aliases[name];
5698						if (ret) {
5699							ret.referenceCount++;
5700							return ret;
5701						}
5702
5703						ret = this.aliases[name] = this.source.wrap(name);
5704						ret.aliasable = true;
5705						ret.referenceCount = 1;
5706
5707						return ret;
5708					},
5709
5710					setupHelper: function setupHelper(paramSize, name, blockHelper) {
5711						var params = [],
5712							paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper);
5713						var foundHelper = this.nameLookup('helpers', name, 'helper'),
5714							callContext = this.aliasable(this.contextName(0) + ' != null ? ' + this.contextName(0) + ' : (container.nullContext || {})');
5715
5716						return {
5717							params: params,
5718							paramsInit: paramsInit,
5719							name: foundHelper,
5720							callParams: [callContext].concat(params)
5721						};
5722					},
5723
5724					setupParams: function setupParams(helper, paramSize, params) {
5725						var options = {},
5726							contexts = [],
5727							types = [],
5728							ids = [],
5729							objectArgs = !params,
5730							param = undefined;
5731
5732						if (objectArgs) {
5733							params = [];
5734						}
5735
5736						options.name = this.quotedString(helper);
5737						options.hash = this.popStack();
5738
5739						if (this.trackIds) {
5740							options.hashIds = this.popStack();
5741						}
5742						if (this.stringParams) {
5743							options.hashTypes = this.popStack();
5744							options.hashContexts = this.popStack();
5745						}
5746
5747						var inverse = this.popStack(),
5748							program = this.popStack();
5749
5750						// Avoid setting fn and inverse if neither are set. This allows
5751						// helpers to do a check for `if (options.fn)`
5752						if (program || inverse) {
5753							options.fn = program || 'container.noop';
5754							options.inverse = inverse || 'container.noop';
5755						}
5756
5757						// The parameters go on to the stack in order (making sure that they are evaluated in order)
5758						// so we need to pop them off the stack in reverse order
5759						var i = paramSize;
5760						while (i--) {
5761							param = this.popStack();
5762							params[i] = param;
5763
5764							if (this.trackIds) {
5765								ids[i] = this.popStack();
5766							}
5767							if (this.stringParams) {
5768								types[i] = this.popStack();
5769								contexts[i] = this.popStack();
5770							}
5771						}
5772
5773						if (objectArgs) {
5774							options.args = this.source.generateArray(params);
5775						}
5776
5777						if (this.trackIds) {
5778							options.ids = this.source.generateArray(ids);
5779						}
5780						if (this.stringParams) {
5781							options.types = this.source.generateArray(types);
5782							options.contexts = this.source.generateArray(contexts);
5783						}
5784
5785						if (this.options.data) {
5786							options.data = 'data';
5787						}
5788						if (this.useBlockParams) {
5789							options.blockParams = 'blockParams';
5790						}
5791						return options;
5792					},
5793
5794					setupHelperArgs: function setupHelperArgs(helper, paramSize, params, useRegister) {
5795						var options = this.setupParams(helper, paramSize, params);
5796						options.loc = JSON.stringify(this.source.currentLocation);
5797						options = this.objectLiteral(options);
5798						if (useRegister) {
5799							this.useRegister('options');
5800							params.push('options');
5801							return ['options=', options];
5802						} else if (params) {
5803							params.push(options);
5804							return '';
5805						} else {
5806							return options;
5807						}
5808					}
5809				};
5810
5811				(function () {
5812					var reservedWords = ('break else new var' + ' case finally return void' + ' catch for switch while' + ' continue function this with' + ' default if throw' + ' delete in try' + ' do instanceof typeof' + ' abstract enum int short' + ' boolean export interface static' + ' byte extends long super' + ' char final native synchronized' + ' class float package throws' + ' const goto private transient' + ' debugger implements protected volatile' + ' double import public let yield await' + ' null true false').split(' ');
5813
5814					var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};
5815
5816					for (var i = 0, l = reservedWords.length; i < l; i++) {
5817						compilerWords[reservedWords[i]] = true;
5818					}
5819				})();
5820
5821				/**
5822				 * @deprecated May be removed in the next major version
5823				 */
vendor: 5,484 bytes, lines 5824-6026
5824				JavaScriptCompiler.isValidJavaScriptVariableName = function (name) {
5825					return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);
5826				};
5827
5828				function strictLookup(requireTerminal, compiler, parts, startPartIndex, type) {
5829					var stack = compiler.popStack(),
5830						len = parts.length;
5831					if (requireTerminal) {
5832						len--;
5833					}
5834
5835					for (var i = startPartIndex; i < len; i++) {
5836						stack = compiler.nameLookup(stack, parts[i], type);
5837					}
5838
5839					if (requireTerminal) {
5840						return [compiler.aliasable('container.strict'), '(', stack, ', ', compiler.quotedString(parts[len]), ', ', JSON.stringify(compiler.source.currentLocation), ' )'];
5841					} else {
5842						return stack;
5843					}
5844				}
5845
5846				exports['default'] = JavaScriptCompiler;
5847				module.exports = exports['default'];
5848
5849				/***/ }),
5850			/* 91 */
5851			/***/ (function(module, exports, __webpack_require__) {
5852
5853				/* global define, require */
5854				'use strict';
5855
5856				var _Object$keys = __webpack_require__(60)['default'];
5857
5858				exports.__esModule = true;
5859
5860				var _utils = __webpack_require__(5);
5861
5862				var SourceNode = undefined;
5863
5864				try {
5865					/* istanbul ignore next */
5866					if (false) {
5867						// We don't support this in AMD environments. For these environments, we assume that
5868						// they are running on the browser and thus have no need for the source-map library.
5869						var SourceMap = require('source-map');
5870						SourceNode = SourceMap.SourceNode;
5871					}
5872				} catch (err) {}
5873				/* NOP */
5874
5875				/* istanbul ignore if: tested but not covered in istanbul due to dist build  */
5876				if (!SourceNode) {
5877					SourceNode = function (line, column, srcFile, chunks) {
5878						this.src = '';
5879						if (chunks) {
5880							this.add(chunks);
5881						}
5882					};
5883					/* istanbul ignore next */
5884					SourceNode.prototype = {
5885						add: function add(chunks) {
5886							if (_utils.isArray(chunks)) {
5887								chunks = chunks.join('');
5888							}
5889							this.src += chunks;
5890						},
5891						prepend: function prepend(chunks) {
5892							if (_utils.isArray(chunks)) {
5893								chunks = chunks.join('');
5894							}
5895							this.src = chunks + this.src;
5896						},
5897						toStringWithSourceMap: function toStringWithSourceMap() {
5898							return { code: this.toString() };
5899						},
5900						toString: function toString() {
5901							return this.src;
5902						}
5903					};
5904				}
5905
5906				function castChunk(chunk, codeGen, loc) {
5907					if (_utils.isArray(chunk)) {
5908						var ret = [];
5909
5910						for (var i = 0, len = chunk.length; i < len; i++) {
5911							ret.push(codeGen.wrap(chunk[i], loc));
5912						}
5913						return ret;
5914					} else if (typeof chunk === 'boolean' || typeof chunk === 'number') {
5915						// Handle primitives that the SourceNode will throw up on
5916						return chunk + '';
5917					}
5918					return chunk;
5919				}
5920
5921				function CodeGen(srcFile) {
5922					this.srcFile = srcFile;
5923					this.source = [];
5924				}
5925
5926				CodeGen.prototype = {
5927					isEmpty: function isEmpty() {
5928						return !this.source.length;
5929					},
5930					prepend: function prepend(source, loc) {
5931						this.source.unshift(this.wrap(source, loc));
5932					},
5933					push: function push(source, loc) {
5934						this.source.push(this.wrap(source, loc));
5935					},
5936
5937					merge: function merge() {
5938						var source = this.empty();
5939						this.each(function (line) {
5940							source.add(['  ', line, '\n']);
5941						});
5942						return source;
5943					},
5944
5945					each: function each(iter) {
5946						for (var i = 0, len = this.source.length; i < len; i++) {
5947							iter(this.source[i]);
5948						}
5949					},
5950
5951					empty: function empty() {
5952						var loc = this.currentLocation || { start: {} };
5953						return new SourceNode(loc.start.line, loc.start.column, this.srcFile);
5954					},
5955					wrap: function wrap(chunk) {
5956						var loc = arguments.length <= 1 || arguments[1] === undefined ? this.currentLocation || { start: {} } : arguments[1];
5957
5958						if (chunk instanceof SourceNode) {
5959							return chunk;
5960						}
5961
5962						chunk = castChunk(chunk, this, loc);
5963
5964						return new SourceNode(loc.start.line, loc.start.column, this.srcFile, chunk);
5965					},
5966
5967					functionCall: function functionCall(fn, type, params) {
5968						params = this.generateList(params);
5969						return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']);
5970					},
5971
5972					quotedString: function quotedString(str) {
5973						return '"' + (str + '').replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n').replace(/\r/g, '\\r').replace(/\u2028/g, '\\u2028') // Per Ecma-262 7.3 + 7.8.4
5974							.replace(/\u2029/g, '\\u2029') + '"';
5975					},
5976
5977					objectLiteral: function objectLiteral(obj) {
5978						// istanbul ignore next
5979
5980						var _this = this;
5981
5982						var pairs = [];
5983
5984						_Object$keys(obj).forEach(function (key) {
5985							var value = castChunk(obj[key], _this);
5986							if (value !== 'undefined') {
5987								pairs.push([_this.quotedString(key), ':', value]);
5988							}
5989						});
5990
5991						var ret = this.generateList(pairs);
5992						ret.prepend('{');
5993						ret.add('}');
5994						return ret;
5995					},
5996
5997					generateList: function generateList(entries) {
5998						var ret = this.empty();
5999
6000						for (var i = 0, len = entries.length; i < len; i++) {
6001							if (i) {
6002								ret.add(',');
6003							}
6004
6005							ret.add(castChunk(entries[i], this));
6006						}
6007
6008						return ret;
6009					},
6010
6011					generateArray: function generateArray(entries) {
6012						var ret = this.generateList(entries);
6013						ret.prepend('[');
6014						ret.add(']');
6015
6016						return ret;
6017					}
6018				};
6019
6020				exports['default'] = CodeGen;
6021				module.exports = exports['default'];
6022
6023				/***/ })
6024			/******/ ])
6025});
6026;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.