summaryrefslogtreecommitdiffhomepage
path: root/401.bdae6943931998cef4fd.js.map
blob: 6fdf7eab330cc2e3cc6b96bfd926e6ff07d6807a (plain)
1
{"version":3,"file":"401.bdae6943931998cef4fd.js","mappings":"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","sources":["webpack:///./node_modules/error-stack-parser/error-stack-parser.js","webpack:///./node_modules/stack-generator/stack-generator.js","webpack:///./node_modules/stackframe/stackframe.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/array-set.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/base64-vlq.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/base64.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/binary-search.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/mapping-list.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/quick-sort.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-map-consumer.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-map-generator.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-node.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/util.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/source-map.js","webpack:///./node_modules/stacktrace-gps/stacktrace-gps.js","webpack:///./node_modules/stacktrace-js/stacktrace.js"],"sourcesContent":["(function(root, factory) {\n    'use strict';\n    // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n    /* istanbul ignore next */\n    if (typeof define === 'function' && define.amd) {\n        define('error-stack-parser', ['stackframe'], factory);\n    } else if (typeof exports === 'object') {\n        module.exports = factory(require('stackframe'));\n    } else {\n        root.ErrorStackParser = factory(root.StackFrame);\n    }\n}(this, function ErrorStackParser(StackFrame) {\n    'use strict';\n\n    var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\n    var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n    var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\n\n    return {\n        /**\n         * Given an Error object, extract the most information from it.\n         *\n         * @param {Error} error object\n         * @return {Array} of StackFrames\n         */\n        parse: function ErrorStackParser$$parse(error) {\n            if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n                return this.parseOpera(error);\n            } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n                return this.parseV8OrIE(error);\n            } else if (error.stack) {\n                return this.parseFFOrSafari(error);\n            } else {\n                throw new Error('Cannot parse given Error object');\n            }\n        },\n\n        // Separate line and column numbers from a string of the form: (URI:Line:Column)\n        extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n            // Fail-fast but return locations like \"(native)\"\n            if (urlLike.indexOf(':') === -1) {\n                return [urlLike];\n            }\n\n            var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n            var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n            return [parts[1], parts[2] || undefined, parts[3] || undefined];\n        },\n\n        parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n            var filtered = error.stack.split('\\n').filter(function(line) {\n                return !!line.match(CHROME_IE_STACK_REGEXP);\n            }, this);\n\n            return filtered.map(function(line) {\n                if (line.indexOf('(eval ') > -1) {\n                    // Throw away eval information until we implement stacktrace.js/stackframe#8\n                    line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^()]*)|(,.*$)/g, '');\n                }\n                var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(').replace(/^.*?\\s+/, '');\n\n                // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n                // case it has spaces in it, as the string is split on \\s+ later on\n                var location = sanitizedLine.match(/ (\\(.+\\)$)/);\n\n                // remove the parenthesized location from the line, if it was matched\n                sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n\n                // if a location was matched, pass it to extractLocation() otherwise pass all sanitizedLine\n                // because this line doesn't have function name\n                var locationParts = this.extractLocation(location ? location[1] : sanitizedLine);\n                var functionName = location && sanitizedLine || undefined;\n                var fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n\n                return new StackFrame({\n                    functionName: functionName,\n                    fileName: fileName,\n                    lineNumber: locationParts[1],\n                    columnNumber: locationParts[2],\n                    source: line\n                });\n            }, this);\n        },\n\n        parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n            var filtered = error.stack.split('\\n').filter(function(line) {\n                return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n            }, this);\n\n            return filtered.map(function(line) {\n                // Throw away eval information until we implement stacktrace.js/stackframe#8\n                if (line.indexOf(' > eval') > -1) {\n                    line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n                }\n\n                if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n                    // Safari eval frames only have function names and nothing else\n                    return new StackFrame({\n                        functionName: line\n                    });\n                } else {\n                    var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n                    var matches = line.match(functionNameRegex);\n                    var functionName = matches && matches[1] ? matches[1] : undefined;\n                    var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n\n                    return new StackFrame({\n                        functionName: functionName,\n                        fileName: locationParts[0],\n                        lineNumber: locationParts[1],\n                        columnNumber: locationParts[2],\n                        source: line\n                    });\n                }\n            }, this);\n        },\n\n        parseOpera: function ErrorStackParser$$parseOpera(e) {\n            if (!e.stacktrace || (e.message.indexOf('\\n') > -1 &&\n                e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n                return this.parseOpera9(e);\n            } else if (!e.stack) {\n                return this.parseOpera10(e);\n            } else {\n                return this.parseOpera11(e);\n            }\n        },\n\n        parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n            var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n            var lines = e.message.split('\\n');\n            var result = [];\n\n            for (var i = 2, len = lines.length; i < len; i += 2) {\n                var match = lineRE.exec(lines[i]);\n                if (match) {\n                    result.push(new StackFrame({\n                        fileName: match[2],\n                        lineNumber: match[1],\n                        source: lines[i]\n                    }));\n                }\n            }\n\n            return result;\n        },\n\n        parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n            var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n            var lines = e.stacktrace.split('\\n');\n            var result = [];\n\n            for (var i = 0, len = lines.length; i < len; i += 2) {\n                var match = lineRE.exec(lines[i]);\n                if (match) {\n                    result.push(\n                        new StackFrame({\n                            functionName: match[3] || undefined,\n                            fileName: match[2],\n                            lineNumber: match[1],\n                            source: lines[i]\n                        })\n                    );\n                }\n            }\n\n            return result;\n        },\n\n        // Opera 10.65+ Error.stack very similar to FF/Safari\n        parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n            var filtered = error.stack.split('\\n').filter(function(line) {\n                return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n            }, this);\n\n            return filtered.map(function(line) {\n                var tokens = line.split('@');\n                var locationParts = this.extractLocation(tokens.pop());\n                var functionCall = (tokens.shift() || '');\n                var functionName = functionCall\n                    .replace(/<anonymous function(: (\\w+))?>/, '$2')\n                    .replace(/\\([^)]*\\)/g, '') || undefined;\n                var argsRaw;\n                if (functionCall.match(/\\(([^)]*)\\)/)) {\n                    argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, '$1');\n                }\n                var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?\n                    undefined : argsRaw.split(',');\n\n                return new StackFrame({\n                    functionName: functionName,\n                    args: args,\n                    fileName: locationParts[0],\n                    lineNumber: locationParts[1],\n                    columnNumber: locationParts[2],\n                    source: line\n                });\n            }, this);\n        }\n    };\n}));\n","(function(root, factory) {\n    'use strict';\n    // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n    /* istanbul ignore next */\n    if (typeof define === 'function' && define.amd) {\n        define('stack-generator', ['stackframe'], factory);\n    } else if (typeof exports === 'object') {\n        module.exports = factory(require('stackframe'));\n    } else {\n        root.StackGenerator = factory(root.StackFrame);\n    }\n}(this, function(StackFrame) {\n    return {\n        backtrace: function StackGenerator$$backtrace(opts) {\n            var stack = [];\n            var maxStackSize = 10;\n\n            if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') {\n                maxStackSize = opts.maxStackSize;\n            }\n\n            var curr = arguments.callee;\n            while (curr && stack.length < maxStackSize && curr['arguments']) {\n                // Allow V8 optimizations\n                var args = new Array(curr['arguments'].length);\n                for (var i = 0; i < args.length; ++i) {\n                    args[i] = curr['arguments'][i];\n                }\n                if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n                    stack.push(new StackFrame({functionName: RegExp.$1 || undefined, args: args}));\n                } else {\n                    stack.push(new StackFrame({args: args}));\n                }\n\n                try {\n                    curr = curr.caller;\n                } catch (e) {\n                    break;\n                }\n            }\n            return stack;\n        }\n    };\n}));\n","(function(root, factory) {\n    'use strict';\n    // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n    /* istanbul ignore next */\n    if (typeof define === 'function' && define.amd) {\n        define('stackframe', [], factory);\n    } else if (typeof exports === 'object') {\n        module.exports = factory();\n    } else {\n        root.StackFrame = factory();\n    }\n}(this, function() {\n    'use strict';\n    function _isNumber(n) {\n        return !isNaN(parseFloat(n)) && isFinite(n);\n    }\n\n    function _capitalize(str) {\n        return str.charAt(0).toUpperCase() + str.substring(1);\n    }\n\n    function _getter(p) {\n        return function() {\n            return this[p];\n        };\n    }\n\n    var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n    var numericProps = ['columnNumber', 'lineNumber'];\n    var stringProps = ['fileName', 'functionName', 'source'];\n    var arrayProps = ['args'];\n    var objectProps = ['evalOrigin'];\n\n    var props = booleanProps.concat(numericProps, stringProps, arrayProps, objectProps);\n\n    function StackFrame(obj) {\n        if (!obj) return;\n        for (var i = 0; i < props.length; i++) {\n            if (obj[props[i]] !== undefined) {\n                this['set' + _capitalize(props[i])](obj[props[i]]);\n            }\n        }\n    }\n\n    StackFrame.prototype = {\n        getArgs: function() {\n            return this.args;\n        },\n        setArgs: function(v) {\n            if (Object.prototype.toString.call(v) !== '[object Array]') {\n                throw new TypeError('Args must be an Array');\n            }\n            this.args = v;\n        },\n\n        getEvalOrigin: function() {\n            return this.evalOrigin;\n        },\n        setEvalOrigin: function(v) {\n            if (v instanceof StackFrame) {\n                this.evalOrigin = v;\n            } else if (v instanceof Object) {\n                this.evalOrigin = new StackFrame(v);\n            } else {\n                throw new TypeError('Eval Origin must be an Object or StackFrame');\n            }\n        },\n\n        toString: function() {\n            var fileName = this.getFileName() || '';\n            var lineNumber = this.getLineNumber() || '';\n            var columnNumber = this.getColumnNumber() || '';\n            var functionName = this.getFunctionName() || '';\n            if (this.getIsEval()) {\n                if (fileName) {\n                    return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n                }\n                return '[eval]:' + lineNumber + ':' + columnNumber;\n            }\n            if (functionName) {\n                return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n            }\n            return fileName + ':' + lineNumber + ':' + columnNumber;\n        }\n    };\n\n    StackFrame.fromString = function StackFrame$$fromString(str) {\n        var argsStartIndex = str.indexOf('(');\n        var argsEndIndex = str.lastIndexOf(')');\n\n        var functionName = str.substring(0, argsStartIndex);\n        var args = str.substring(argsStartIndex + 1, argsEndIndex).split(',');\n        var locationString = str.substring(argsEndIndex + 1);\n\n        if (locationString.indexOf('@') === 0) {\n            var parts = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString, '');\n            var fileName = parts[1];\n            var lineNumber = parts[2];\n            var columnNumber = parts[3];\n        }\n\n        return new StackFrame({\n            functionName: functionName,\n            args: args || undefined,\n            fileName: fileName,\n            lineNumber: lineNumber || undefined,\n            columnNumber: columnNumber || undefined\n        });\n    };\n\n    for (var i = 0; i < booleanProps.length; i++) {\n        StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n        StackFrame.prototype['set' + _capitalize(booleanProps[i])] = (function(p) {\n            return function(v) {\n                this[p] = Boolean(v);\n            };\n        })(booleanProps[i]);\n    }\n\n    for (var j = 0; j < numericProps.length; j++) {\n        StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n        StackFrame.prototype['set' + _capitalize(numericProps[j])] = (function(p) {\n            return function(v) {\n                if (!_isNumber(v)) {\n                    throw new TypeError(p + ' must be a Number');\n                }\n                this[p] = Number(v);\n            };\n        })(numericProps[j]);\n    }\n\n    for (var k = 0; k < stringProps.length; k++) {\n        StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n        StackFrame.prototype['set' + _capitalize(stringProps[k])] = (function(p) {\n            return function(v) {\n                this[p] = String(v);\n            };\n        })(stringProps[k]);\n    }\n\n    return StackFrame;\n}));\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n  this._array = [];\n  this._set = Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n  var set = new ArraySet();\n  for (var i = 0, len = aArray.length; i < len; i++) {\n    set.add(aArray[i], aAllowDuplicates);\n  }\n  return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n  return Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n  var sStr = util.toSetString(aStr);\n  var isDuplicate = has.call(this._set, sStr);\n  var idx = this._array.length;\n  if (!isDuplicate || aAllowDuplicates) {\n    this._array.push(aStr);\n  }\n  if (!isDuplicate) {\n    this._set[sStr] = idx;\n  }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n  var sStr = util.toSetString(aStr);\n  return has.call(this._set, sStr);\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n  var sStr = util.toSetString(aStr);\n  if (has.call(this._set, sStr)) {\n    return this._set[sStr];\n  }\n  throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n  if (aIdx >= 0 && aIdx < this._array.length) {\n    return this._array[aIdx];\n  }\n  throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n  return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n *  * Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n *  * Redistributions in binary form must reproduce the above\n *    copyright notice, this list of conditions and the following\n *    disclaimer in the documentation and/or other materials provided\n *    with the distribution.\n *  * Neither the name of Google Inc. nor the names of its\n *    contributors may be used to endorse or promote products derived\n *    from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n//   Continuation\n//   |    Sign\n//   |    |\n//   V    V\n//   101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n *   2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n  return aValue < 0\n    ? ((-aValue) << 1) + 1\n    : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n *   4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n  var isNegative = (aValue & 1) === 1;\n  var shifted = aValue >> 1;\n  return isNegative\n    ? -shifted\n    : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n  var encoded = \"\";\n  var digit;\n\n  var vlq = toVLQSigned(aValue);\n\n  do {\n    digit = vlq & VLQ_BASE_MASK;\n    vlq >>>= VLQ_BASE_SHIFT;\n    if (vlq > 0) {\n      // There are still more digits in this value, so we must make sure the\n      // continuation bit is marked.\n      digit |= VLQ_CONTINUATION_BIT;\n    }\n    encoded += base64.encode(digit);\n  } while (vlq > 0);\n\n  return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n  var strLen = aStr.length;\n  var result = 0;\n  var shift = 0;\n  var continuation, digit;\n\n  do {\n    if (aIndex >= strLen) {\n      throw new Error(\"Expected more digits in base 64 VLQ value.\");\n    }\n\n    digit = base64.decode(aStr.charCodeAt(aIndex++));\n    if (digit === -1) {\n      throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n    }\n\n    continuation = !!(digit & VLQ_CONTINUATION_BIT);\n    digit &= VLQ_BASE_MASK;\n    result = result + (digit << shift);\n    shift += VLQ_BASE_SHIFT;\n  } while (continuation);\n\n  aOutParam.value = fromVLQSigned(result);\n  aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n  if (0 <= number && number < intToCharMap.length) {\n    return intToCharMap[number];\n  }\n  throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n  var bigA = 65;     // 'A'\n  var bigZ = 90;     // 'Z'\n\n  var littleA = 97;  // 'a'\n  var littleZ = 122; // 'z'\n\n  var zero = 48;     // '0'\n  var nine = 57;     // '9'\n\n  var plus = 43;     // '+'\n  var slash = 47;    // '/'\n\n  var littleOffset = 26;\n  var numberOffset = 52;\n\n  // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n  if (bigA <= charCode && charCode <= bigZ) {\n    return (charCode - bigA);\n  }\n\n  // 26 - 51: abcdefghijklmnopqrstuvwxyz\n  if (littleA <= charCode && charCode <= littleZ) {\n    return (charCode - littleA + littleOffset);\n  }\n\n  // 52 - 61: 0123456789\n  if (zero <= charCode && charCode <= nine) {\n    return (charCode - zero + numberOffset);\n  }\n\n  // 62: +\n  if (charCode == plus) {\n    return 62;\n  }\n\n  // 63: /\n  if (charCode == slash) {\n    return 63;\n  }\n\n  // Invalid base64 digit.\n  return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n  // This function terminates when one of the following is true:\n  //\n  //   1. We find the exact element we are looking for.\n  //\n  //   2. We did not find the exact element, but we can return the index of\n  //      the next-closest element.\n  //\n  //   3. We did not find the exact element, and there is no next-closest\n  //      element than the one we are searching for, so we return -1.\n  var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n  var cmp = aCompare(aNeedle, aHaystack[mid], true);\n  if (cmp === 0) {\n    // Found the element we are looking for.\n    return mid;\n  }\n  else if (cmp > 0) {\n    // Our needle is greater than aHaystack[mid].\n    if (aHigh - mid > 1) {\n      // The element is in the upper half.\n      return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n    }\n\n    // The exact needle element was not found in this haystack. Determine if\n    // we are in termination case (3) or (2) and return the appropriate thing.\n    if (aBias == exports.LEAST_UPPER_BOUND) {\n      return aHigh < aHaystack.length ? aHigh : -1;\n    } else {\n      return mid;\n    }\n  }\n  else {\n    // Our needle is less than aHaystack[mid].\n    if (mid - aLow > 1) {\n      // The element is in the lower half.\n      return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n    }\n\n    // we are in termination case (3) or (2) and return the appropriate thing.\n    if (aBias == exports.LEAST_UPPER_BOUND) {\n      return mid;\n    } else {\n      return aLow < 0 ? -1 : aLow;\n    }\n  }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n *     array and returns -1, 0, or 1 depending on whether the needle is less\n *     than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n  if (aHaystack.length === 0) {\n    return -1;\n  }\n\n  var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n                              aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n  if (index < 0) {\n    return -1;\n  }\n\n  // We have found either the exact element, or the next-closest element than\n  // the one we are searching for. However, there may be more than one such\n  // element. Make sure we always return the smallest of these.\n  while (index - 1 >= 0) {\n    if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n      break;\n    }\n    --index;\n  }\n\n  return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n  // Optimized for most common case\n  var lineA = mappingA.generatedLine;\n  var lineB = mappingB.generatedLine;\n  var columnA = mappingA.generatedColumn;\n  var columnB = mappingB.generatedColumn;\n  return lineB > lineA || lineB == lineA && columnB >= columnA ||\n         util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n  this._array = [];\n  this._sorted = true;\n  // Serves as infimum\n  this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n  function MappingList_forEach(aCallback, aThisArg) {\n    this._array.forEach(aCallback, aThisArg);\n  };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n  if (generatedPositionAfter(this._last, aMapping)) {\n    this._last = aMapping;\n    this._array.push(aMapping);\n  } else {\n    this._sorted = false;\n    this._array.push(aMapping);\n  }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n  if (!this._sorted) {\n    this._array.sort(util.compareByGeneratedPositionsInflated);\n    this._sorted = true;\n  }\n  return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n *        The array.\n * @param {Number} x\n *        The index of the first item.\n * @param {Number} y\n *        The index of the second item.\n */\nfunction swap(ary, x, y) {\n  var temp = ary[x];\n  ary[x] = ary[y];\n  ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n *        The lower bound on the range.\n * @param {Number} high\n *        The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n  return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n *        An array to sort.\n * @param {function} comparator\n *        Function to use to compare two items.\n * @param {Number} p\n *        Start index of the array\n * @param {Number} r\n *        End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n  // If our lower bound is less than our upper bound, we (1) partition the\n  // array into two pieces and (2) recurse on each half. If it is not, this is\n  // the empty array and our base case.\n\n  if (p < r) {\n    // (1) Partitioning.\n    //\n    // The partitioning chooses a pivot between `p` and `r` and moves all\n    // elements that are less than or equal to the pivot to the before it, and\n    // all the elements that are greater than it after it. The effect is that\n    // once partition is done, the pivot is in the exact place it will be when\n    // the array is put in sorted order, and it will not need to be moved\n    // again. This runs in O(n) time.\n\n    // Always choose a random pivot so that an input array which is reverse\n    // sorted does not cause O(n^2) running time.\n    var pivotIndex = randomIntInRange(p, r);\n    var i = p - 1;\n\n    swap(ary, pivotIndex, r);\n    var pivot = ary[r];\n\n    // Immediately after `j` is incremented in this loop, the following hold\n    // true:\n    //\n    //   * Every element in `ary[p .. i]` is less than or equal to the pivot.\n    //\n    //   * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n    for (var j = p; j < r; j++) {\n      if (comparator(ary[j], pivot) <= 0) {\n        i += 1;\n        swap(ary, i, j);\n      }\n    }\n\n    swap(ary, i + 1, j);\n    var q = i + 1;\n\n    // (2) Recurse on each half.\n\n    doQuickSort(ary, comparator, p, q - 1);\n    doQuickSort(ary, comparator, q + 1, r);\n  }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n *        An array to sort.\n * @param {function} comparator\n *        Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n  doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n  }\n\n  return sourceMap.sections != null\n    ? new IndexedSourceMapConsumer(sourceMap)\n    : new BasicSourceMapConsumer(sourceMap);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap) {\n  return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n//     {\n//       generatedLine: The line number in the generated code,\n//       generatedColumn: The column number in the generated code,\n//       source: The path to the original source file that generated this\n//               chunk of code,\n//       originalLine: The line number in the original source that\n//                     corresponds to this chunk of generated code,\n//       originalColumn: The column number in the original source that\n//                       corresponds to this chunk of generated code,\n//       name: The name of the original symbol which generated this chunk of\n//             code.\n//     }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n  get: function () {\n    if (!this.__generatedMappings) {\n      this._parseMappings(this._mappings, this.sourceRoot);\n    }\n\n    return this.__generatedMappings;\n  }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n  get: function () {\n    if (!this.__originalMappings) {\n      this._parseMappings(this._mappings, this.sourceRoot);\n    }\n\n    return this.__originalMappings;\n  }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n  function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n    var c = aStr.charAt(index);\n    return c === \";\" || c === \",\";\n  };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    throw new Error(\"Subclasses must implement _parseMappings\");\n  };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n *        The function that is called with each mapping.\n * @param Object aContext\n *        Optional. If specified, this object will be the value of `this` every\n *        time that `aCallback` is called.\n * @param aOrder\n *        Either `SourceMapConsumer.GENERATED_ORDER` or\n *        `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n *        iterate over the mappings sorted by the generated file's line/column\n *        order or the original's source/line/column order, respectively. Defaults to\n *        `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n  function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n    var context = aContext || null;\n    var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n    var mappings;\n    switch (order) {\n    case SourceMapConsumer.GENERATED_ORDER:\n      mappings = this._generatedMappings;\n      break;\n    case SourceMapConsumer.ORIGINAL_ORDER:\n      mappings = this._originalMappings;\n      break;\n    default:\n      throw new Error(\"Unknown order of iteration.\");\n    }\n\n    var sourceRoot = this.sourceRoot;\n    mappings.map(function (mapping) {\n      var source = mapping.source === null ? null : this._sources.at(mapping.source);\n      if (source != null && sourceRoot != null) {\n        source = util.join(sourceRoot, source);\n      }\n      return {\n        source: source,\n        generatedLine: mapping.generatedLine,\n        generatedColumn: mapping.generatedColumn,\n        originalLine: mapping.originalLine,\n        originalColumn: mapping.originalColumn,\n        name: mapping.name === null ? null : this._names.at(mapping.name)\n      };\n    }, this).forEach(aCallback, context);\n  };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.\n *   - column: Optional. the column number in the original source.\n *\n * and an array of objects is returned, each with the following properties:\n *\n *   - line: The line number in the generated source, or null.\n *   - column: The column number in the generated source, or null.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n  function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n    var line = util.getArg(aArgs, 'line');\n\n    // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n    // returns the index of the closest mapping less than the needle. By\n    // setting needle.originalColumn to 0, we thus find the last mapping for\n    // the given line, provided such a mapping exists.\n    var needle = {\n      source: util.getArg(aArgs, 'source'),\n      originalLine: line,\n      originalColumn: util.getArg(aArgs, 'column', 0)\n    };\n\n    if (this.sourceRoot != null) {\n      needle.source = util.relative(this.sourceRoot, needle.source);\n    }\n    if (!this._sources.has(needle.source)) {\n      return [];\n    }\n    needle.source = this._sources.indexOf(needle.source);\n\n    var mappings = [];\n\n    var index = this._findMapping(needle,\n                                  this._originalMappings,\n                                  \"originalLine\",\n                                  \"originalColumn\",\n                                  util.compareByOriginalPositions,\n                                  binarySearch.LEAST_UPPER_BOUND);\n    if (index >= 0) {\n      var mapping = this._originalMappings[index];\n\n      if (aArgs.column === undefined) {\n        var originalLine = mapping.originalLine;\n\n        // Iterate until either we run out of mappings, or we run into\n        // a mapping for a different line than the one we found. Since\n        // mappings are sorted, this is guaranteed to find all mappings for\n        // the line we found.\n        while (mapping && mapping.originalLine === originalLine) {\n          mappings.push({\n            line: util.getArg(mapping, 'generatedLine', null),\n            column: util.getArg(mapping, 'generatedColumn', null),\n            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n          });\n\n          mapping = this._originalMappings[++index];\n        }\n      } else {\n        var originalColumn = mapping.originalColumn;\n\n        // Iterate until either we run out of mappings, or we run into\n        // a mapping for a different line than the one we were searching for.\n        // Since mappings are sorted, this is guaranteed to find all mappings for\n        // the line we are searching for.\n        while (mapping &&\n               mapping.originalLine === line &&\n               mapping.originalColumn == originalColumn) {\n          mappings.push({\n            line: util.getArg(mapping, 'generatedLine', null),\n            column: util.getArg(mapping, 'generatedColumn', null),\n            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n          });\n\n          mapping = this._originalMappings[++index];\n        }\n      }\n    }\n\n    return mappings;\n  };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n *   - version: Which version of the source map spec this map is following.\n *   - sources: An array of URLs to the original source files.\n *   - names: An array of identifiers which can be referrenced by individual mappings.\n *   - sourceRoot: Optional. The URL root from which all sources are relative.\n *   - sourcesContent: Optional. An array of contents of the original source files.\n *   - mappings: A string of base64 VLQs which contain the actual mappings.\n *   - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n *     {\n *       version : 3,\n *       file: \"out.js\",\n *       sourceRoot : \"\",\n *       sources: [\"foo.js\", \"bar.js\"],\n *       names: [\"src\", \"maps\", \"are\", \"fun\"],\n *       mappings: \"AA,AB;;ABCDE;\"\n *     }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n  }\n\n  var version = util.getArg(sourceMap, 'version');\n  var sources = util.getArg(sourceMap, 'sources');\n  // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n  // requires the array) to play nice here.\n  var names = util.getArg(sourceMap, 'names', []);\n  var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n  var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n  var mappings = util.getArg(sourceMap, 'mappings');\n  var file = util.getArg(sourceMap, 'file', null);\n\n  // Once again, Sass deviates from the spec and supplies the version as a\n  // string rather than a number, so we use loose equality checking here.\n  if (version != this._version) {\n    throw new Error('Unsupported version: ' + version);\n  }\n\n  sources = sources\n    .map(String)\n    // Some source maps produce relative source paths like \"./foo.js\" instead of\n    // \"foo.js\".  Normalize these first so that future comparisons will succeed.\n    // See bugzil.la/1090768.\n    .map(util.normalize)\n    // Always ensure that absolute sources are internally stored relative to\n    // the source root, if the source root is absolute. Not doing this would\n    // be particularly problematic when the source root is a prefix of the\n    // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n    .map(function (source) {\n      return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n        ? util.relative(sourceRoot, source)\n        : source;\n    });\n\n  // Pass `true` below to allow duplicate names and sources. While source maps\n  // are intended to be compressed and deduplicated, the TypeScript compiler\n  // sometimes generates source maps with duplicates in them. See Github issue\n  // #72 and bugzil.la/889492.\n  this._names = ArraySet.fromArray(names.map(String), true);\n  this._sources = ArraySet.fromArray(sources, true);\n\n  this.sourceRoot = sourceRoot;\n  this.sourcesContent = sourcesContent;\n  this._mappings = mappings;\n  this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n *        The source map that will be consumed.\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n  function SourceMapConsumer_fromSourceMap(aSourceMap) {\n    var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n    var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n    var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n    smc.sourceRoot = aSourceMap._sourceRoot;\n    smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n                                                            smc.sourceRoot);\n    smc.file = aSourceMap._file;\n\n    // Because we are modifying the entries (by converting string sources and\n    // names to indices into the sources and names ArraySets), we have to make\n    // a copy of the entry or else bad things happen. Shared mutable state\n    // strikes again! See github issue #191.\n\n    var generatedMappings = aSourceMap._mappings.toArray().slice();\n    var destGeneratedMappings = smc.__generatedMappings = [];\n    var destOriginalMappings = smc.__originalMappings = [];\n\n    for (var i = 0, length = generatedMappings.length; i < length; i++) {\n      var srcMapping = generatedMappings[i];\n      var destMapping = new Mapping;\n      destMapping.generatedLine = srcMapping.generatedLine;\n      destMapping.generatedColumn = srcMapping.generatedColumn;\n\n      if (srcMapping.source) {\n        destMapping.source = sources.indexOf(srcMapping.source);\n        destMapping.originalLine = srcMapping.originalLine;\n        destMapping.originalColumn = srcMapping.originalColumn;\n\n        if (srcMapping.name) {\n          destMapping.name = names.indexOf(srcMapping.name);\n        }\n\n        destOriginalMappings.push(destMapping);\n      }\n\n      destGeneratedMappings.push(destMapping);\n    }\n\n    quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n    return smc;\n  };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n  get: function () {\n    return this._sources.toArray().map(function (s) {\n      return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n    }, this);\n  }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n  this.generatedLine = 0;\n  this.generatedColumn = 0;\n  this.source = null;\n  this.originalLine = null;\n  this.originalColumn = null;\n  this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    var generatedLine = 1;\n    var previousGeneratedColumn = 0;\n    var previousOriginalLine = 0;\n    var previousOriginalColumn = 0;\n    var previousSource = 0;\n    var previousName = 0;\n    var length = aStr.length;\n    var index = 0;\n    var cachedSegments = {};\n    var temp = {};\n    var originalMappings = [];\n    var generatedMappings = [];\n    var mapping, str, segment, end, value;\n\n    while (index < length) {\n      if (aStr.charAt(index) === ';') {\n        generatedLine++;\n        index++;\n        previousGeneratedColumn = 0;\n      }\n      else if (aStr.charAt(index) === ',') {\n        index++;\n      }\n      else {\n        mapping = new Mapping();\n        mapping.generatedLine = generatedLine;\n\n        // Because each offset is encoded relative to the previous one,\n        // many segments often have the same encoding. We can exploit this\n        // fact by caching the parsed variable length fields of each segment,\n        // allowing us to avoid a second parse if we encounter the same\n        // segment again.\n        for (end = index; end < length; end++) {\n          if (this._charIsMappingSeparator(aStr, end)) {\n            break;\n          }\n        }\n        str = aStr.slice(index, end);\n\n        segment = cachedSegments[str];\n        if (segment) {\n          index += str.length;\n        } else {\n          segment = [];\n          while (index < end) {\n            base64VLQ.decode(aStr, index, temp);\n            value = temp.value;\n            index = temp.rest;\n            segment.push(value);\n          }\n\n          if (segment.length === 2) {\n            throw new Error('Found a source, but no line and column');\n          }\n\n          if (segment.length === 3) {\n            throw new Error('Found a source and line, but no column');\n          }\n\n          cachedSegments[str] = segment;\n        }\n\n        // Generated column.\n        mapping.generatedColumn = previousGeneratedColumn + segment[0];\n        previousGeneratedColumn = mapping.generatedColumn;\n\n        if (segment.length > 1) {\n          // Original source.\n          mapping.source = previousSource + segment[1];\n          previousSource += segment[1];\n\n          // Original line.\n          mapping.originalLine = previousOriginalLine + segment[2];\n          previousOriginalLine = mapping.originalLine;\n          // Lines are stored 0-based\n          mapping.originalLine += 1;\n\n          // Original column.\n          mapping.originalColumn = previousOriginalColumn + segment[3];\n          previousOriginalColumn = mapping.originalColumn;\n\n          if (segment.length > 4) {\n            // Original name.\n            mapping.name = previousName + segment[4];\n            previousName += segment[4];\n          }\n        }\n\n        generatedMappings.push(mapping);\n        if (typeof mapping.originalLine === 'number') {\n          originalMappings.push(mapping);\n        }\n      }\n    }\n\n    quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n    this.__generatedMappings = generatedMappings;\n\n    quickSort(originalMappings, util.compareByOriginalPositions);\n    this.__originalMappings = originalMappings;\n  };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n  function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n                                         aColumnName, aComparator, aBias) {\n    // To return the position we are searching for, we must first find the\n    // mapping for the given position and then return the opposite position it\n    // points to. Because the mappings are sorted, we can use binary search to\n    // find the best mapping.\n\n    if (aNeedle[aLineName] <= 0) {\n      throw new TypeError('Line must be greater than or equal to 1, got '\n                          + aNeedle[aLineName]);\n    }\n    if (aNeedle[aColumnName] < 0) {\n      throw new TypeError('Column must be greater than or equal to 0, got '\n                          + aNeedle[aColumnName]);\n    }\n\n    return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n  };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n  function SourceMapConsumer_computeColumnSpans() {\n    for (var index = 0; index < this._generatedMappings.length; ++index) {\n      var mapping = this._generatedMappings[index];\n\n      // Mappings do not contain a field for the last generated columnt. We\n      // can come up with an optimistic estimate, however, by assuming that\n      // mappings are contiguous (i.e. given two consecutive mappings, the\n      // first mapping ends where the second one starts).\n      if (index + 1 < this._generatedMappings.length) {\n        var nextMapping = this._generatedMappings[index + 1];\n\n        if (mapping.generatedLine === nextMapping.generatedLine) {\n          mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n          continue;\n        }\n      }\n\n      // The last mapping for each line spans the entire line.\n      mapping.lastGeneratedColumn = Infinity;\n    }\n  };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n *   - line: The line number in the generated source.\n *   - column: The column number in the generated source.\n *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n *   - source: The original source file, or null.\n *   - line: The line number in the original source, or null.\n *   - column: The column number in the original source, or null.\n *   - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n  function SourceMapConsumer_originalPositionFor(aArgs) {\n    var needle = {\n      generatedLine: util.getArg(aArgs, 'line'),\n      generatedColumn: util.getArg(aArgs, 'column')\n    };\n\n    var index = this._findMapping(\n      needle,\n      this._generatedMappings,\n      \"generatedLine\",\n      \"generatedColumn\",\n      util.compareByGeneratedPositionsDeflated,\n      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n    );\n\n    if (index >= 0) {\n      var mapping = this._generatedMappings[index];\n\n      if (mapping.generatedLine === needle.generatedLine) {\n        var source = util.getArg(mapping, 'source', null);\n        if (source !== null) {\n          source = this._sources.at(source);\n          if (this.sourceRoot != null) {\n            source = util.join(this.sourceRoot, source);\n          }\n        }\n        var name = util.getArg(mapping, 'name', null);\n        if (name !== null) {\n          name = this._names.at(name);\n        }\n        return {\n          source: source,\n          line: util.getArg(mapping, 'originalLine', null),\n          column: util.getArg(mapping, 'originalColumn', null),\n          name: name\n        };\n      }\n    }\n\n    return {\n      source: null,\n      line: null,\n      column: null,\n      name: null\n    };\n  };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n  function BasicSourceMapConsumer_hasContentsOfAllSources() {\n    if (!this.sourcesContent) {\n      return false;\n    }\n    return this.sourcesContent.length >= this._sources.size() &&\n      !this.sourcesContent.some(function (sc) { return sc == null; });\n  };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n  function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n    if (!this.sourcesContent) {\n      return null;\n    }\n\n    if (this.sourceRoot != null) {\n      aSource = util.relative(this.sourceRoot, aSource);\n    }\n\n    if (this._sources.has(aSource)) {\n      return this.sourcesContent[this._sources.indexOf(aSource)];\n    }\n\n    var url;\n    if (this.sourceRoot != null\n        && (url = util.urlParse(this.sourceRoot))) {\n      // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n      // many users. We can help them out when they expect file:// URIs to\n      // behave like it would if they were running a local HTTP server. See\n      // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n      var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n      if (url.scheme == \"file\"\n          && this._sources.has(fileUriAbsPath)) {\n        return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n      }\n\n      if ((!url.path || url.path == \"/\")\n          && this._sources.has(\"/\" + aSource)) {\n        return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n      }\n    }\n\n    // This function is used recursively from\n    // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n    // don't want to throw if we can't find the source - we just want to\n    // return null, so we provide a flag to exit gracefully.\n    if (nullOnMissing) {\n      return null;\n    }\n    else {\n      throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n    }\n  };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.\n *   - column: The column number in the original source.\n *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n *   - line: The line number in the generated source, or null.\n *   - column: The column number in the generated source, or null.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n  function SourceMapConsumer_generatedPositionFor(aArgs) {\n    var source = util.getArg(aArgs, 'source');\n    if (this.sourceRoot != null) {\n      source = util.relative(this.sourceRoot, source);\n    }\n    if (!this._sources.has(source)) {\n      return {\n        line: null,\n        column: null,\n        lastColumn: null\n      };\n    }\n    source = this._sources.indexOf(source);\n\n    var needle = {\n      source: source,\n      originalLine: util.getArg(aArgs, 'line'),\n      originalColumn: util.getArg(aArgs, 'column')\n    };\n\n    var index = this._findMapping(\n      needle,\n      this._originalMappings,\n      \"originalLine\",\n      \"originalColumn\",\n      util.compareByOriginalPositions,\n      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n    );\n\n    if (index >= 0) {\n      var mapping = this._originalMappings[index];\n\n      if (mapping.source === needle.source) {\n        return {\n          line: util.getArg(mapping, 'generatedLine', null),\n          column: util.getArg(mapping, 'generatedColumn', null),\n          lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n        };\n      }\n    }\n\n    return {\n      line: null,\n      column: null,\n      lastColumn: null\n    };\n  };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The only parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n *   - version: Which version of the source map spec this map is following.\n *   - file: Optional. The generated file this source map is associated with.\n *   - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n *   - offset: The offset into the original specified at which this section\n *       begins to apply, defined as an object with a \"line\" and \"column\"\n *       field.\n *   - map: A source map definition. This source map could also be indexed,\n *       but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n *  {\n *    version : 3,\n *    file: \"app.js\",\n *    sections: [{\n *      offset: {line:100, column:10},\n *      map: {\n *        version : 3,\n *        file: \"section.js\",\n *        sources: [\"foo.js\", \"bar.js\"],\n *        names: [\"src\", \"maps\", \"are\", \"fun\"],\n *        mappings: \"AAAA,E;;ABCDE;\"\n *      }\n *    }],\n *  }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n  }\n\n  var version = util.getArg(sourceMap, 'version');\n  var sections = util.getArg(sourceMap, 'sections');\n\n  if (version != this._version) {\n    throw new Error('Unsupported version: ' + version);\n  }\n\n  this._sources = new ArraySet();\n  this._names = new ArraySet();\n\n  var lastOffset = {\n    line: -1,\n    column: 0\n  };\n  this._sections = sections.map(function (s) {\n    if (s.url) {\n      // The url field will require support for asynchronicity.\n      // See https://github.com/mozilla/source-map/issues/16\n      throw new Error('Support for url field in sections not implemented.');\n    }\n    var offset = util.getArg(s, 'offset');\n    var offsetLine = util.getArg(offset, 'line');\n    var offsetColumn = util.getArg(offset, 'column');\n\n    if (offsetLine < lastOffset.line ||\n        (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n      throw new Error('Section offsets must be ordered and non-overlapping.');\n    }\n    lastOffset = offset;\n\n    return {\n      generatedOffset: {\n        // The offset fields are 0-based, but we use 1-based indices when\n        // encoding/decoding from VLQ.\n        generatedLine: offsetLine + 1,\n        generatedColumn: offsetColumn + 1\n      },\n      consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n    }\n  });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n  get: function () {\n    var sources = [];\n    for (var i = 0; i < this._sections.length; i++) {\n      for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n        sources.push(this._sections[i].consumer.sources[j]);\n      }\n    }\n    return sources;\n  }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n *   - line: The line number in the generated source.\n *   - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n *   - source: The original source file, or null.\n *   - line: The line number in the original source, or null.\n *   - column: The column number in the original source, or null.\n *   - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n  function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n    var needle = {\n      generatedLine: util.getArg(aArgs, 'line'),\n      generatedColumn: util.getArg(aArgs, 'column')\n    };\n\n    // Find the section containing the generated position we're trying to map\n    // to an original position.\n    var sectionIndex = binarySearch.search(needle, this._sections,\n      function(needle, section) {\n        var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n        if (cmp) {\n          return cmp;\n        }\n\n        return (needle.generatedColumn -\n                section.generatedOffset.generatedColumn);\n      });\n    var section = this._sections[sectionIndex];\n\n    if (!section) {\n      return {\n        source: null,\n        line: null,\n        column: null,\n        name: null\n      };\n    }\n\n    return section.consumer.originalPositionFor({\n      line: needle.generatedLine -\n        (section.generatedOffset.generatedLine - 1),\n      column: needle.generatedColumn -\n        (section.generatedOffset.generatedLine === needle.generatedLine\n         ? section.generatedOffset.generatedColumn - 1\n         : 0),\n      bias: aArgs.bias\n    });\n  };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n  function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n    return this._sections.every(function (s) {\n      return s.consumer.hasContentsOfAllSources();\n    });\n  };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n  function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n\n      var content = section.consumer.sourceContentFor(aSource, true);\n      if (content) {\n        return content;\n      }\n    }\n    if (nullOnMissing) {\n      return null;\n    }\n    else {\n      throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n    }\n  };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.\n *   - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n *   - line: The line number in the generated source, or null.\n *   - column: The column number in the generated source, or null.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n  function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n\n      // Only consider this section if the requested source is in the list of\n      // sources of the consumer.\n      if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n        continue;\n      }\n      var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n      if (generatedPosition) {\n        var ret = {\n          line: generatedPosition.line +\n            (section.generatedOffset.generatedLine - 1),\n          column: generatedPosition.column +\n            (section.generatedOffset.generatedLine === generatedPosition.line\n             ? section.generatedOffset.generatedColumn - 1\n             : 0)\n        };\n        return ret;\n      }\n    }\n\n    return {\n      line: null,\n      column: null\n    };\n  };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n  function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    this.__generatedMappings = [];\n    this.__originalMappings = [];\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n      var sectionMappings = section.consumer._generatedMappings;\n      for (var j = 0; j < sectionMappings.length; j++) {\n        var mapping = sectionMappings[j];\n\n        var source = section.consumer._sources.at(mapping.source);\n        if (section.consumer.sourceRoot !== null) {\n          source = util.join(section.consumer.sourceRoot, source);\n        }\n        this._sources.add(source);\n        source = this._sources.indexOf(source);\n\n        var name = section.consumer._names.at(mapping.name);\n        this._names.add(name);\n        name = this._names.indexOf(name);\n\n        // The mappings coming from the consumer for the section have\n        // generated positions relative to the start of the section, so we\n        // need to offset them to be relative to the start of the concatenated\n        // generated file.\n        var adjustedMapping = {\n          source: source,\n          generatedLine: mapping.generatedLine +\n            (section.generatedOffset.generatedLine - 1),\n          generatedColumn: mapping.generatedColumn +\n            (section.generatedOffset.generatedLine === mapping.generatedLine\n            ? section.generatedOffset.generatedColumn - 1\n            : 0),\n          originalLine: mapping.originalLine,\n          originalColumn: mapping.originalColumn,\n          name: name\n        };\n\n        this.__generatedMappings.push(adjustedMapping);\n        if (typeof adjustedMapping.originalLine === 'number') {\n          this.__originalMappings.push(adjustedMapping);\n        }\n      }\n    }\n\n    quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n    quickSort(this.__originalMappings, util.compareByOriginalPositions);\n  };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n *   - file: The filename of the generated source.\n *   - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n  if (!aArgs) {\n    aArgs = {};\n  }\n  this._file = util.getArg(aArgs, 'file', null);\n  this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n  this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n  this._sources = new ArraySet();\n  this._names = new ArraySet();\n  this._mappings = new MappingList();\n  this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n  function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n    var sourceRoot = aSourceMapConsumer.sourceRoot;\n    var generator = new SourceMapGenerator({\n      file: aSourceMapConsumer.file,\n      sourceRoot: sourceRoot\n    });\n    aSourceMapConsumer.eachMapping(function (mapping) {\n      var newMapping = {\n        generated: {\n          line: mapping.generatedLine,\n          column: mapping.generatedColumn\n        }\n      };\n\n      if (mapping.source != null) {\n        newMapping.source = mapping.source;\n        if (sourceRoot != null) {\n          newMapping.source = util.relative(sourceRoot, newMapping.source);\n        }\n\n        newMapping.original = {\n          line: mapping.originalLine,\n          column: mapping.originalColumn\n        };\n\n        if (mapping.name != null) {\n          newMapping.name = mapping.name;\n        }\n      }\n\n      generator.addMapping(newMapping);\n    });\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        generator.setSourceContent(sourceFile, content);\n      }\n    });\n    return generator;\n  };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n *   - generated: An object with the generated line and column positions.\n *   - original: An object with the original line and column positions.\n *   - source: The original source file (relative to the sourceRoot).\n *   - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n  function SourceMapGenerator_addMapping(aArgs) {\n    var generated = util.getArg(aArgs, 'generated');\n    var original = util.getArg(aArgs, 'original', null);\n    var source = util.getArg(aArgs, 'source', null);\n    var name = util.getArg(aArgs, 'name', null);\n\n    if (!this._skipValidation) {\n      this._validateMapping(generated, original, source, name);\n    }\n\n    if (source != null) {\n      source = String(source);\n      if (!this._sources.has(source)) {\n        this._sources.add(source);\n      }\n    }\n\n    if (name != null) {\n      name = String(name);\n      if (!this._names.has(name)) {\n        this._names.add(name);\n      }\n    }\n\n    this._mappings.add({\n      generatedLine: generated.line,\n      generatedColumn: generated.column,\n      originalLine: original != null && original.line,\n      originalColumn: original != null && original.column,\n      source: source,\n      name: name\n    });\n  };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n  function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n    var source = aSourceFile;\n    if (this._sourceRoot != null) {\n      source = util.relative(this._sourceRoot, source);\n    }\n\n    if (aSourceContent != null) {\n      // Add the source content to the _sourcesContents map.\n      // Create a new _sourcesContents map if the property is null.\n      if (!this._sourcesContents) {\n        this._sourcesContents = Object.create(null);\n      }\n      this._sourcesContents[util.toSetString(source)] = aSourceContent;\n    } else if (this._sourcesContents) {\n      // Remove the source file from the _sourcesContents map.\n      // If the _sourcesContents map is empty, set the property to null.\n      delete this._sourcesContents[util.toSetString(source)];\n      if (Object.keys(this._sourcesContents).length === 0) {\n        this._sourcesContents = null;\n      }\n    }\n  };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n *        If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n *        to be applied. If relative, it is relative to the SourceMapConsumer.\n *        This parameter is needed when the two source maps aren't in the same\n *        directory, and the source map to be applied contains relative source\n *        paths. If so, those relative source paths need to be rewritten\n *        relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n  function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n    var sourceFile = aSourceFile;\n    // If aSourceFile is omitted, we will use the file property of the SourceMap\n    if (aSourceFile == null) {\n      if (aSourceMapConsumer.file == null) {\n        throw new Error(\n          'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n          'or the source map\\'s \"file\" property. Both were omitted.'\n        );\n      }\n      sourceFile = aSourceMapConsumer.file;\n    }\n    var sourceRoot = this._sourceRoot;\n    // Make \"sourceFile\" relative if an absolute Url is passed.\n    if (sourceRoot != null) {\n      sourceFile = util.relative(sourceRoot, sourceFile);\n    }\n    // Applying the SourceMap can add and remove items from the sources and\n    // the names array.\n    var newSources = new ArraySet();\n    var newNames = new ArraySet();\n\n    // Find mappings for the \"sourceFile\"\n    this._mappings.unsortedForEach(function (mapping) {\n      if (mapping.source === sourceFile && mapping.originalLine != null) {\n        // Check if it can be mapped by the source map, then update the mapping.\n        var original = aSourceMapConsumer.originalPositionFor({\n          line: mapping.originalLine,\n          column: mapping.originalColumn\n        });\n        if (original.source != null) {\n          // Copy mapping\n          mapping.source = original.source;\n          if (aSourceMapPath != null) {\n            mapping.source = util.join(aSourceMapPath, mapping.source)\n          }\n          if (sourceRoot != null) {\n            mapping.source = util.relative(sourceRoot, mapping.source);\n          }\n          mapping.originalLine = original.line;\n          mapping.originalColumn = original.column;\n          if (original.name != null) {\n            mapping.name = original.name;\n          }\n        }\n      }\n\n      var source = mapping.source;\n      if (source != null && !newSources.has(source)) {\n        newSources.add(source);\n      }\n\n      var name = mapping.name;\n      if (name != null && !newNames.has(name)) {\n        newNames.add(name);\n      }\n\n    }, this);\n    this._sources = newSources;\n    this._names = newNames;\n\n    // Copy sourcesContents of applied map.\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        if (aSourceMapPath != null) {\n          sourceFile = util.join(aSourceMapPath, sourceFile);\n        }\n        if (sourceRoot != null) {\n          sourceFile = util.relative(sourceRoot, sourceFile);\n        }\n        this.setSourceContent(sourceFile, content);\n      }\n    }, this);\n  };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n *   1. Just the generated position.\n *   2. The Generated position, original position, and original source.\n *   3. Generated and original position, original source, as well as a name\n *      token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n  function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n                                              aName) {\n    if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n        && aGenerated.line > 0 && aGenerated.column >= 0\n        && !aOriginal && !aSource && !aName) {\n      // Case 1.\n      return;\n    }\n    else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n             && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n             && aGenerated.line > 0 && aGenerated.column >= 0\n             && aOriginal.line > 0 && aOriginal.column >= 0\n             && aSource) {\n      // Cases 2 and 3.\n      return;\n    }\n    else {\n      throw new Error('Invalid mapping: ' + JSON.stringify({\n        generated: aGenerated,\n        source: aSource,\n        original: aOriginal,\n        name: aName\n      }));\n    }\n  };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n  function SourceMapGenerator_serializeMappings() {\n    var previousGeneratedColumn = 0;\n    var previousGeneratedLine = 1;\n    var previousOriginalColumn = 0;\n    var previousOriginalLine = 0;\n    var previousName = 0;\n    var previousSource = 0;\n    var result = '';\n    var next;\n    var mapping;\n    var nameIdx;\n    var sourceIdx;\n\n    var mappings = this._mappings.toArray();\n    for (var i = 0, len = mappings.length; i < len; i++) {\n      mapping = mappings[i];\n      next = ''\n\n      if (mapping.generatedLine !== previousGeneratedLine) {\n        previousGeneratedColumn = 0;\n        while (mapping.generatedLine !== previousGeneratedLine) {\n          next += ';';\n          previousGeneratedLine++;\n        }\n      }\n      else {\n        if (i > 0) {\n          if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n            continue;\n          }\n          next += ',';\n        }\n      }\n\n      next += base64VLQ.encode(mapping.generatedColumn\n                                 - previousGeneratedColumn);\n      previousGeneratedColumn = mapping.generatedColumn;\n\n      if (mapping.source != null) {\n        sourceIdx = this._sources.indexOf(mapping.source);\n        next += base64VLQ.encode(sourceIdx - previousSource);\n        previousSource = sourceIdx;\n\n        // lines are stored 0-based in SourceMap spec version 3\n        next += base64VLQ.encode(mapping.originalLine - 1\n                                   - previousOriginalLine);\n        previousOriginalLine = mapping.originalLine - 1;\n\n        next += base64VLQ.encode(mapping.originalColumn\n                                   - previousOriginalColumn);\n        previousOriginalColumn = mapping.originalColumn;\n\n        if (mapping.name != null) {\n          nameIdx = this._names.indexOf(mapping.name);\n          next += base64VLQ.encode(nameIdx - previousName);\n          previousName = nameIdx;\n        }\n      }\n\n      result += next;\n    }\n\n    return result;\n  };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n  function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n    return aSources.map(function (source) {\n      if (!this._sourcesContents) {\n        return null;\n      }\n      if (aSourceRoot != null) {\n        source = util.relative(aSourceRoot, source);\n      }\n      var key = util.toSetString(source);\n      return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n        ? this._sourcesContents[key]\n        : null;\n    }, this);\n  };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n  function SourceMapGenerator_toJSON() {\n    var map = {\n      version: this._version,\n      sources: this._sources.toArray(),\n      names: this._names.toArray(),\n      mappings: this._serializeMappings()\n    };\n    if (this._file != null) {\n      map.file = this._file;\n    }\n    if (this._sourceRoot != null) {\n      map.sourceRoot = this._sourceRoot;\n    }\n    if (this._sourcesContents) {\n      map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n    }\n\n    return map;\n  };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n  function SourceMapGenerator_toString() {\n    return JSON.stringify(this.toJSON());\n  };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n *        generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n  this.children = [];\n  this.sourceContents = {};\n  this.line = aLine == null ? null : aLine;\n  this.column = aColumn == null ? null : aColumn;\n  this.source = aSource == null ? null : aSource;\n  this.name = aName == null ? null : aName;\n  this[isSourceNode] = true;\n  if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n *        SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n  function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n    // The SourceNode we want to fill with the generated code\n    // and the SourceMap\n    var node = new SourceNode();\n\n    // All even indices of this array are one line of the generated code,\n    // while all odd indices are the newlines between two adjacent lines\n    // (since `REGEX_NEWLINE` captures its match).\n    // Processed fragments are removed from this array, by calling `shiftNextLine`.\n    var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n    var shiftNextLine = function() {\n      var lineContents = remainingLines.shift();\n      // The last line of a file might not have a newline.\n      var newLine = remainingLines.shift() || \"\";\n      return lineContents + newLine;\n    };\n\n    // We need to remember the position of \"remainingLines\"\n    var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n    // The generate SourceNodes we need a code range.\n    // To extract it current and last mapping is used.\n    // Here we store the last mapping.\n    var lastMapping = null;\n\n    aSourceMapConsumer.eachMapping(function (mapping) {\n      if (lastMapping !== null) {\n        // We add the code from \"lastMapping\" to \"mapping\":\n        // First check if there is a new line in between.\n        if (lastGeneratedLine < mapping.generatedLine) {\n          // Associate first line with \"lastMapping\"\n          addMappingWithCode(lastMapping, shiftNextLine());\n          lastGeneratedLine++;\n          lastGeneratedColumn = 0;\n          // The remaining code is added without mapping\n        } else {\n          // There is no new line in between.\n          // Associate the code between \"lastGeneratedColumn\" and\n          // \"mapping.generatedColumn\" with \"lastMapping\"\n          var nextLine = remainingLines[0];\n          var code = nextLine.substr(0, mapping.generatedColumn -\n                                        lastGeneratedColumn);\n          remainingLines[0] = nextLine.substr(mapping.generatedColumn -\n                                              lastGeneratedColumn);\n          lastGeneratedColumn = mapping.generatedColumn;\n          addMappingWithCode(lastMapping, code);\n          // No more remaining code, continue\n          lastMapping = mapping;\n          return;\n        }\n      }\n      // We add the generated code until the first mapping\n      // to the SourceNode without any mapping.\n      // Each line is added as separate string.\n      while (lastGeneratedLine < mapping.generatedLine) {\n        node.add(shiftNextLine());\n        lastGeneratedLine++;\n      }\n      if (lastGeneratedColumn < mapping.generatedColumn) {\n        var nextLine = remainingLines[0];\n        node.add(nextLine.substr(0, mapping.generatedColumn));\n        remainingLines[0] = nextLine.substr(mapping.generatedColumn);\n        lastGeneratedColumn = mapping.generatedColumn;\n      }\n      lastMapping = mapping;\n    }, this);\n    // We have processed all mappings.\n    if (remainingLines.length > 0) {\n      if (lastMapping) {\n        // Associate the remaining code in the current line with \"lastMapping\"\n        addMappingWithCode(lastMapping, shiftNextLine());\n      }\n      // and add the remaining lines without any mapping\n      node.add(remainingLines.join(\"\"));\n    }\n\n    // Copy sourcesContent into SourceNode\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        if (aRelativePath != null) {\n          sourceFile = util.join(aRelativePath, sourceFile);\n        }\n        node.setSourceContent(sourceFile, content);\n      }\n    });\n\n    return node;\n\n    function addMappingWithCode(mapping, code) {\n      if (mapping === null || mapping.source === undefined) {\n        node.add(code);\n      } else {\n        var source = aRelativePath\n          ? util.join(aRelativePath, mapping.source)\n          : mapping.source;\n        node.add(new SourceNode(mapping.originalLine,\n                                mapping.originalColumn,\n                                source,\n                                code,\n                                mapping.name));\n      }\n    }\n  };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n *        SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n  if (Array.isArray(aChunk)) {\n    aChunk.forEach(function (chunk) {\n      this.add(chunk);\n    }, this);\n  }\n  else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n    if (aChunk) {\n      this.children.push(aChunk);\n    }\n  }\n  else {\n    throw new TypeError(\n      \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n    );\n  }\n  return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n *        SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n  if (Array.isArray(aChunk)) {\n    for (var i = aChunk.length-1; i >= 0; i--) {\n      this.prepend(aChunk[i]);\n    }\n  }\n  else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n    this.children.unshift(aChunk);\n  }\n  else {\n    throw new TypeError(\n      \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n    );\n  }\n  return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n  var chunk;\n  for (var i = 0, len = this.children.length; i < len; i++) {\n    chunk = this.children[i];\n    if (chunk[isSourceNode]) {\n      chunk.walk(aFn);\n    }\n    else {\n      if (chunk !== '') {\n        aFn(chunk, { source: this.source,\n                     line: this.line,\n                     column: this.column,\n                     name: this.name });\n      }\n    }\n  }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n  var newChildren;\n  var i;\n  var len = this.children.length;\n  if (len > 0) {\n    newChildren = [];\n    for (i = 0; i < len-1; i++) {\n      newChildren.push(this.children[i]);\n      newChildren.push(aSep);\n    }\n    newChildren.push(this.children[i]);\n    this.children = newChildren;\n  }\n  return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n  var lastChild = this.children[this.children.length - 1];\n  if (lastChild[isSourceNode]) {\n    lastChild.replaceRight(aPattern, aReplacement);\n  }\n  else if (typeof lastChild === 'string') {\n    this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n  }\n  else {\n    this.children.push(''.replace(aPattern, aReplacement));\n  }\n  return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n  function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n    this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n  };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n  function SourceNode_walkSourceContents(aFn) {\n    for (var i = 0, len = this.children.length; i < len; i++) {\n      if (this.children[i][isSourceNode]) {\n        this.children[i].walkSourceContents(aFn);\n      }\n    }\n\n    var sources = Object.keys(this.sourceContents);\n    for (var i = 0, len = sources.length; i < len; i++) {\n      aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n    }\n  };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n  var str = \"\";\n  this.walk(function (chunk) {\n    str += chunk;\n  });\n  return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n  var generated = {\n    code: \"\",\n    line: 1,\n    column: 0\n  };\n  var map = new SourceMapGenerator(aArgs);\n  var sourceMappingActive = false;\n  var lastOriginalSource = null;\n  var lastOriginalLine = null;\n  var lastOriginalColumn = null;\n  var lastOriginalName = null;\n  this.walk(function (chunk, original) {\n    generated.code += chunk;\n    if (original.source !== null\n        && original.line !== null\n        && original.column !== null) {\n      if(lastOriginalSource !== original.source\n         || lastOriginalLine !== original.line\n         || lastOriginalColumn !== original.column\n         || lastOriginalName !== original.name) {\n        map.addMapping({\n          source: original.source,\n          original: {\n            line: original.line,\n            column: original.column\n          },\n          generated: {\n            line: generated.line,\n            column: generated.column\n          },\n          name: original.name\n        });\n      }\n      lastOriginalSource = original.source;\n      lastOriginalLine = original.line;\n      lastOriginalColumn = original.column;\n      lastOriginalName = original.name;\n      sourceMappingActive = true;\n    } else if (sourceMappingActive) {\n      map.addMapping({\n        generated: {\n          line: generated.line,\n          column: generated.column\n        }\n      });\n      lastOriginalSource = null;\n      sourceMappingActive = false;\n    }\n    for (var idx = 0, length = chunk.length; idx < length; idx++) {\n      if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n        generated.line++;\n        generated.column = 0;\n        // Mappings end at eol\n        if (idx + 1 === length) {\n          lastOriginalSource = null;\n          sourceMappingActive = false;\n        } else if (sourceMappingActive) {\n          map.addMapping({\n            source: original.source,\n            original: {\n              line: original.line,\n              column: original.column\n            },\n            generated: {\n              line: generated.line,\n              column: generated.column\n            },\n            name: original.name\n          });\n        }\n      } else {\n        generated.column++;\n      }\n    }\n  });\n  this.walkSourceContents(function (sourceFile, sourceContent) {\n    map.setSourceContent(sourceFile, sourceContent);\n  });\n\n  return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n  if (aName in aArgs) {\n    return aArgs[aName];\n  } else if (arguments.length === 3) {\n    return aDefaultValue;\n  } else {\n    throw new Error('\"' + aName + '\" is a required argument.');\n  }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n  var match = aUrl.match(urlRegexp);\n  if (!match) {\n    return null;\n  }\n  return {\n    scheme: match[1],\n    auth: match[2],\n    host: match[3],\n    port: match[4],\n    path: match[5]\n  };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n  var url = '';\n  if (aParsedUrl.scheme) {\n    url += aParsedUrl.scheme + ':';\n  }\n  url += '//';\n  if (aParsedUrl.auth) {\n    url += aParsedUrl.auth + '@';\n  }\n  if (aParsedUrl.host) {\n    url += aParsedUrl.host;\n  }\n  if (aParsedUrl.port) {\n    url += \":\" + aParsedUrl.port\n  }\n  if (aParsedUrl.path) {\n    url += aParsedUrl.path;\n  }\n  return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n  var path = aPath;\n  var url = urlParse(aPath);\n  if (url) {\n    if (!url.path) {\n      return aPath;\n    }\n    path = url.path;\n  }\n  var isAbsolute = exports.isAbsolute(path);\n\n  var parts = path.split(/\\/+/);\n  for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n    part = parts[i];\n    if (part === '.') {\n      parts.splice(i, 1);\n    } else if (part === '..') {\n      up++;\n    } else if (up > 0) {\n      if (part === '') {\n        // The first part is blank if the path is absolute. Trying to go\n        // above the root is a no-op. Therefore we can remove all '..' parts\n        // directly after the root.\n        parts.splice(i + 1, up);\n        up = 0;\n      } else {\n        parts.splice(i, 2);\n        up--;\n      }\n    }\n  }\n  path = parts.join('/');\n\n  if (path === '') {\n    path = isAbsolute ? '/' : '.';\n  }\n\n  if (url) {\n    url.path = path;\n    return urlGenerate(url);\n  }\n  return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n *   scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n *   first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n *   is updated with the result and aRoot is returned. Otherwise the result\n *   is returned.\n *   - If aPath is absolute, the result is aPath.\n *   - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n  if (aRoot === \"\") {\n    aRoot = \".\";\n  }\n  if (aPath === \"\") {\n    aPath = \".\";\n  }\n  var aPathUrl = urlParse(aPath);\n  var aRootUrl = urlParse(aRoot);\n  if (aRootUrl) {\n    aRoot = aRootUrl.path || '/';\n  }\n\n  // `join(foo, '//www.example.org')`\n  if (aPathUrl && !aPathUrl.scheme) {\n    if (aRootUrl) {\n      aPathUrl.scheme = aRootUrl.scheme;\n    }\n    return urlGenerate(aPathUrl);\n  }\n\n  if (aPathUrl || aPath.match(dataUrlRegexp)) {\n    return aPath;\n  }\n\n  // `join('http://', 'www.example.com')`\n  if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n    aRootUrl.host = aPath;\n    return urlGenerate(aRootUrl);\n  }\n\n  var joined = aPath.charAt(0) === '/'\n    ? aPath\n    : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n  if (aRootUrl) {\n    aRootUrl.path = joined;\n    return urlGenerate(aRootUrl);\n  }\n  return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n  return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n  if (aRoot === \"\") {\n    aRoot = \".\";\n  }\n\n  aRoot = aRoot.replace(/\\/$/, '');\n\n  // It is possible for the path to be above the root. In this case, simply\n  // checking whether the root is a prefix of the path won't work. Instead, we\n  // need to remove components from the root one by one, until either we find\n  // a prefix that fits, or we run out of components to remove.\n  var level = 0;\n  while (aPath.indexOf(aRoot + '/') !== 0) {\n    var index = aRoot.lastIndexOf(\"/\");\n    if (index < 0) {\n      return aPath;\n    }\n\n    // If the only part of the root that is left is the scheme (i.e. http://,\n    // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n    // have exhausted all components, so the path is not relative to the root.\n    aRoot = aRoot.slice(0, index);\n    if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n      return aPath;\n    }\n\n    ++level;\n  }\n\n  // Make sure we add a \"../\" for each component we removed from the root.\n  return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n  var obj = Object.create(null);\n  return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n  return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n  if (isProtoString(aStr)) {\n    return '$' + aStr;\n  }\n\n  return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n  if (isProtoString(aStr)) {\n    return aStr.slice(1);\n  }\n\n  return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n  if (!s) {\n    return false;\n  }\n\n  var length = s.length;\n\n  if (length < 9 /* \"__proto__\".length */) {\n    return false;\n  }\n\n  if (s.charCodeAt(length - 1) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 2) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n      s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n      s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n      s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n      s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n      s.charCodeAt(length - 8) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 9) !== 95  /* '_' */) {\n    return false;\n  }\n\n  for (var i = length - 10; i >= 0; i--) {\n    if (s.charCodeAt(i) !== 36 /* '$' */) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n  var cmp = mappingA.source - mappingB.source;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0 || onlyCompareOriginal) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return mappingA.name - mappingB.name;\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n  var cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0 || onlyCompareGenerated) {\n    return cmp;\n  }\n\n  cmp = mappingA.source - mappingB.source;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return mappingA.name - mappingB.name;\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n  if (aStr1 === aStr2) {\n    return 0;\n  }\n\n  if (aStr1 > aStr2) {\n    return 1;\n  }\n\n  return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n  var cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","(function(root, factory) {\n    'use strict';\n    // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n    /* istanbul ignore next */\n    if (typeof define === 'function' && define.amd) {\n        define('stacktrace-gps', ['source-map', 'stackframe'], factory);\n    } else if (typeof exports === 'object') {\n        module.exports = factory(require('source-map/lib/source-map-consumer'), require('stackframe'));\n    } else {\n        root.StackTraceGPS = factory(root.SourceMap || root.sourceMap, root.StackFrame);\n    }\n}(this, function(SourceMap, StackFrame) {\n    'use strict';\n\n    /**\n     * Make a X-Domain request to url and callback.\n     *\n     * @param {String} url\n     * @returns {Promise} with response text if fulfilled\n     */\n    function _xdr(url) {\n        return new Promise(function(resolve, reject) {\n            var req = new XMLHttpRequest();\n            req.open('get', url);\n            req.onerror = reject;\n            req.onreadystatechange = function onreadystatechange() {\n                if (req.readyState === 4) {\n                    if ((req.status >= 200 && req.status < 300) ||\n                        (url.substr(0, 7) === 'file://' && req.responseText)) {\n                        resolve(req.responseText);\n                    } else {\n                        reject(new Error('HTTP status: ' + req.status + ' retrieving ' + url));\n                    }\n                }\n            };\n            req.send();\n        });\n\n    }\n\n    /**\n     * Convert a Base64-encoded string into its original representation.\n     * Used for inline sourcemaps.\n     *\n     * @param {String} b64str Base-64 encoded string\n     * @returns {String} original representation of the base64-encoded string.\n     */\n    function _atob(b64str) {\n        if (typeof window !== 'undefined' && window.atob) {\n            return window.atob(b64str);\n        } else {\n            throw new Error('You must supply a polyfill for window.atob in this environment');\n        }\n    }\n\n    function _parseJson(string) {\n        if (typeof JSON !== 'undefined' && JSON.parse) {\n            return JSON.parse(string);\n        } else {\n            throw new Error('You must supply a polyfill for JSON.parse in this environment');\n        }\n    }\n\n    function _findFunctionName(source, lineNumber/*, columnNumber*/) {\n        var syntaxes = [\n            // {name} = function ({args}) TODO args capture\n            /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*function\\b/,\n            // function {name}({args}) m[1]=name m[2]=args\n            /function\\s+([^('\"`]*?)\\s*\\(([^)]*)\\)/,\n            // {name} = eval()\n            /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*(?:eval|new Function)\\b/,\n            // fn_name() {\n            /\\b(?!(?:if|for|switch|while|with|catch)\\b)(?:(?:static)\\s+)?(\\S+)\\s*\\(.*?\\)\\s*\\{/,\n            // {name} = () => {\n            /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*\\(.*?\\)\\s*=>/\n        ];\n        var lines = source.split('\\n');\n\n        // Walk backwards in the source lines until we find the line which matches one of the patterns above\n        var code = '';\n        var maxLines = Math.min(lineNumber, 20);\n        for (var i = 0; i < maxLines; ++i) {\n            // lineNo is 1-based, source[] is 0-based\n            var line = lines[lineNumber - i - 1];\n            var commentPos = line.indexOf('//');\n            if (commentPos >= 0) {\n                line = line.substr(0, commentPos);\n            }\n\n            if (line) {\n                code = line + code;\n                var len = syntaxes.length;\n                for (var index = 0; index < len; index++) {\n                    var m = syntaxes[index].exec(code);\n                    if (m && m[1]) {\n                        return m[1];\n                    }\n                }\n            }\n        }\n        return undefined;\n    }\n\n    function _ensureSupportedEnvironment() {\n        if (typeof Object.defineProperty !== 'function' || typeof Object.create !== 'function') {\n            throw new Error('Unable to consume source maps in older browsers');\n        }\n    }\n\n    function _ensureStackFrameIsLegit(stackframe) {\n        if (typeof stackframe !== 'object') {\n            throw new TypeError('Given StackFrame is not an object');\n        } else if (typeof stackframe.fileName !== 'string') {\n            throw new TypeError('Given file name is not a String');\n        } else if (typeof stackframe.lineNumber !== 'number' ||\n            stackframe.lineNumber % 1 !== 0 ||\n            stackframe.lineNumber < 1) {\n            throw new TypeError('Given line number must be a positive integer');\n        } else if (typeof stackframe.columnNumber !== 'number' ||\n            stackframe.columnNumber % 1 !== 0 ||\n            stackframe.columnNumber < 0) {\n            throw new TypeError('Given column number must be a non-negative integer');\n        }\n        return true;\n    }\n\n    function _findSourceMappingURL(source) {\n        var sourceMappingUrlRegExp = /\\/\\/[#@] ?sourceMappingURL=([^\\s'\"]+)\\s*$/mg;\n        var lastSourceMappingUrl;\n        var matchSourceMappingUrl;\n        // eslint-disable-next-line no-cond-assign\n        while (matchSourceMappingUrl = sourceMappingUrlRegExp.exec(source)) {\n            lastSourceMappingUrl = matchSourceMappingUrl[1];\n        }\n        if (lastSourceMappingUrl) {\n            return lastSourceMappingUrl;\n        } else {\n            throw new Error('sourceMappingURL not found');\n        }\n    }\n\n    function _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache) {\n        return new Promise(function(resolve, reject) {\n            var loc = sourceMapConsumer.originalPositionFor({\n                line: stackframe.lineNumber,\n                column: stackframe.columnNumber\n            });\n\n            if (loc.source) {\n                // cache mapped sources\n                var mappedSource = sourceMapConsumer.sourceContentFor(loc.source);\n                if (mappedSource) {\n                    sourceCache[loc.source] = mappedSource;\n                }\n\n                resolve(\n                    // given stackframe and source location, update stackframe\n                    new StackFrame({\n                        functionName: loc.name || stackframe.functionName,\n                        args: stackframe.args,\n                        fileName: loc.source,\n                        lineNumber: loc.line,\n                        columnNumber: loc.column\n                    }));\n            } else {\n                reject(new Error('Could not get original source for given stackframe and source map'));\n            }\n        });\n    }\n\n    /**\n     * @constructor\n     * @param {Object} opts\n     *      opts.sourceCache = {url: \"Source String\"} => preload source cache\n     *      opts.sourceMapConsumerCache = {/path/file.js.map: SourceMapConsumer}\n     *      opts.offline = True to prevent network requests.\n     *              Best effort without sources or source maps.\n     *      opts.ajax = Promise returning function to make X-Domain requests\n     */\n    return function StackTraceGPS(opts) {\n        if (!(this instanceof StackTraceGPS)) {\n            return new StackTraceGPS(opts);\n        }\n        opts = opts || {};\n\n        this.sourceCache = opts.sourceCache || {};\n        this.sourceMapConsumerCache = opts.sourceMapConsumerCache || {};\n\n        this.ajax = opts.ajax || _xdr;\n\n        this._atob = opts.atob || _atob;\n\n        this._get = function _get(location) {\n            return new Promise(function(resolve, reject) {\n                var isDataUrl = location.substr(0, 5) === 'data:';\n                if (this.sourceCache[location]) {\n                    resolve(this.sourceCache[location]);\n                } else if (opts.offline && !isDataUrl) {\n                    reject(new Error('Cannot make network requests in offline mode'));\n                } else {\n                    if (isDataUrl) {\n                        // data URLs can have parameters.\n                        // see http://tools.ietf.org/html/rfc2397\n                        var supportedEncodingRegexp =\n                            /^data:application\\/json;([\\w=:\"-]+;)*base64,/;\n                        var match = location.match(supportedEncodingRegexp);\n                        if (match) {\n                            var sourceMapStart = match[0].length;\n                            var encodedSource = location.substr(sourceMapStart);\n                            var source = this._atob(encodedSource);\n                            this.sourceCache[location] = source;\n                            resolve(source);\n                        } else {\n                            reject(new Error('The encoding of the inline sourcemap is not supported'));\n                        }\n                    } else {\n                        var xhrPromise = this.ajax(location, {method: 'get'});\n                        // Cache the Promise to prevent duplicate in-flight requests\n                        this.sourceCache[location] = xhrPromise;\n                        xhrPromise.then(resolve, reject);\n                    }\n                }\n            }.bind(this));\n        };\n\n        /**\n         * Creating SourceMapConsumers is expensive, so this wraps the creation of a\n         * SourceMapConsumer in a per-instance cache.\n         *\n         * @param {String} sourceMappingURL = URL to fetch source map from\n         * @param {String} defaultSourceRoot = Default source root for source map if undefined\n         * @returns {Promise} that resolves a SourceMapConsumer\n         */\n        this._getSourceMapConsumer = function _getSourceMapConsumer(sourceMappingURL, defaultSourceRoot) {\n            return new Promise(function(resolve) {\n                if (this.sourceMapConsumerCache[sourceMappingURL]) {\n                    resolve(this.sourceMapConsumerCache[sourceMappingURL]);\n                } else {\n                    var sourceMapConsumerPromise = new Promise(function(resolve, reject) {\n                        return this._get(sourceMappingURL).then(function(sourceMapSource) {\n                            if (typeof sourceMapSource === 'string') {\n                                sourceMapSource = _parseJson(sourceMapSource.replace(/^\\)\\]\\}'/, ''));\n                            }\n                            if (typeof sourceMapSource.sourceRoot === 'undefined') {\n                                sourceMapSource.sourceRoot = defaultSourceRoot;\n                            }\n\n                            resolve(new SourceMap.SourceMapConsumer(sourceMapSource));\n                        }).catch(reject);\n                    }.bind(this));\n                    this.sourceMapConsumerCache[sourceMappingURL] = sourceMapConsumerPromise;\n                    resolve(sourceMapConsumerPromise);\n                }\n            }.bind(this));\n        };\n\n        /**\n         * Given a StackFrame, enhance function name and use source maps for a\n         * better StackFrame.\n         *\n         * @param {StackFrame} stackframe object\n         * @returns {Promise} that resolves with with source-mapped StackFrame\n         */\n        this.pinpoint = function StackTraceGPS$$pinpoint(stackframe) {\n            return new Promise(function(resolve, reject) {\n                this.getMappedLocation(stackframe).then(function(mappedStackFrame) {\n                    function resolveMappedStackFrame() {\n                        resolve(mappedStackFrame);\n                    }\n\n                    this.findFunctionName(mappedStackFrame)\n                        .then(resolve, resolveMappedStackFrame)\n                        // eslint-disable-next-line no-unexpected-multiline\n                        ['catch'](resolveMappedStackFrame);\n                }.bind(this), reject);\n            }.bind(this));\n        };\n\n        /**\n         * Given a StackFrame, guess function name from location information.\n         *\n         * @param {StackFrame} stackframe\n         * @returns {Promise} that resolves with enhanced StackFrame.\n         */\n        this.findFunctionName = function StackTraceGPS$$findFunctionName(stackframe) {\n            return new Promise(function(resolve, reject) {\n                _ensureStackFrameIsLegit(stackframe);\n                this._get(stackframe.fileName).then(function getSourceCallback(source) {\n                    var lineNumber = stackframe.lineNumber;\n                    var columnNumber = stackframe.columnNumber;\n                    var guessedFunctionName = _findFunctionName(source, lineNumber, columnNumber);\n                    // Only replace functionName if we found something\n                    if (guessedFunctionName) {\n                        resolve(new StackFrame({\n                            functionName: guessedFunctionName,\n                            args: stackframe.args,\n                            fileName: stackframe.fileName,\n                            lineNumber: lineNumber,\n                            columnNumber: columnNumber\n                        }));\n                    } else {\n                        resolve(stackframe);\n                    }\n                }, reject)['catch'](reject);\n            }.bind(this));\n        };\n\n        /**\n         * Given a StackFrame, seek source-mapped location and return new enhanced StackFrame.\n         *\n         * @param {StackFrame} stackframe\n         * @returns {Promise} that resolves with enhanced StackFrame.\n         */\n        this.getMappedLocation = function StackTraceGPS$$getMappedLocation(stackframe) {\n            return new Promise(function(resolve, reject) {\n                _ensureSupportedEnvironment();\n                _ensureStackFrameIsLegit(stackframe);\n\n                var sourceCache = this.sourceCache;\n                var fileName = stackframe.fileName;\n                this._get(fileName).then(function(source) {\n                    var sourceMappingURL = _findSourceMappingURL(source);\n                    var isDataUrl = sourceMappingURL.substr(0, 5) === 'data:';\n                    var defaultSourceRoot = fileName.substring(0, fileName.lastIndexOf('/') + 1);\n\n                    if (sourceMappingURL[0] !== '/' && !isDataUrl && !(/^https?:\\/\\/|^\\/\\//i).test(sourceMappingURL)) {\n                        sourceMappingURL = defaultSourceRoot + sourceMappingURL;\n                    }\n\n                    return this._getSourceMapConsumer(sourceMappingURL, defaultSourceRoot)\n                        .then(function(sourceMapConsumer) {\n                            return _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache)\n                                .then(resolve)['catch'](function() {\n                                    resolve(stackframe);\n                                });\n                        });\n                }.bind(this), reject)['catch'](reject);\n            }.bind(this));\n        };\n    };\n}));\n","(function(root, factory) {\n    'use strict';\n    // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n    /* istanbul ignore next */\n    if (typeof define === 'function' && define.amd) {\n        define('stacktrace', ['error-stack-parser', 'stack-generator', 'stacktrace-gps'], factory);\n    } else if (typeof exports === 'object') {\n        module.exports = factory(require('error-stack-parser'), require('stack-generator'), require('stacktrace-gps'));\n    } else {\n        root.StackTrace = factory(root.ErrorStackParser, root.StackGenerator, root.StackTraceGPS);\n    }\n}(this, function StackTrace(ErrorStackParser, StackGenerator, StackTraceGPS) {\n    var _options = {\n        filter: function(stackframe) {\n            // Filter out stackframes for this library by default\n            return (stackframe.functionName || '').indexOf('StackTrace$$') === -1 &&\n                (stackframe.functionName || '').indexOf('ErrorStackParser$$') === -1 &&\n                (stackframe.functionName || '').indexOf('StackTraceGPS$$') === -1 &&\n                (stackframe.functionName || '').indexOf('StackGenerator$$') === -1;\n        },\n        sourceCache: {}\n    };\n\n    var _generateError = function StackTrace$$GenerateError() {\n        try {\n            // Error must be thrown to get stack in IE\n            throw new Error();\n        } catch (err) {\n            return err;\n        }\n    };\n\n    /**\n     * Merge 2 given Objects. If a conflict occurs the second object wins.\n     * Does not do deep merges.\n     *\n     * @param {Object} first base object\n     * @param {Object} second overrides\n     * @returns {Object} merged first and second\n     * @private\n     */\n    function _merge(first, second) {\n        var target = {};\n\n        [first, second].forEach(function(obj) {\n            for (var prop in obj) {\n                if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n                    target[prop] = obj[prop];\n                }\n            }\n            return target;\n        });\n\n        return target;\n    }\n\n    function _isShapedLikeParsableError(err) {\n        return err.stack || err['opera#sourceloc'];\n    }\n\n    function _filtered(stackframes, filter) {\n        if (typeof filter === 'function') {\n            return stackframes.filter(filter);\n        }\n        return stackframes;\n    }\n\n    return {\n        /**\n         * Get a backtrace from invocation point.\n         *\n         * @param {Object} opts\n         * @returns {Array} of StackFrame\n         */\n        get: function StackTrace$$get(opts) {\n            var err = _generateError();\n            return _isShapedLikeParsableError(err) ? this.fromError(err, opts) : this.generateArtificially(opts);\n        },\n\n        /**\n         * Get a backtrace from invocation point.\n         * IMPORTANT: Does not handle source maps or guess function names!\n         *\n         * @param {Object} opts\n         * @returns {Array} of StackFrame\n         */\n        getSync: function StackTrace$$getSync(opts) {\n            opts = _merge(_options, opts);\n            var err = _generateError();\n            var stack = _isShapedLikeParsableError(err) ? ErrorStackParser.parse(err) : StackGenerator.backtrace(opts);\n            return _filtered(stack, opts.filter);\n        },\n\n        /**\n         * Given an error object, parse it.\n         *\n         * @param {Error} error object\n         * @param {Object} opts\n         * @returns {Promise} for Array[StackFrame}\n         */\n        fromError: function StackTrace$$fromError(error, opts) {\n            opts = _merge(_options, opts);\n            var gps = new StackTraceGPS(opts);\n            return new Promise(function(resolve) {\n                var stackframes = _filtered(ErrorStackParser.parse(error), opts.filter);\n                resolve(Promise.all(stackframes.map(function(sf) {\n                    return new Promise(function(resolve) {\n                        function resolveOriginal() {\n                            resolve(sf);\n                        }\n\n                        gps.pinpoint(sf).then(resolve, resolveOriginal)['catch'](resolveOriginal);\n                    });\n                })));\n            }.bind(this));\n        },\n\n        /**\n         * Use StackGenerator to generate a backtrace.\n         *\n         * @param {Object} opts\n         * @returns {Promise} of Array[StackFrame]\n         */\n        generateArtificially: function StackTrace$$generateArtificially(opts) {\n            opts = _merge(_options, opts);\n            var stackFrames = StackGenerator.backtrace(opts);\n            if (typeof opts.filter === 'function') {\n                stackFrames = stackFrames.filter(opts.filter);\n            }\n            return Promise.resolve(stackFrames);\n        },\n\n        /**\n         * Given a function, wrap it such that invocations trigger a callback that\n         * is called with a stack trace.\n         *\n         * @param {Function} fn to be instrumented\n         * @param {Function} callback function to call with a stack trace on invocation\n         * @param {Function} errback optional function to call with error if unable to get stack trace.\n         * @param {Object} thisArg optional context object (e.g. window)\n         */\n        instrument: function StackTrace$$instrument(fn, callback, errback, thisArg) {\n            if (typeof fn !== 'function') {\n                throw new Error('Cannot instrument non-function object');\n            } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n                // Already instrumented, return given Function\n                return fn;\n            }\n\n            var instrumented = function StackTrace$$instrumented() {\n                try {\n                    this.get().then(callback, errback)['catch'](errback);\n                    return fn.apply(thisArg || this, arguments);\n                } catch (e) {\n                    if (_isShapedLikeParsableError(e)) {\n                        this.fromError(e).then(callback, errback)['catch'](errback);\n                    }\n                    throw e;\n                }\n            }.bind(this);\n            instrumented.__stacktraceOriginalFn = fn;\n\n            return instrumented;\n        },\n\n        /**\n         * Given a function that has been instrumented,\n         * revert the function to it's original (non-instrumented) state.\n         *\n         * @param {Function} fn to de-instrument\n         */\n        deinstrument: function StackTrace$$deinstrument(fn) {\n            if (typeof fn !== 'function') {\n                throw new Error('Cannot de-instrument non-function object');\n            } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n                return fn.__stacktraceOriginalFn;\n            } else {\n                // Function not instrumented, return original\n                return fn;\n            }\n        },\n\n        /**\n         * Given an error message and Array of StackFrames, serialize and POST to given URL.\n         *\n         * @param {Array} stackframes\n         * @param {String} url\n         * @param {String} errorMsg\n         * @param {Object} requestOptions\n         */\n        report: function StackTrace$$report(stackframes, url, errorMsg, requestOptions) {\n            return new Promise(function(resolve, reject) {\n                var req = new XMLHttpRequest();\n                req.onerror = reject;\n                req.onreadystatechange = function onreadystatechange() {\n                    if (req.readyState === 4) {\n                        if (req.status >= 200 && req.status < 400) {\n                            resolve(req.responseText);\n                        } else {\n                            reject(new Error('POST to ' + url + ' failed with status: ' + req.status));\n                        }\n                    }\n                };\n                req.open('post', url);\n\n                // Set request headers\n                req.setRequestHeader('Content-Type', 'application/json');\n                if (requestOptions && typeof requestOptions.headers === 'object') {\n                    var headers = requestOptions.headers;\n                    for (var header in headers) {\n                        if (Object.prototype.hasOwnProperty.call(headers, header)) {\n                            req.setRequestHeader(header, headers[header]);\n                        }\n                    }\n                }\n\n                var reportPayload = {stack: stackframes};\n                if (errorMsg !== undefined && errorMsg !== null) {\n                    reportPayload.message = errorMsg;\n                }\n\n                req.send(JSON.stringify(reportPayload));\n            });\n        }\n    };\n}));\n"],"names":["StackFrame","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","parse","error","stacktrace","this","parseOpera","stack","match","parseV8OrIE","parseFFOrSafari","Error","extractLocation","urlLike","indexOf","parts","exec","replace","undefined","split","filter","line","map","sanitizedLine","location","locationParts","functionName","fileName","lineNumber","columnNumber","source","functionNameRegex","matches","e","message","length","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","result","i","len","push","argsRaw","tokens","pop","functionCall","shift","args","backtrace","opts","maxStackSize","curr","arguments","callee","Array","test","toString","RegExp","$1","caller","_capitalize","str","charAt","toUpperCase","substring","_getter","p","booleanProps","numericProps","stringProps","props","concat","obj","prototype","getArgs","setArgs","v","Object","call","TypeError","getEvalOrigin","evalOrigin","setEvalOrigin","getFileName","getLineNumber","getColumnNumber","getFunctionName","getIsEval","fromString","argsStartIndex","argsEndIndex","lastIndexOf","locationString","Boolean","j","n","isNaN","parseFloat","isFinite","Number","k","String","util","has","hasOwnProperty","ArraySet","_array","_set","create","fromArray","aArray","aAllowDuplicates","set","add","size","getOwnPropertyNames","aStr","sStr","toSetString","isDuplicate","idx","at","aIdx","toArray","slice","exports","base64","encode","aValue","digit","encoded","vlq","toVLQSigned","VLQ_BASE","decode","aIndex","aOutParam","continuation","shifted","strLen","charCodeAt","value","rest","intToCharMap","number","charCode","recursiveSearch","aLow","aHigh","aNeedle","aHaystack","aCompare","aBias","mid","Math","floor","cmp","LEAST_UPPER_BOUND","GREATEST_LOWER_BOUND","search","index","MappingList","_sorted","_last","generatedLine","generatedColumn","unsortedForEach","aCallback","aThisArg","forEach","aMapping","mappingA","mappingB","lineA","lineB","columnA","columnB","compareByGeneratedPositionsInflated","sort","swap","ary","x","y","temp","doQuickSort","comparator","r","low","high","round","random","pivot","q","binarySearch","base64VLQ","quickSort","SourceMapConsumer","aSourceMap","sourceMap","JSON","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","version","getArg","sources","names","sourceRoot","sourcesContent","mappings","file","_version","normalize","isAbsolute","relative","_names","_sources","_mappings","Mapping","originalLine","originalColumn","name","lastOffset","column","_sections","s","url","offset","offsetLine","offsetColumn","generatedOffset","consumer","fromSourceMap","__generatedMappings","defineProperty","get","_parseMappings","__originalMappings","_charIsMappingSeparator","c","aSourceRoot","GENERATED_ORDER","ORIGINAL_ORDER","eachMapping","aContext","aOrder","context","_generatedMappings","_originalMappings","mapping","join","allGeneratedPositionsFor","aArgs","needle","_findMapping","compareByOriginalPositions","lastColumn","smc","_sourceRoot","_generateSourcesContent","_file","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","segment","end","previousGeneratedColumn","previousOriginalLine","previousOriginalColumn","previousSource","previousName","cachedSegments","originalMappings","compareByGeneratedPositionsDeflated","aMappings","aLineName","aColumnName","aComparator","computeColumnSpans","nextMapping","lastGeneratedColumn","Infinity","originalPositionFor","hasContentsOfAllSources","some","sc","sourceContentFor","aSource","nullOnMissing","urlParse","fileUriAbsPath","scheme","path","generatedPositionFor","constructor","sectionIndex","section","bias","every","content","generatedPosition","sectionMappings","adjustedMapping","SourceMapGenerator","_skipValidation","_sourcesContents","aSourceMapConsumer","generator","newMapping","generated","original","addMapping","sourceFile","setSourceContent","_validateMapping","aSourceFile","aSourceContent","keys","applySourceMap","aSourceMapPath","newSources","newNames","aGenerated","aOriginal","aName","stringify","_serializeMappings","next","nameIdx","sourceIdx","previousGeneratedLine","aSources","key","toJSON","REGEX_NEWLINE","isSourceNode","SourceNode","aLine","aColumn","aChunks","children","sourceContents","fromStringWithSourceMap","aGeneratedCode","aRelativePath","node","remainingLines","shiftNextLine","lastGeneratedLine","lastMapping","code","nextLine","substr","addMappingWithCode","aChunk","isArray","chunk","prepend","unshift","walk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","lastChild","walkSourceContents","fromSetString","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","aDefaultValue","urlRegexp","dataUrlRegexp","aUrl","auth","host","port","urlGenerate","aParsedUrl","aPath","part","up","splice","aRoot","aPathUrl","aRootUrl","joined","level","supportsNullProto","identity","isProtoString","strcmp","aStr1","aStr2","onlyCompareOriginal","onlyCompareGenerated","SourceMap","_xdr","Promise","resolve","reject","req","XMLHttpRequest","open","onerror","onreadystatechange","readyState","status","responseText","send","_atob","b64str","window","atob","_ensureStackFrameIsLegit","stackframe","StackTraceGPS","sourceCache","sourceMapConsumerCache","ajax","_get","isDataUrl","offline","sourceMapStart","encodedSource","xhrPromise","method","then","bind","_getSourceMapConsumer","sourceMappingURL","defaultSourceRoot","sourceMapConsumerPromise","sourceMapSource","string","_parseJson","catch","pinpoint","getMappedLocation","mappedStackFrame","resolveMappedStackFrame","findFunctionName","guessedFunctionName","syntaxes","maxLines","min","commentPos","m","_findFunctionName","_ensureSupportedEnvironment","lastSourceMappingUrl","matchSourceMappingUrl","sourceMappingUrlRegExp","_findSourceMappingURL","sourceMapConsumer","loc","mappedSource","_extractLocationInfoFromSourceMapSource","ErrorStackParser","StackGenerator","_options","_generateError","err","_merge","first","second","target","prop","_isShapedLikeParsableError","_filtered","stackframes","fromError","generateArtificially","getSync","gps","all","sf","resolveOriginal","stackFrames","instrument","fn","callback","errback","thisArg","__stacktraceOriginalFn","instrumented","apply","deinstrument","report","errorMsg","requestOptions","setRequestHeader","headers","header","reportPayload"],"sourceRoot":""}