{"version":3,"file":"script/bundle-28.8df8a75434.js","mappings":"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","sources":["webpack://touchweb/./node_modules/flightjs/build/flight.js","webpack://touchweb/./node_modules/history/esm/history.js","webpack://touchweb/./node_modules/lodash/_apply.js","webpack://touchweb/./node_modules/lodash/_basePropertyOf.js","webpack://touchweb/./node_modules/lodash/_baseRest.js","webpack://touchweb/./node_modules/lodash/_baseSetToString.js","webpack://touchweb/./node_modules/lodash/_baseValues.js","webpack://touchweb/./node_modules/lodash/_copyObject.js","webpack://touchweb/./node_modules/lodash/_createAssigner.js","webpack://touchweb/./node_modules/lodash/_customDefaultsAssignIn.js","webpack://touchweb/./node_modules/lodash/_escapeHtmlChar.js","webpack://touchweb/./node_modules/lodash/_escapeStringChar.js","webpack://touchweb/./node_modules/lodash/_isIterateeCall.js","webpack://touchweb/./node_modules/lodash/_overRest.js","webpack://touchweb/./node_modules/lodash/_reEscape.js","webpack://touchweb/./node_modules/lodash/_reEvaluate.js","webpack://touchweb/./node_modules/lodash/_reInterpolate.js","webpack://touchweb/./node_modules/lodash/_setToString.js","webpack://touchweb/./node_modules/lodash/_shortOut.js","webpack://touchweb/./node_modules/lodash/assignInWith.js","webpack://touchweb/./node_modules/lodash/attempt.js","webpack://touchweb/./node_modules/lodash/constant.js","webpack://touchweb/./node_modules/lodash/escape.js","webpack://touchweb/./node_modules/lodash/isError.js","webpack://touchweb/./node_modules/lodash/isPlainObject.js","webpack://touchweb/./node_modules/lodash/mapValues.js","webpack://touchweb/./node_modules/lodash/omitBy.js","webpack://touchweb/./node_modules/lodash/template.js","webpack://touchweb/./node_modules/lodash/templateSettings.js","webpack://touchweb/./node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js","webpack://touchweb/./node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js","webpack://touchweb/./node_modules/react-redux/es/hooks/useSelector.js","webpack://touchweb/./node_modules/react-redux/es/index.js"],"sourcesContent":["/*! Flight v1.5.2 | (c) Twitter, Inc. | MIT License */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"flight\"] = factory();\n\telse\n\t\troot[\"flight\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(1),\n __webpack_require__(2),\n __webpack_require__(3),\n __webpack_require__(4),\n __webpack_require__(5),\n __webpack_require__(6),\n __webpack_require__(7)\n ], __WEBPACK_AMD_DEFINE_RESULT__ = function(advice, component, compose, debug, logger, registry, utils) {\n 'use strict';\n\n return {\n advice: advice,\n component: component,\n compose: compose,\n debug: debug,\n logger: logger,\n registry: registry,\n utils: utils\n };\n\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(7)\n ], __WEBPACK_AMD_DEFINE_RESULT__ = function(utils) {\n 'use strict';\n\n var advice = {\n\n around: function(base, wrapped) {\n return function composedAround() {\n // unpacking arguments by hand benchmarked faster\n var i = 0, l = arguments.length, args = new Array(l + 1);\n args[0] = base.bind(this);\n for (; i < l; i++) {\n args[i + 1] = arguments[i];\n }\n return wrapped.apply(this, args);\n };\n },\n\n before: function(base, before) {\n var beforeFn = (typeof before == 'function') ? before : before.obj[before.fnName];\n return function composedBefore() {\n beforeFn.apply(this, arguments);\n return base.apply(this, arguments);\n };\n },\n\n after: function(base, after) {\n var afterFn = (typeof after == 'function') ? after : after.obj[after.fnName];\n return function composedAfter() {\n var res = (base.unbound || base).apply(this, arguments);\n afterFn.apply(this, arguments);\n return res;\n };\n },\n\n // a mixin that allows other mixins to augment existing functions by adding additional\n // code before, after or around.\n withAdvice: function() {\n ['before', 'after', 'around'].forEach(function(m) {\n this[m] = function(method, fn) {\n var methods = method.trim().split(' ');\n\n methods.forEach(function(i) {\n utils.mutateProperty(this, i, function() {\n if (typeof this[i] == 'function') {\n this[i] = advice[m](this[i], fn);\n } else {\n this[i] = fn;\n }\n\n return this[i];\n });\n }, this);\n };\n }, this);\n }\n };\n\n return advice;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(1),\n __webpack_require__(7),\n __webpack_require__(3),\n __webpack_require__(8),\n __webpack_require__(6),\n __webpack_require__(5),\n __webpack_require__(4)\n ], __WEBPACK_AMD_DEFINE_RESULT__ = function(advice, utils, compose, withBase, registry, withLogging, debug) {\n 'use strict';\n\n var functionNameRegEx = /function (.*?)\\s?\\(/;\n var ignoredMixin = {\n withBase: true,\n withLogging: true\n };\n\n // teardown for all instances of this constructor\n function teardownAll() {\n var componentInfo = registry.findComponentInfo(this);\n\n componentInfo && Object.keys(componentInfo.instances).forEach(function(k) {\n var info = componentInfo.instances[k];\n // It's possible that a previous teardown caused another component to teardown,\n // so we can't assume that the instances object is as it was.\n if (info && info.instance) {\n info.instance.teardown();\n }\n });\n }\n\n function attachTo(selector/*, options args */) {\n // unpacking arguments by hand benchmarked faster\n var l = arguments.length;\n var args = new Array(l - 1);\n for (var i = 1; i < l; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (!selector) {\n throw new Error('Component needs to be attachTo\\'d a jQuery object, native node or selector string');\n }\n\n var options = utils.merge.apply(utils, args);\n var componentInfo = registry.findComponentInfo(this);\n\n $(selector).each(function(i, node) {\n if (componentInfo && componentInfo.isAttachedTo(node)) {\n // already attached\n return;\n }\n\n (new this).initialize(node, options);\n }.bind(this));\n }\n\n function prettyPrintMixins() {\n //could be called from constructor or constructor.prototype\n var mixedIn = this.mixedIn || this.prototype.mixedIn || [];\n return mixedIn.map(function(mixin) {\n if (mixin.name == null) {\n // function name property not supported by this browser, use regex\n var m = mixin.toString().match(functionNameRegEx);\n return (m && m[1]) ? m[1] : '';\n }\n return (!ignoredMixin[mixin.name] ? mixin.name : '');\n }).filter(Boolean).join(', ');\n };\n\n\n // define the constructor for a custom component type\n // takes an unlimited number of mixin functions as arguments\n // typical api call with 3 mixins: defineComponent(timeline, withTweetCapability, withScrollCapability);\n function defineComponent(/*mixins*/) {\n // unpacking arguments by hand benchmarked faster\n var l = arguments.length;\n var mixins = new Array(l);\n for (var i = 0; i < l; i++) {\n mixins[i] = arguments[i];\n }\n\n var Component = function() {};\n\n Component.toString = Component.prototype.toString = prettyPrintMixins;\n if (debug.enabled) {\n Component.describe = Component.prototype.describe = Component.toString();\n }\n\n // 'options' is optional hash to be merged with 'defaults' in the component definition\n Component.attachTo = attachTo;\n // enables extension of existing \"base\" Components\n Component.mixin = function() {\n var newComponent = defineComponent(); //TODO: fix pretty print\n var newPrototype = Object.create(Component.prototype);\n newPrototype.mixedIn = [].concat(Component.prototype.mixedIn);\n newPrototype.defaults = utils.merge(Component.prototype.defaults);\n newPrototype.attrDef = Component.prototype.attrDef;\n compose.mixin(newPrototype, arguments);\n newComponent.prototype = newPrototype;\n newComponent.prototype.constructor = newComponent;\n return newComponent;\n };\n Component.teardownAll = teardownAll;\n\n // prepend common mixins to supplied list, then mixin all flavors\n if (debug.enabled) {\n mixins.unshift(withLogging);\n }\n mixins.unshift(withBase, advice.withAdvice, registry.withRegistration);\n compose.mixin(Component.prototype, mixins);\n\n return Component;\n }\n\n defineComponent.teardownAll = function() {\n registry.components.slice().forEach(function(c) {\n c.component.teardownAll();\n });\n registry.reset();\n };\n\n return defineComponent;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(7)\n ], __WEBPACK_AMD_DEFINE_RESULT__ = function(utils) {\n 'use strict';\n\n var dontLock = ['mixedIn', 'attrDef'];\n\n function setWritability(obj, writable) {\n Object.keys(obj).forEach(function (key) {\n if (dontLock.indexOf(key) < 0) {\n utils.propertyWritability(obj, key, writable);\n }\n });\n }\n\n function mixin(base, mixins) {\n base.mixedIn = Object.prototype.hasOwnProperty.call(base, 'mixedIn') ? base.mixedIn : [];\n\n for (var i = 0; i < mixins.length; i++) {\n if (base.mixedIn.indexOf(mixins[i]) == -1) {\n setWritability(base, false);\n mixins[i].call(base);\n base.mixedIn.push(mixins[i]);\n }\n }\n\n setWritability(base, true);\n }\n\n return {\n mixin: mixin\n };\n\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(6)], __WEBPACK_AMD_DEFINE_RESULT__ = function(registry) {\n 'use strict';\n\n // ==========================================\n // Search object model\n // ==========================================\n\n function traverse(util, searchTerm, options) {\n options = options || {};\n var obj = options.obj || window;\n var path = options.path || ((obj == window) ? 'window' : '');\n var props = Object.keys(obj);\n props.forEach(function(prop) {\n if ((tests[util] || util)(searchTerm, obj, prop)) {\n console.log([path, '.', prop].join(''), '->', ['(', typeof obj[prop], ')'].join(''), obj[prop]);\n }\n if (Object.prototype.toString.call(obj[prop]) == '[object Object]' && (obj[prop] != obj) && path.split('.').indexOf(prop) == -1) {\n traverse(util, searchTerm, {obj: obj[prop], path: [path,prop].join('.')});\n }\n });\n }\n\n function search(util, expected, searchTerm, options) {\n if (!expected || typeof searchTerm == expected) {\n traverse(util, searchTerm, options);\n } else {\n console.error([searchTerm, 'must be', expected].join(' '));\n }\n }\n\n var tests = {\n 'name': function(searchTerm, obj, prop) {return searchTerm == prop;},\n 'nameContains': function(searchTerm, obj, prop) {return prop.indexOf(searchTerm) > -1;},\n 'type': function(searchTerm, obj, prop) {return obj[prop] instanceof searchTerm;},\n 'value': function(searchTerm, obj, prop) {return obj[prop] === searchTerm;},\n 'valueCoerced': function(searchTerm, obj, prop) {return obj[prop] == searchTerm;}\n };\n\n function byName(searchTerm, options) {search('name', 'string', searchTerm, options);}\n function byNameContains(searchTerm, options) {search('nameContains', 'string', searchTerm, options);}\n function byType(searchTerm, options) {search('type', 'function', searchTerm, options);}\n function byValue(searchTerm, options) {search('value', null, searchTerm, options);}\n function byValueCoerced(searchTerm, options) {search('valueCoerced', null, searchTerm, options);}\n function custom(fn, options) {traverse(fn, null, options);}\n\n // ==========================================\n // Event logging\n // ==========================================\n\n var ALL = 'all'; //no filter\n\n //log nothing by default\n var logFilter = {\n eventNames: [],\n actions: []\n }\n\n function filterEventLogsByAction(/*actions*/) {\n var actions = [].slice.call(arguments);\n\n logFilter.eventNames.length || (logFilter.eventNames = ALL);\n logFilter.actions = actions.length ? actions : ALL;\n saveLogFilter();\n }\n\n function filterEventLogsByName(/*eventNames*/) {\n var eventNames = [].slice.call(arguments);\n\n logFilter.actions.length || (logFilter.actions = ALL);\n logFilter.eventNames = eventNames.length ? eventNames : ALL;\n saveLogFilter();\n }\n\n function hideAllEventLogs() {\n logFilter.actions = [];\n logFilter.eventNames = [];\n saveLogFilter();\n }\n\n function showAllEventLogs() {\n logFilter.actions = ALL;\n logFilter.eventNames = ALL;\n saveLogFilter();\n }\n\n function saveLogFilter() {\n try {\n if (window.localStorage) {\n localStorage.setItem('logFilter_eventNames', logFilter.eventNames);\n localStorage.setItem('logFilter_actions', logFilter.actions);\n }\n } catch (ignored) {};\n }\n\n function retrieveLogFilter() {\n var eventNames, actions;\n try {\n eventNames = (window.localStorage && localStorage.getItem('logFilter_eventNames'));\n actions = (window.localStorage && localStorage.getItem('logFilter_actions'));\n } catch (ignored) {\n return;\n }\n eventNames && (logFilter.eventNames = eventNames);\n actions && (logFilter.actions = actions);\n\n // reconstitute arrays in place\n Object.keys(logFilter).forEach(function(k) {\n var thisProp = logFilter[k];\n if (typeof thisProp == 'string' && thisProp !== ALL) {\n logFilter[k] = thisProp ? thisProp.split(',') : [];\n }\n });\n }\n\n return {\n\n enable: function(enable) {\n this.enabled = !!enable;\n\n if (enable && window.console) {\n console.info('Booting in DEBUG mode');\n console.info('You can configure event logging with DEBUG.events.logAll()/logNone()/logByName()/logByAction()');\n }\n\n retrieveLogFilter();\n\n window.DEBUG = this;\n },\n\n warn: function (/*messages*/) {\n if (!window.console) { return; }\n var fn = (console.warn || console.log);\n var messages = [].slice.call(arguments);\n messages.unshift(this.toString() + ':')\n fn.apply(console, messages);\n },\n\n registry: registry,\n\n find: {\n byName: byName,\n byNameContains: byNameContains,\n byType: byType,\n byValue: byValue,\n byValueCoerced: byValueCoerced,\n custom: custom\n },\n\n events: {\n logFilter: logFilter,\n\n // Accepts any number of action args\n // e.g. DEBUG.events.logByAction(\"on\", \"off\")\n logByAction: filterEventLogsByAction,\n\n // Accepts any number of event name args (inc. regex or wildcards)\n // e.g. DEBUG.events.logByName(/ui.*/, \"*Thread*\");\n logByName: filterEventLogsByName,\n\n logAll: showAllEventLogs,\n logNone: hideAllEventLogs\n }\n };\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(7)\n ], __WEBPACK_AMD_DEFINE_RESULT__ = function(utils) {\n 'use strict';\n\n var actionSymbols = {\n on: '<-',\n trigger: '->',\n off: 'x '\n };\n\n function elemToString(elem) {\n var tagStr = elem.tagName ? elem.tagName.toLowerCase() : elem.toString();\n var classStr = elem.className ? '.' + (elem.className) : '';\n var result = tagStr + classStr;\n return elem.tagName ? ['\\'', '\\''].join(result) : result;\n }\n\n function log(action, component, eventArgs) {\n if (!window.DEBUG || !window.DEBUG.enabled) {\n return;\n }\n var name, eventType, elem, fn, payload, logFilter, toRegExp, actionLoggable, nameLoggable, info;\n\n if (typeof eventArgs[eventArgs.length - 1] == 'function') {\n fn = eventArgs.pop();\n fn = fn.unbound || fn; // use unbound version if any (better info)\n }\n\n if (eventArgs.length == 1) {\n elem = component.$node[0];\n eventType = eventArgs[0];\n } else if ((eventArgs.length == 2) && typeof eventArgs[1] == 'object' && !eventArgs[1].type) {\n //2 args, first arg is not elem\n elem = component.$node[0];\n eventType = eventArgs[0];\n if (action == \"trigger\") {\n payload = eventArgs[1];\n }\n } else {\n //2+ args, first arg is elem\n elem = eventArgs[0];\n eventType = eventArgs[1];\n if (action == \"trigger\") {\n payload = eventArgs[2];\n }\n }\n\n name = typeof eventType == 'object' ? eventType.type : eventType;\n\n logFilter = window.DEBUG.events.logFilter;\n\n // no regex for you, actions...\n actionLoggable = logFilter.actions == 'all' || (logFilter.actions.indexOf(action) > -1);\n // event name filter allow wildcards or regex...\n toRegExp = function(expr) {\n return expr.test ? expr : new RegExp('^' + expr.replace(/\\*/g, '.*') + '$');\n };\n nameLoggable =\n logFilter.eventNames == 'all' ||\n logFilter.eventNames.some(function(e) {return toRegExp(e).test(name);});\n\n if (actionLoggable && nameLoggable) {\n info = [actionSymbols[action], action, '[' + name + ']'];\n payload && info.push(payload);\n info.push(elemToString(elem));\n info.push(component.constructor.describe.split(' ').slice(0,3).join(' '));\n console.groupCollapsed && action == 'trigger' && console.groupCollapsed(action, name);\n // IE9 doesn't define `apply` for console methods, but this works everywhere:\n Function.prototype.apply.call(console.info, console, info);\n }\n }\n\n function withLogging() {\n this.before('trigger', function() {\n log('trigger', this, utils.toArray(arguments));\n });\n if (console.groupCollapsed) {\n this.after('trigger', function() {\n console.groupEnd();\n });\n }\n this.before('on', function() {\n log('on', this, utils.toArray(arguments));\n });\n this.before('off', function() {\n log('off', this, utils.toArray(arguments));\n });\n }\n\n return withLogging;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n 'use strict';\n\n function parseEventArgs(instance, args) {\n var element, type, callback;\n var end = args.length;\n\n if (typeof args[end - 1] == 'function') {\n end -= 1;\n callback = args[end];\n }\n\n if (typeof args[end - 1] == 'object') {\n end -= 1;\n }\n\n if (end == 2) {\n element = args[0];\n type = args[1];\n } else {\n element = instance.node;\n type = args[0];\n }\n\n return {\n element: element,\n type: type,\n callback: callback\n };\n }\n\n function matchEvent(a, b) {\n return (\n (a.element == b.element) &&\n (a.type == b.type) &&\n (b.callback == null || (a.callback == b.callback))\n );\n }\n\n function Registry() {\n\n var registry = this;\n\n (this.reset = function() {\n this.components = [];\n this.allInstances = {};\n this.events = [];\n }).call(this);\n\n function ComponentInfo(component) {\n this.component = component;\n this.attachedTo = [];\n this.instances = {};\n\n this.addInstance = function(instance) {\n var instanceInfo = new InstanceInfo(instance);\n this.instances[instance.identity] = instanceInfo;\n this.attachedTo.push(instance.node);\n\n return instanceInfo;\n };\n\n this.removeInstance = function(instance) {\n delete this.instances[instance.identity];\n var indexOfNode = this.attachedTo.indexOf(instance.node);\n (indexOfNode > -1) && this.attachedTo.splice(indexOfNode, 1);\n\n if (!Object.keys(this.instances).length) {\n //if I hold no more instances remove me from registry\n registry.removeComponentInfo(this);\n }\n };\n\n this.isAttachedTo = function(node) {\n return this.attachedTo.indexOf(node) > -1;\n };\n }\n\n function InstanceInfo(instance) {\n this.instance = instance;\n this.events = [];\n\n this.addBind = function(event) {\n this.events.push(event);\n registry.events.push(event);\n };\n\n this.removeBind = function(event) {\n for (var i = 0, e; e = this.events[i]; i++) {\n if (matchEvent(e, event)) {\n this.events.splice(i, 1);\n }\n }\n };\n }\n\n this.addInstance = function(instance) {\n var component = this.findComponentInfo(instance);\n\n if (!component) {\n component = new ComponentInfo(instance.constructor);\n this.components.push(component);\n }\n\n var inst = component.addInstance(instance);\n\n this.allInstances[instance.identity] = inst;\n\n return component;\n };\n\n this.removeInstance = function(instance) {\n //remove from component info\n var componentInfo = this.findComponentInfo(instance);\n componentInfo && componentInfo.removeInstance(instance);\n\n //remove from registry\n delete this.allInstances[instance.identity];\n };\n\n this.removeComponentInfo = function(componentInfo) {\n var index = this.components.indexOf(componentInfo);\n (index > -1) && this.components.splice(index, 1);\n };\n\n this.findComponentInfo = function(which) {\n var component = which.attachTo ? which : which.constructor;\n\n for (var i = 0, c; c = this.components[i]; i++) {\n if (c.component === component) {\n return c;\n }\n }\n\n return null;\n };\n\n this.findInstanceInfo = function(instance) {\n return this.allInstances[instance.identity] || null;\n };\n\n this.getBoundEventNames = function(instance) {\n return this.findInstanceInfo(instance).events.map(function(ev) {\n return ev.type;\n });\n };\n\n this.findInstanceInfoByNode = function(node) {\n var result = [];\n Object.keys(this.allInstances).forEach(function(k) {\n var thisInstanceInfo = this.allInstances[k];\n if (thisInstanceInfo.instance.node === node) {\n result.push(thisInstanceInfo);\n }\n }, this);\n return result;\n };\n\n this.on = function(componentOn) {\n var instance = registry.findInstanceInfo(this), boundCallback;\n\n // unpacking arguments by hand benchmarked faster\n var l = arguments.length, i = 1;\n var otherArgs = new Array(l - 1);\n for (; i < l; i++) {\n otherArgs[i - 1] = arguments[i];\n }\n\n if (instance) {\n boundCallback = componentOn.apply(null, otherArgs);\n if (boundCallback) {\n otherArgs[otherArgs.length - 1] = boundCallback;\n }\n var event = parseEventArgs(this, otherArgs);\n instance.addBind(event);\n }\n };\n\n this.off = function(/*el, type, callback*/) {\n var event = parseEventArgs(this, arguments),\n instance = registry.findInstanceInfo(this);\n\n if (instance) {\n instance.removeBind(event);\n }\n\n //remove from global event registry\n for (var i = 0, e; e = registry.events[i]; i++) {\n if (matchEvent(e, event)) {\n registry.events.splice(i, 1);\n }\n }\n };\n\n // debug tools may want to add advice to trigger\n registry.trigger = function() {};\n\n this.teardown = function() {\n registry.removeInstance(this);\n };\n\n this.withRegistration = function() {\n this.after('initialize', function() {\n registry.addInstance(this);\n });\n\n this.around('on', registry.on);\n this.after('off', registry.off);\n //debug tools may want to add advice to trigger\n window.DEBUG && (false).enabled && this.after('trigger', registry.trigger);\n this.after('teardown', {obj: registry, fnName: 'teardown'});\n };\n\n }\n\n return new Registry;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(4)], __WEBPACK_AMD_DEFINE_RESULT__ = function(debug) {\n 'use strict';\n\n var DEFAULT_INTERVAL = 100;\n\n function canWriteProtect() {\n var writeProtectSupported = debug.enabled && !Object.propertyIsEnumerable('getOwnPropertyDescriptor');\n if (writeProtectSupported) {\n //IE8 getOwnPropertyDescriptor is built-in but throws exeption on non DOM objects\n try {\n Object.getOwnPropertyDescriptor(Object, 'keys');\n } catch (e) {\n return false;\n }\n }\n\n return writeProtectSupported;\n }\n\n var utils = {\n\n isDomObj: function(obj) {\n return !!(obj.nodeType || (obj === window));\n },\n\n toArray: function(obj, from) {\n from = from || 0;\n var len = obj.length, arr = new Array(len - from);\n for (var i = from; i < len; i++) {\n arr[i - from] = obj[i];\n }\n return arr;\n },\n\n // returns new object representing multiple objects merged together\n // optional final argument is boolean which specifies if merge is recursive\n // original objects are unmodified\n //\n // usage:\n // var base = {a:2, b:6};\n // var extra = {b:3, c:4};\n // merge(base, extra); //{a:2, b:3, c:4}\n // base; //{a:2, b:6}\n //\n // var base = {a:2, b:6};\n // var extra = {b:3, c:4};\n // var extraExtra = {a:4, d:9};\n // merge(base, extra, extraExtra); //{a:4, b:3, c:4. d: 9}\n // base; //{a:2, b:6}\n //\n // var base = {a:2, b:{bb:4, cc:5}};\n // var extra = {a:4, b:{cc:7, dd:1}};\n // merge(base, extra, true); //{a:4, b:{bb:4, cc:7, dd:1}}\n // base; //{a:2, b:{bb:4, cc:5}};\n\n merge: function(/*obj1, obj2,....deepCopy*/) {\n // unpacking arguments by hand benchmarked faster\n var l = arguments.length,\n args = new Array(l + 1);\n\n if (l === 0) {\n return {};\n }\n\n for (var i = 0; i < l; i++) {\n args[i + 1] = arguments[i];\n }\n\n //start with empty object so a copy is created\n args[0] = {};\n\n if (args[args.length - 1] === true) {\n //jquery extend requires deep copy as first arg\n args.pop();\n args.unshift(true);\n }\n\n return $.extend.apply(undefined, args);\n },\n\n // updates base in place by copying properties of extra to it\n // optionally clobber protected\n // usage:\n // var base = {a:2, b:6};\n // var extra = {c:4};\n // push(base, extra); //{a:2, b:6, c:4}\n // base; //{a:2, b:6, c:4}\n //\n // var base = {a:2, b:6};\n // var extra = {b: 4 c:4};\n // push(base, extra, true); //Error (\"utils.push attempted to overwrite 'b' while running in protected mode\")\n // base; //{a:2, b:6}\n //\n // objects with the same key will merge recursively when protect is false\n // eg:\n // var base = {a:16, b:{bb:4, cc:10}};\n // var extra = {b:{cc:25, dd:19}, c:5};\n // push(base, extra); //{a:16, {bb:4, cc:25, dd:19}, c:5}\n //\n push: function(base, extra, protect) {\n if (base) {\n Object.keys(extra || {}).forEach(function(key) {\n if (base[key] && protect) {\n throw new Error('utils.push attempted to overwrite \"' + key + '\" while running in protected mode');\n }\n\n if (typeof base[key] == 'object' && typeof extra[key] == 'object') {\n // recurse\n this.push(base[key], extra[key]);\n } else {\n // no protect, so extra wins\n base[key] = extra[key];\n }\n }, this);\n }\n\n return base;\n },\n\n // If obj.key points to an enumerable property, return its value\n // If obj.key points to a non-enumerable property, return undefined\n getEnumerableProperty: function(obj, key) {\n return obj.propertyIsEnumerable(key) ? obj[key] : undefined;\n },\n\n // build a function from other function(s)\n // utils.compose(a,b,c) -> a(b(c()));\n // implementation lifted from underscore.js (c) 2009-2012 Jeremy Ashkenas\n compose: function() {\n var funcs = arguments;\n\n return function() {\n var args = arguments;\n\n for (var i = funcs.length - 1; i >= 0; i--) {\n args = [funcs[i].apply(this, args)];\n }\n\n return args[0];\n };\n },\n\n // Can only unique arrays of homogeneous primitives, e.g. an array of only strings, an array of only booleans, or an array of only numerics\n uniqueArray: function(array) {\n var u = {}, a = [];\n\n for (var i = 0, l = array.length; i < l; ++i) {\n if (u.hasOwnProperty(array[i])) {\n continue;\n }\n\n a.push(array[i]);\n u[array[i]] = 1;\n }\n\n return a;\n },\n\n debounce: function(func, wait, immediate) {\n if (typeof wait != 'number') {\n wait = DEFAULT_INTERVAL;\n }\n\n var timeout, result;\n\n return function() {\n var context = this, args = arguments;\n var later = function() {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n }\n };\n var callNow = immediate && !timeout;\n\n timeout && clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n\n if (callNow) {\n result = func.apply(context, args);\n }\n\n return result;\n };\n },\n\n throttle: function(func, wait) {\n if (typeof wait != 'number') {\n wait = DEFAULT_INTERVAL;\n }\n\n var context, args, timeout, throttling, more, result;\n var whenDone = this.debounce(function() {\n more = throttling = false;\n }, wait);\n\n return function() {\n context = this; args = arguments;\n var later = function() {\n timeout = null;\n if (more) {\n result = func.apply(context, args);\n }\n whenDone();\n };\n\n if (!timeout) {\n timeout = setTimeout(later, wait);\n }\n\n if (throttling) {\n more = true;\n } else {\n throttling = true;\n result = func.apply(context, args);\n }\n\n whenDone();\n return result;\n };\n },\n\n countThen: function(num, base) {\n return function() {\n if (!--num) { return base.apply(this, arguments); }\n };\n },\n\n delegate: function(rules) {\n return function(e, data) {\n var target = $(e.target), parent;\n\n Object.keys(rules).forEach(function(selector) {\n if (!e.isPropagationStopped() && (parent = target.closest(selector)).length) {\n data = data || {};\n e.currentTarget = data.el = parent[0];\n return rules[selector].apply(this, [e, data]);\n }\n }, this);\n };\n },\n\n // ensures that a function will only be called once.\n // usage:\n // will only create the application once\n // var initialize = utils.once(createApplication)\n // initialize();\n // initialize();\n //\n // will only delete a record once\n // var myHanlder = function () {\n // $.ajax({type: 'DELETE', url: 'someurl.com', data: {id: 1}});\n // };\n // this.on('click', utils.once(myHandler));\n //\n once: function(func) {\n var ran, result;\n\n return function() {\n if (ran) {\n return result;\n }\n\n ran = true;\n result = func.apply(this, arguments);\n\n return result;\n };\n },\n\n propertyWritability: function(obj, prop, writable) {\n if (canWriteProtect() && obj.hasOwnProperty(prop)) {\n Object.defineProperty(obj, prop, { writable: writable });\n }\n },\n\n // Property locking/unlocking\n mutateProperty: function(obj, prop, op) {\n var writable;\n\n if (!canWriteProtect() || !obj.hasOwnProperty(prop)) {\n op.call(obj);\n return;\n }\n\n writable = Object.getOwnPropertyDescriptor(obj, prop).writable;\n\n Object.defineProperty(obj, prop, { writable: true });\n op.call(obj);\n Object.defineProperty(obj, prop, { writable: writable });\n\n }\n\n };\n\n return utils;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(7),\n __webpack_require__(6),\n __webpack_require__(4)\n ], __WEBPACK_AMD_DEFINE_RESULT__ = function(utils, registry, debug) {\n 'use strict';\n\n // common mixin allocates basic functionality - used by all component prototypes\n // callback context is bound to component\n var componentId = 0;\n\n function teardownInstance(instanceInfo) {\n if (!instanceInfo) { return; }\n\n instanceInfo.events.slice().forEach(function(event) {\n var args = [event.type];\n\n event.element && args.unshift(event.element);\n (typeof event.callback == 'function') && args.push(event.callback);\n\n this.off.apply(this, args);\n }, instanceInfo.instance);\n }\n\n function checkSerializable(type, data) {\n try {\n window.postMessage(data, '*');\n } catch (e) {\n debug.warn.call(this, [\n 'Event \"', type, '\" was triggered with non-serializable data. ',\n 'Flight recommends you avoid passing non-serializable data in events.'\n ].join(''));\n }\n }\n\n function warnAboutReferenceType(key) {\n debug.warn.call(this, [\n 'Attribute \"', key, '\" defaults to an array or object. ',\n 'Enclose this in a function to avoid sharing between component instances.'\n ].join(''));\n }\n\n function initAttributes(attrs) {\n var definedKeys = [], incomingKeys;\n\n this.attr = new this.attrDef;\n\n if (debug.enabled && window.console) {\n for (var key in this.attrDef.prototype) {\n definedKeys.push(key);\n }\n incomingKeys = Object.keys(attrs);\n\n for (var i = incomingKeys.length - 1; i >= 0; i--) {\n if (definedKeys.indexOf(incomingKeys[i]) == -1) {\n debug.warn.call(this, 'Passed unused attribute \"' + incomingKeys[i] + '\".');\n break;\n }\n }\n }\n\n for (var key in this.attrDef.prototype) {\n if (typeof attrs[key] == 'undefined') {\n if (this.attr[key] === null) {\n throw new Error('Required attribute \"' + key +\n '\" not specified in attachTo for component \"' + this.toString() + '\".');\n }\n // Warn about reference types in attributes\n if (debug.enabled && typeof this.attr[key] === 'object') {\n warnAboutReferenceType.call(this, key);\n }\n } else {\n this.attr[key] = attrs[key];\n }\n\n if (typeof this.attr[key] == 'function') {\n this.attr[key] = this.attr[key].call(this);\n }\n }\n\n }\n\n function initDeprecatedAttributes(attrs) {\n if (debug.enabled) {\n debug.warn.call(this, 'defaultAttrs will be removed in a future version. Please use attributes.');\n }\n\n // merge defaults with supplied options\n // put options in attr.__proto__ to avoid merge overhead\n var attr = Object.create(attrs);\n\n for (var key in this.defaults) {\n if (!attrs.hasOwnProperty(key)) {\n attr[key] = this.defaults[key];\n // Warn about reference types in defaultAttrs\n if (debug.enabled && typeof this.defaults[key] === 'object') {\n warnAboutReferenceType.call(this, key);\n }\n }\n }\n\n this.attr = attr;\n\n Object.keys(this.defaults || {}).forEach(function(key) {\n if (this.defaults[key] === null && this.attr[key] === null) {\n throw new Error('Required attribute \"' + key +\n '\" not specified in attachTo for component \"' + this.toString() + '\".');\n }\n }, this);\n }\n\n function proxyEventTo(targetEvent) {\n return function(e, data) {\n $(e.target).trigger(targetEvent, data);\n };\n }\n\n function withBase() {\n\n // delegate trigger, bind and unbind to an element\n // if $element not supplied, use component's node\n // other arguments are passed on\n // event can be either a string specifying the type\n // of the event, or a hash specifying both the type\n // and a default function to be called.\n this.trigger = function() {\n var $element, type, data, event, defaultFn;\n var lastIndex = arguments.length - 1, lastArg = arguments[lastIndex];\n\n if (typeof lastArg != 'string' && !(lastArg && lastArg.defaultBehavior)) {\n lastIndex--;\n data = lastArg;\n }\n\n if (lastIndex == 1) {\n $element = $(arguments[0]);\n event = arguments[1];\n } else {\n $element = this.$node;\n event = arguments[0];\n }\n\n if (event.defaultBehavior) {\n defaultFn = event.defaultBehavior;\n event = $.Event(event.type);\n }\n\n type = event.type || event;\n\n if (debug.enabled && window.postMessage) {\n checkSerializable.call(this, type, data);\n }\n\n if (typeof this.attr.eventData == 'object') {\n data = $.extend(true, {}, this.attr.eventData, data);\n }\n\n $element.trigger((event || type), data);\n\n if (defaultFn && !event.isDefaultPrevented()) {\n (this[defaultFn] || defaultFn).call(this, event, data);\n }\n\n return $element;\n };\n\n\n this.on = function() {\n var $element, type, callback, originalCb;\n var lastIndex = arguments.length - 1, origin = arguments[lastIndex];\n\n if (typeof origin == 'object') {\n //delegate callback\n originalCb = utils.delegate(\n this.resolveDelegateRules(origin)\n );\n } else if (typeof origin == 'string') {\n originalCb = proxyEventTo(origin);\n } else {\n originalCb = origin;\n }\n\n if (lastIndex == 2) {\n $element = $(arguments[0]);\n type = arguments[1];\n } else {\n $element = this.$node;\n type = arguments[0];\n }\n\n if (typeof originalCb != 'function' && typeof originalCb != 'object') {\n throw new Error('Unable to bind to \"' + type +\n '\" because the given callback is not a function or an object');\n }\n\n callback = originalCb.bind(this);\n callback.target = originalCb;\n callback.context = this;\n\n $element.on(type, callback);\n\n // store every bound version of the callback\n originalCb.bound || (originalCb.bound = []);\n originalCb.bound.push(callback);\n\n return callback;\n };\n\n this.off = function() {\n var $element, type, callback;\n var lastIndex = arguments.length - 1;\n\n if (typeof arguments[lastIndex] == 'function') {\n callback = arguments[lastIndex];\n lastIndex -= 1;\n }\n\n if (lastIndex == 1) {\n $element = $(arguments[0]);\n type = arguments[1];\n } else {\n $element = this.$node;\n type = arguments[0];\n }\n\n if (callback) {\n //this callback may be the original function or a bound version\n var boundFunctions = callback.target ? callback.target.bound : callback.bound || [];\n //set callback to version bound against this instance\n boundFunctions && boundFunctions.some(function(fn, i, arr) {\n if (fn.context && (this.identity == fn.context.identity)) {\n arr.splice(i, 1);\n callback = fn;\n return true;\n }\n }, this);\n $element.off(type, callback);\n } else {\n // Loop through the events of `this` instance\n // and unbind using the callback\n registry.findInstanceInfo(this).events.forEach(function (event) {\n if (type == event.type) {\n $element.off(type, event.callback);\n }\n });\n }\n\n return $element;\n };\n\n this.resolveDelegateRules = function(ruleInfo) {\n var rules = {};\n\n Object.keys(ruleInfo).forEach(function(r) {\n if (!(r in this.attr)) {\n throw new Error('Component \"' + this.toString() + '\" wants to listen on \"' + r + '\" but no such attribute was defined.');\n }\n rules[this.attr[r]] = (typeof ruleInfo[r] == 'string') ? proxyEventTo(ruleInfo[r]) : ruleInfo[r];\n }, this);\n\n return rules;\n };\n\n this.select = function(attributeKey) {\n return this.$node.find(this.attr[attributeKey]);\n };\n\n // New-style attributes\n\n this.attributes = function(attrs) {\n\n var Attributes = function() {};\n\n if (this.attrDef) {\n Attributes.prototype = new this.attrDef;\n }\n\n for (var name in attrs) {\n Attributes.prototype[name] = attrs[name];\n }\n\n this.attrDef = Attributes;\n };\n\n // Deprecated attributes\n\n this.defaultAttrs = function(defaults) {\n utils.push(this.defaults, defaults, true) || (this.defaults = defaults);\n };\n\n this.initialize = function(node, attrs) {\n attrs = attrs || {};\n this.identity || (this.identity = componentId++);\n\n if (!node) {\n throw new Error('Component needs a node');\n }\n\n if (node.jquery) {\n this.node = node[0];\n this.$node = node;\n } else {\n this.node = node;\n this.$node = $(node);\n }\n\n if (this.attrDef) {\n initAttributes.call(this, attrs);\n } else {\n initDeprecatedAttributes.call(this, attrs);\n }\n\n return this;\n };\n\n this.teardown = function() {\n var instanceInfo = registry.findInstanceInfo(this);\n\n if (instanceInfo) {\n teardownInstance(instanceInfo);\n }\n };\n }\n\n return withBase;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ }\n/******/ ])\n});\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\nfunction customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n}\n\nmodule.exports = customDefaultsAssignIn;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map characters to HTML entities. */\nvar htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n\n/**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\nvar escapeHtmlChar = basePropertyOf(htmlEscapes);\n\nmodule.exports = escapeHtmlChar;\n","/** Used to escape characters for inclusion in compiled string literals. */\nvar stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\n/**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\nfunction escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n}\n\nmodule.exports = escapeStringChar;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/** Used to match template delimiters. */\nvar reEscape = /<%-([\\s\\S]+?)%>/g;\n\nmodule.exports = reEscape;\n","/** Used to match template delimiters. */\nvar reEvaluate = /<%([\\s\\S]+?)%>/g;\n\nmodule.exports = reEvaluate;\n","/** Used to match template delimiters. */\nvar reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\nmodule.exports = reInterpolate;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var copyObject = require('./_copyObject'),\n createAssigner = require('./_createAssigner'),\n keysIn = require('./keysIn');\n\n/**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n});\n\nmodule.exports = assignInWith;\n","var apply = require('./_apply'),\n baseRest = require('./_baseRest'),\n isError = require('./isError');\n\n/**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\nvar attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n});\n\nmodule.exports = attempt;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var escapeHtmlChar = require('./_escapeHtmlChar'),\n toString = require('./toString');\n\n/** Used to match HTML entities and HTML characters. */\nvar reUnescapedHtml = /[&<>\"']/g,\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n/**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\nfunction escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n}\n\nmodule.exports = escape;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike'),\n isPlainObject = require('./isPlainObject');\n\n/** `Object#toString` result references. */\nvar domExcTag = '[object DOMException]',\n errorTag = '[object Error]';\n\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\nfunction isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n}\n\nmodule.exports = isError;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","var baseIteratee = require('./_baseIteratee'),\n negate = require('./negate'),\n pickBy = require('./pickBy');\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n return pickBy(object, negate(baseIteratee(predicate)));\n}\n\nmodule.exports = omitBy;\n","var assignInWith = require('./assignInWith'),\n attempt = require('./attempt'),\n baseValues = require('./_baseValues'),\n customDefaultsAssignIn = require('./_customDefaultsAssignIn'),\n escapeStringChar = require('./_escapeStringChar'),\n isError = require('./isError'),\n isIterateeCall = require('./_isIterateeCall'),\n keys = require('./keys'),\n reInterpolate = require('./_reInterpolate'),\n templateSettings = require('./templateSettings'),\n toString = require('./toString');\n\n/** Error message constants. */\nvar INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n/** Used to match empty string literals in compiled template source. */\nvar reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n/**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\nvar reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n/**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\nvar reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n/** Used to ensure capturing order of template delimiters. */\nvar reNoMatch = /($^)/;\n\n/** Used to match unescaped characters in compiled string literals. */\nvar reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '