Bug 1351537 - devtools-source-map v0.3.0: Update bundle from GitHub. r=jdescottes draft
authorJ. Ryan Stinnett <jryans@gmail.com>
Tue, 28 Mar 2017 23:07:17 -0500
changeset 552848 7c5c87c53360992db4fbb1a67d5ef01a39c9c3cf
parent 552691 272ce6c2572164f5f6a9fba2a980ba9ccf50770c
child 621931 e448b1dc5b193996348569bbcc4f4a59a90e533f
push id51490
push userbmo:jryans@gmail.com
push dateWed, 29 Mar 2017 04:08:34 +0000
reviewersjdescottes
bugs1351537
milestone55.0a1
Bug 1351537 - devtools-source-map v0.3.0: Update bundle from GitHub. r=jdescottes MozReview-Commit-ID: 1W9OXHs5pHq
devtools/client/shared/source-map/index.js
devtools/client/shared/source-map/worker.js
--- a/devtools/client/shared/source-map/index.js
+++ b/devtools/client/shared/source-map/index.js
@@ -1,18 +1,18 @@
 (function webpackUniversalModuleDefinition(root, factory) {
 	if(typeof exports === 'object' && typeof module === 'object')
-		module.exports = factory(require("devtools/shared/flags"));
+		module.exports = factory(require("Services"), require("devtools/client/shared/vendor/react"), require("devtools/client/shared/vendor/react-dom"), require("devtools/shared/flags"));
 	else if(typeof define === 'function' && define.amd)
-		define(["devtools/shared/flags"], factory);
+		define(["Services", "devtools/client/shared/vendor/react", "devtools/client/shared/vendor/react-dom", "devtools/shared/flags"], factory);
 	else {
-		var a = typeof exports === 'object' ? factory(require("devtools/shared/flags")) : factory(root["devtools/shared/flags"]);
+		var a = typeof exports === 'object' ? factory(require("Services"), require("devtools/client/shared/vendor/react"), require("devtools/client/shared/vendor/react-dom"), require("devtools/shared/flags")) : factory(root["Services"], root["devtools/client/shared/vendor/react"], root["devtools/client/shared/vendor/react-dom"], root["devtools/shared/flags"]);
 		for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
 	}
-})(this, function(__WEBPACK_EXTERNAL_MODULE_64__) {
+})(this, function(__WEBPACK_EXTERNAL_MODULE_7__, __WEBPACK_EXTERNAL_MODULE_9__, __WEBPACK_EXTERNAL_MODULE_10__, __WEBPACK_EXTERNAL_MODULE_83__) {
 return /******/ (function(modules) { // webpackBootstrap
 /******/ 	// The module cache
 /******/ 	var installedModules = {};
 
 /******/ 	// The require function
 /******/ 	function __webpack_require__(moduleId) {
 
 /******/ 		// Check if module is in cache
@@ -66,37 +66,44 @@ return /******/ (function(modules) { // 
 
 	  return function hasMappedSource(_x) {
 	    return _ref.apply(this, arguments);
 	  };
 	})();
 
 	function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
 
-	const { getValue } = __webpack_require__(1);
+	/* global DebuggerConfig */
+
 	const {
 	  originalToGeneratedId,
 	  generatedToOriginalId,
 	  isGeneratedId,
-	  isOriginalId,
-	  workerTask
-	} = __webpack_require__(65);
+	  isOriginalId
+	} = __webpack_require__(1);
+
+	const { workerUtils: { workerTask } } = __webpack_require__(6);
+	const { setConfig, getValue } = __webpack_require__(20);
+
+	// TODO: Rename this to something not specific to debugger (#265)
+	// $FlowIgnore: global DebuggerConfig
+	setConfig(({"workers":{"sourceMapURL":"resource://devtools/client/shared/source-map/worker.js"}}));
 
 	let sourceMapWorker;
 	function restartWorker() {
 	  if (sourceMapWorker) {
 	    sourceMapWorker.terminate();
 	  }
-	  sourceMapWorker = new Worker(getValue("sourceMapWorkerURL"));
+
+	  sourceMapWorker = new Worker(getValue("workers.sourceMapURL"));
 	  sourceMapWorker.onerror = () => {
 	    console.error("Error in source map worker");
 	  };
-
-	  sourceMapWorker.postMessage({ id: 0, method: "enableSourceMaps" });
 	}
+
 	restartWorker();
 
 	function destroyWorker() {
 	  if (sourceMapWorker) {
 	    sourceMapWorker.terminate();
 	    sourceMapWorker = null;
 	  }
 	}
@@ -122,51 +129,1112 @@ return /******/ (function(modules) { // 
 	  clearSourceMaps,
 	  destroyWorker
 	};
 
 /***/ },
 /* 1 */
 /***/ function(module, exports, __webpack_require__) {
 
-	const feature = __webpack_require__(2);
-
-	module.exports = feature;
-
+	const md5 = __webpack_require__(2);
+
+	function originalToGeneratedId(originalId) {
+	  const match = originalId.match(/(.*)\/originalSource/);
+	  return match ? match[1] : "";
+	}
+
+	function generatedToOriginalId(generatedId, url) {
+	  return `${generatedId}/originalSource-${md5(url)}`;
+	}
+
+	function isOriginalId(id) {
+	  return !!id.match(/\/originalSource/);
+	}
+
+	function isGeneratedId(id) {
+	  return !isOriginalId(id);
+	}
+
+	/**
+	 * Trims the query part or reference identifier of a URL string, if necessary.
+	 */
+	function trimUrlQuery(url) {
+	  let length = url.length;
+	  let q1 = url.indexOf("?");
+	  let q2 = url.indexOf("&");
+	  let q3 = url.indexOf("#");
+	  let q = Math.min(q1 != -1 ? q1 : length, q2 != -1 ? q2 : length, q3 != -1 ? q3 : length);
+
+	  return url.slice(0, q);
+	}
+
+	/**
+	 * Returns true if the specified URL and/or content type are specific to
+	 * JavaScript files.
+	 *
+	 * @return boolean
+	 *         True if the source is likely JavaScript.
+	 */
+	function isJavaScript(url, contentType = "") {
+	  return url && /\.(jsm|js)?$/.test(trimUrlQuery(url)) || contentType.includes("javascript");
+	}
+
+	function getContentType(url) {
+	  if (isJavaScript(url)) {
+	    return "text/javascript";
+	  }
+
+	  if (url.match(/ts$/)) {
+	    return "text/typescript";
+	  }
+
+	  if (url.match(/tsx$/)) {
+	    return "text/typescript-jsx";
+	  }
+
+	  if (url.match(/jsx$/)) {
+	    return "text/jsx";
+	  }
+
+	  if (url.match(/coffee$/)) {
+	    return "text/coffeescript";
+	  }
+
+	  if (url.match(/elm$/)) {
+	    return "text/elm";
+	  }
+
+	  if (url.match(/cljs$/)) {
+	    return "text/x-clojure";
+	  }
+
+	  return "text/plain";
+	}
+
+	module.exports = {
+	  originalToGeneratedId,
+	  generatedToOriginalId,
+	  isOriginalId,
+	  isGeneratedId,
+	  getContentType
+	};
 
 /***/ },
 /* 2 */
 /***/ function(module, exports, __webpack_require__) {
 
-	const pick = __webpack_require__(3);
-	const put = __webpack_require__(55);
-	const fs = __webpack_require__(61);
-	const path = __webpack_require__(62);
+	(function(){
+	  var crypt = __webpack_require__(3),
+	      utf8 = __webpack_require__(4).utf8,
+	      isBuffer = __webpack_require__(5),
+	      bin = __webpack_require__(4).bin,
+
+	  // The core
+	  md5 = function (message, options) {
+	    // Convert to byte array
+	    if (message.constructor == String)
+	      if (options && options.encoding === 'binary')
+	        message = bin.stringToBytes(message);
+	      else
+	        message = utf8.stringToBytes(message);
+	    else if (isBuffer(message))
+	      message = Array.prototype.slice.call(message, 0);
+	    else if (!Array.isArray(message))
+	      message = message.toString();
+	    // else, assume byte array already
+
+	    var m = crypt.bytesToWords(message),
+	        l = message.length * 8,
+	        a =  1732584193,
+	        b = -271733879,
+	        c = -1732584194,
+	        d =  271733878;
+
+	    // Swap endian
+	    for (var i = 0; i < m.length; i++) {
+	      m[i] = ((m[i] <<  8) | (m[i] >>> 24)) & 0x00FF00FF |
+	             ((m[i] << 24) | (m[i] >>>  8)) & 0xFF00FF00;
+	    }
+
+	    // Padding
+	    m[l >>> 5] |= 0x80 << (l % 32);
+	    m[(((l + 64) >>> 9) << 4) + 14] = l;
+
+	    // Method shortcuts
+	    var FF = md5._ff,
+	        GG = md5._gg,
+	        HH = md5._hh,
+	        II = md5._ii;
+
+	    for (var i = 0; i < m.length; i += 16) {
+
+	      var aa = a,
+	          bb = b,
+	          cc = c,
+	          dd = d;
+
+	      a = FF(a, b, c, d, m[i+ 0],  7, -680876936);
+	      d = FF(d, a, b, c, m[i+ 1], 12, -389564586);
+	      c = FF(c, d, a, b, m[i+ 2], 17,  606105819);
+	      b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);
+	      a = FF(a, b, c, d, m[i+ 4],  7, -176418897);
+	      d = FF(d, a, b, c, m[i+ 5], 12,  1200080426);
+	      c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);
+	      b = FF(b, c, d, a, m[i+ 7], 22, -45705983);
+	      a = FF(a, b, c, d, m[i+ 8],  7,  1770035416);
+	      d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);
+	      c = FF(c, d, a, b, m[i+10], 17, -42063);
+	      b = FF(b, c, d, a, m[i+11], 22, -1990404162);
+	      a = FF(a, b, c, d, m[i+12],  7,  1804603682);
+	      d = FF(d, a, b, c, m[i+13], 12, -40341101);
+	      c = FF(c, d, a, b, m[i+14], 17, -1502002290);
+	      b = FF(b, c, d, a, m[i+15], 22,  1236535329);
+
+	      a = GG(a, b, c, d, m[i+ 1],  5, -165796510);
+	      d = GG(d, a, b, c, m[i+ 6],  9, -1069501632);
+	      c = GG(c, d, a, b, m[i+11], 14,  643717713);
+	      b = GG(b, c, d, a, m[i+ 0], 20, -373897302);
+	      a = GG(a, b, c, d, m[i+ 5],  5, -701558691);
+	      d = GG(d, a, b, c, m[i+10],  9,  38016083);
+	      c = GG(c, d, a, b, m[i+15], 14, -660478335);
+	      b = GG(b, c, d, a, m[i+ 4], 20, -405537848);
+	      a = GG(a, b, c, d, m[i+ 9],  5,  568446438);
+	      d = GG(d, a, b, c, m[i+14],  9, -1019803690);
+	      c = GG(c, d, a, b, m[i+ 3], 14, -187363961);
+	      b = GG(b, c, d, a, m[i+ 8], 20,  1163531501);
+	      a = GG(a, b, c, d, m[i+13],  5, -1444681467);
+	      d = GG(d, a, b, c, m[i+ 2],  9, -51403784);
+	      c = GG(c, d, a, b, m[i+ 7], 14,  1735328473);
+	      b = GG(b, c, d, a, m[i+12], 20, -1926607734);
+
+	      a = HH(a, b, c, d, m[i+ 5],  4, -378558);
+	      d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);
+	      c = HH(c, d, a, b, m[i+11], 16,  1839030562);
+	      b = HH(b, c, d, a, m[i+14], 23, -35309556);
+	      a = HH(a, b, c, d, m[i+ 1],  4, -1530992060);
+	      d = HH(d, a, b, c, m[i+ 4], 11,  1272893353);
+	      c = HH(c, d, a, b, m[i+ 7], 16, -155497632);
+	      b = HH(b, c, d, a, m[i+10], 23, -1094730640);
+	      a = HH(a, b, c, d, m[i+13],  4,  681279174);
+	      d = HH(d, a, b, c, m[i+ 0], 11, -358537222);
+	      c = HH(c, d, a, b, m[i+ 3], 16, -722521979);
+	      b = HH(b, c, d, a, m[i+ 6], 23,  76029189);
+	      a = HH(a, b, c, d, m[i+ 9],  4, -640364487);
+	      d = HH(d, a, b, c, m[i+12], 11, -421815835);
+	      c = HH(c, d, a, b, m[i+15], 16,  530742520);
+	      b = HH(b, c, d, a, m[i+ 2], 23, -995338651);
+
+	      a = II(a, b, c, d, m[i+ 0],  6, -198630844);
+	      d = II(d, a, b, c, m[i+ 7], 10,  1126891415);
+	      c = II(c, d, a, b, m[i+14], 15, -1416354905);
+	      b = II(b, c, d, a, m[i+ 5], 21, -57434055);
+	      a = II(a, b, c, d, m[i+12],  6,  1700485571);
+	      d = II(d, a, b, c, m[i+ 3], 10, -1894986606);
+	      c = II(c, d, a, b, m[i+10], 15, -1051523);
+	      b = II(b, c, d, a, m[i+ 1], 21, -2054922799);
+	      a = II(a, b, c, d, m[i+ 8],  6,  1873313359);
+	      d = II(d, a, b, c, m[i+15], 10, -30611744);
+	      c = II(c, d, a, b, m[i+ 6], 15, -1560198380);
+	      b = II(b, c, d, a, m[i+13], 21,  1309151649);
+	      a = II(a, b, c, d, m[i+ 4],  6, -145523070);
+	      d = II(d, a, b, c, m[i+11], 10, -1120210379);
+	      c = II(c, d, a, b, m[i+ 2], 15,  718787259);
+	      b = II(b, c, d, a, m[i+ 9], 21, -343485551);
+
+	      a = (a + aa) >>> 0;
+	      b = (b + bb) >>> 0;
+	      c = (c + cc) >>> 0;
+	      d = (d + dd) >>> 0;
+	    }
+
+	    return crypt.endian([a, b, c, d]);
+	  };
+
+	  // Auxiliary functions
+	  md5._ff  = function (a, b, c, d, x, s, t) {
+	    var n = a + (b & c | ~b & d) + (x >>> 0) + t;
+	    return ((n << s) | (n >>> (32 - s))) + b;
+	  };
+	  md5._gg  = function (a, b, c, d, x, s, t) {
+	    var n = a + (b & d | c & ~d) + (x >>> 0) + t;
+	    return ((n << s) | (n >>> (32 - s))) + b;
+	  };
+	  md5._hh  = function (a, b, c, d, x, s, t) {
+	    var n = a + (b ^ c ^ d) + (x >>> 0) + t;
+	    return ((n << s) | (n >>> (32 - s))) + b;
+	  };
+	  md5._ii  = function (a, b, c, d, x, s, t) {
+	    var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;
+	    return ((n << s) | (n >>> (32 - s))) + b;
+	  };
+
+	  // Package private blocksize
+	  md5._blocksize = 16;
+	  md5._digestsize = 16;
+
+	  module.exports = function (message, options) {
+	    if (message === undefined || message === null)
+	      throw new Error('Illegal argument ' + message);
+
+	    var digestbytes = crypt.wordsToBytes(md5(message, options));
+	    return options && options.asBytes ? digestbytes :
+	        options && options.asString ? bin.bytesToString(digestbytes) :
+	        crypt.bytesToHex(digestbytes);
+	  };
+
+	})();
+
+
+/***/ },
+/* 3 */
+/***/ function(module, exports) {
+
+	(function() {
+	  var base64map
+	      = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
+
+	  crypt = {
+	    // Bit-wise rotation left
+	    rotl: function(n, b) {
+	      return (n << b) | (n >>> (32 - b));
+	    },
+
+	    // Bit-wise rotation right
+	    rotr: function(n, b) {
+	      return (n << (32 - b)) | (n >>> b);
+	    },
+
+	    // Swap big-endian to little-endian and vice versa
+	    endian: function(n) {
+	      // If number given, swap endian
+	      if (n.constructor == Number) {
+	        return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;
+	      }
+
+	      // Else, assume array and swap all items
+	      for (var i = 0; i < n.length; i++)
+	        n[i] = crypt.endian(n[i]);
+	      return n;
+	    },
+
+	    // Generate an array of any length of random bytes
+	    randomBytes: function(n) {
+	      for (var bytes = []; n > 0; n--)
+	        bytes.push(Math.floor(Math.random() * 256));
+	      return bytes;
+	    },
+
+	    // Convert a byte array to big-endian 32-bit words
+	    bytesToWords: function(bytes) {
+	      for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)
+	        words[b >>> 5] |= bytes[i] << (24 - b % 32);
+	      return words;
+	    },
+
+	    // Convert big-endian 32-bit words to a byte array
+	    wordsToBytes: function(words) {
+	      for (var bytes = [], b = 0; b < words.length * 32; b += 8)
+	        bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);
+	      return bytes;
+	    },
+
+	    // Convert a byte array to a hex string
+	    bytesToHex: function(bytes) {
+	      for (var hex = [], i = 0; i < bytes.length; i++) {
+	        hex.push((bytes[i] >>> 4).toString(16));
+	        hex.push((bytes[i] & 0xF).toString(16));
+	      }
+	      return hex.join('');
+	    },
+
+	    // Convert a hex string to a byte array
+	    hexToBytes: function(hex) {
+	      for (var bytes = [], c = 0; c < hex.length; c += 2)
+	        bytes.push(parseInt(hex.substr(c, 2), 16));
+	      return bytes;
+	    },
+
+	    // Convert a byte array to a base-64 string
+	    bytesToBase64: function(bytes) {
+	      for (var base64 = [], i = 0; i < bytes.length; i += 3) {
+	        var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];
+	        for (var j = 0; j < 4; j++)
+	          if (i * 8 + j * 6 <= bytes.length * 8)
+	            base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));
+	          else
+	            base64.push('=');
+	      }
+	      return base64.join('');
+	    },
+
+	    // Convert a base-64 string to a byte array
+	    base64ToBytes: function(base64) {
+	      // Remove non-base-64 characters
+	      base64 = base64.replace(/[^A-Z0-9+\/]/ig, '');
+
+	      for (var bytes = [], i = 0, imod4 = 0; i < base64.length;
+	          imod4 = ++i % 4) {
+	        if (imod4 == 0) continue;
+	        bytes.push(((base64map.indexOf(base64.charAt(i - 1))
+	            & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))
+	            | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));
+	      }
+	      return bytes;
+	    }
+	  };
+
+	  module.exports = crypt;
+	})();
+
+
+/***/ },
+/* 4 */
+/***/ function(module, exports) {
+
+	var charenc = {
+	  // UTF-8 encoding
+	  utf8: {
+	    // Convert a string to a byte array
+	    stringToBytes: function(str) {
+	      return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));
+	    },
+
+	    // Convert a byte array to a string
+	    bytesToString: function(bytes) {
+	      return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));
+	    }
+	  },
+
+	  // Binary encoding
+	  bin: {
+	    // Convert a string to a byte array
+	    stringToBytes: function(str) {
+	      for (var bytes = [], i = 0; i < str.length; i++)
+	        bytes.push(str.charCodeAt(i) & 0xFF);
+	      return bytes;
+	    },
+
+	    // Convert a byte array to a string
+	    bytesToString: function(bytes) {
+	      for (var str = [], i = 0; i < bytes.length; i++)
+	        str.push(String.fromCharCode(bytes[i]));
+	      return str.join('');
+	    }
+	  }
+	};
+
+	module.exports = charenc;
+
+
+/***/ },
+/* 5 */
+/***/ function(module, exports) {
+
+	/*!
+	 * Determine if an object is a Buffer
+	 *
+	 * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
+	 * @license  MIT
+	 */
+
+	// The _isBuffer check is for Safari 5-7 support, because it's missing
+	// Object.prototype.constructor. Remove this eventually
+	module.exports = function (obj) {
+	  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
+	}
+
+	function isBuffer (obj) {
+	  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
+	}
+
+	// For Node v0.10 support. Remove this eventually.
+	function isSlowBuffer (obj) {
+	  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
+	}
+
+
+/***/ },
+/* 6 */
+/***/ function(module, exports, __webpack_require__) {
+
+	const Services = __webpack_require__(7);
+	const SplitBox = __webpack_require__(8);
+	// const SplitBoxCSS = require("./client/shared/components/splitter/SplitBox.css")
+	const sprintf = __webpack_require__(12).sprintf;
+	const workerUtils = __webpack_require__(19);
+
+	module.exports = {
+	  Services,
+	  SplitBox,
+	  // SplitBoxCSS,
+	  sprintf,
+	  workerUtils
+	};
+
+/***/ },
+/* 7 */
+/***/ function(module, exports) {
+
+	module.exports = __WEBPACK_EXTERNAL_MODULE_7__;
+
+/***/ },
+/* 8 */
+/***/ function(module, exports, __webpack_require__) {
+
+	const React = __webpack_require__(9);
+	const ReactDOM = __webpack_require__(10);
+	const Draggable = React.createFactory(__webpack_require__(11));
+	const { DOM: dom, PropTypes } = React;
+
+	/**
+	 * This component represents a Splitter. The splitter supports vertical
+	 * as well as horizontal mode.
+	 */
+	const SplitBox = React.createClass({
+
+	  propTypes: {
+	    // Custom class name. You can use more names separated by a space.
+	    className: PropTypes.string,
+	    // Initial size of controlled panel.
+	    initialSize: PropTypes.any,
+	    // Optional initial width of controlled panel.
+	    initialWidth: PropTypes.number,
+	    // Optional initial height of controlled panel.
+	    initialHeight: PropTypes.number,
+	    // Left/top panel
+	    startPanel: PropTypes.any,
+	    // Left/top panel collapse state.
+	    startPanelCollapsed: PropTypes.bool,
+	    // Min panel size.
+	    minSize: PropTypes.any,
+	    // Max panel size.
+	    maxSize: PropTypes.any,
+	    // Right/bottom panel
+	    endPanel: PropTypes.any,
+	    // Right/bottom panel collapse state.
+	    endPanelCollapsed: PropTypes.bool,
+	    // True if the right/bottom panel should be controlled.
+	    endPanelControl: PropTypes.bool,
+	    // Size of the splitter handle bar.
+	    splitterSize: PropTypes.number,
+	    // True if the splitter bar is vertical (default is vertical).
+	    vert: PropTypes.bool,
+	    // Optional style properties passed into the splitbox
+	    style: PropTypes.object
+	  },
+
+	  displayName: "SplitBox",
+
+	  getDefaultProps() {
+	    return {
+	      splitterSize: 5,
+	      vert: true,
+	      endPanelControl: false,
+	      endPanelCollapsed: false,
+	      startPanelCollapsed: false
+	    };
+	  },
+
+	  /**
+	   * The state stores the current orientation (vertical or horizontal)
+	   * and the current size (width/height). All these values can change
+	   * during the component's life time.
+	   */
+	  getInitialState() {
+	    return {
+	      vert: this.props.vert,
+	      // We use integers for these properties
+	      width: parseInt(this.props.initialWidth || this.props.initialSize),
+	      height: parseInt(this.props.initialHeight || this.props.initialSize)
+	    };
+	  },
+
+	  componentWillReceiveProps(nextProps) {
+	    if (this.props.vert !== nextProps.vert) {
+	      this.setState({ vert: nextProps.vert });
+	    }
+	  },
+
+	  // Dragging Events
+
+	  /**
+	   * Set 'resizing' cursor on entire document during splitter dragging.
+	   * This avoids cursor-flickering that happens when the mouse leaves
+	   * the splitter bar area (happens frequently).
+	   */
+	  onStartMove() {
+	    const splitBox = ReactDOM.findDOMNode(this);
+	    const doc = splitBox.ownerDocument;
+	    let defaultCursor = doc.documentElement.style.cursor;
+	    doc.documentElement.style.cursor = this.state.vert ? "ew-resize" : "ns-resize";
+
+	    splitBox.classList.add("dragging");
+
+	    this.setState({
+	      defaultCursor: defaultCursor
+	    });
+	  },
+
+	  onStopMove() {
+	    const splitBox = ReactDOM.findDOMNode(this);
+	    const doc = splitBox.ownerDocument;
+	    doc.documentElement.style.cursor = this.state.defaultCursor;
+
+	    splitBox.classList.remove("dragging");
+	  },
+
+	  /**
+	   * Adjust size of the controlled panel. Depending on the current
+	   * orientation we either remember the width or height of
+	   * the splitter box.
+	   */
+	  onMove({ movementX, movementY }) {
+	    const node = ReactDOM.findDOMNode(this);
+	    const doc = node.ownerDocument;
+
+	    if (this.props.endPanelControl) {
+	      // For the end panel we need to increase the width/height when the
+	      // movement is towards the left/top.
+	      movementX = -movementX;
+	      movementY = -movementY;
+	    }
+
+	    if (this.state.vert) {
+	      const isRtl = doc.dir === "rtl";
+	      if (isRtl) {
+	        // In RTL we need to reverse the movement again -- but only for vertical
+	        // splitters
+	        movementX = -movementX;
+	      }
+
+	      this.setState((state, props) => ({
+	        width: state.width + movementX
+	      }));
+	    } else {
+	      this.setState((state, props) => ({
+	        height: state.height + movementY
+	      }));
+	    }
+	  },
+
+	  // Rendering
+	  preparePanelStyles() {
+	    const vert = this.state.vert;
+	    const {
+	      minSize, maxSize, startPanelCollapsed, endPanelControl,
+	      endPanelCollapsed } = this.props;
+	    let leftPanelStyle, rightPanelStyle;
+
+	    // Set proper size for panels depending on the current state.
+	    if (vert) {
+	      let startWidth = endPanelControl ? null : this.state.width,
+	          endWidth = endPanelControl ? this.state.width : null;
+
+	      leftPanelStyle = {
+	        maxWidth: endPanelControl ? null : maxSize,
+	        minWidth: endPanelControl ? null : minSize,
+	        width: startPanelCollapsed ? 0 : startWidth
+	      };
+	      rightPanelStyle = {
+	        maxWidth: endPanelControl ? maxSize : null,
+	        minWidth: endPanelControl ? minSize : null,
+	        width: endPanelCollapsed ? 0 : endWidth
+	      };
+	    } else {
+	      let startHeight = endPanelControl ? null : this.state.height,
+	          endHeight = endPanelControl ? this.state.height : null;
+
+	      leftPanelStyle = {
+	        maxHeight: endPanelControl ? null : maxSize,
+	        minHeight: endPanelControl ? null : minSize,
+	        height: endPanelCollapsed ? maxSize : startHeight
+	      };
+	      rightPanelStyle = {
+	        maxHeight: endPanelControl ? maxSize : null,
+	        minHeight: endPanelControl ? minSize : null,
+	        height: startPanelCollapsed ? maxSize : endHeight
+	      };
+	    }
+
+	    return { leftPanelStyle, rightPanelStyle };
+	  },
+
+	  render() {
+	    const vert = this.state.vert;
+	    const {
+	      startPanelCollapsed,
+	      startPanel,
+	      endPanel,
+	      endPanelControl,
+	      splitterSize,
+	      endPanelCollapsed
+	    } = this.props;
+
+	    let style = Object.assign({}, this.props.style);
+
+	    // Calculate class names list.
+	    let classNames = ["split-box"];
+	    classNames.push(vert ? "vert" : "horz");
+	    if (this.props.className) {
+	      classNames = classNames.concat(this.props.className.split(" "));
+	    }
+
+	    const { leftPanelStyle, rightPanelStyle } = this.preparePanelStyles();
+
+	    // Calculate splitter size
+	    let splitterStyle = {
+	      flex: `0 0 ${splitterSize}px`
+	    };
+
+	    return dom.div({
+	      className: classNames.join(" "),
+	      style: style }, !startPanelCollapsed ? dom.div({
+	      className: endPanelControl ? "uncontrolled" : "controlled",
+	      style: leftPanelStyle }, startPanel) : null, Draggable({
+	      className: "splitter",
+	      style: splitterStyle,
+	      onStart: this.onStartMove,
+	      onStop: this.onStopMove,
+	      onMove: this.onMove
+	    }), !endPanelCollapsed ? dom.div({
+	      className: endPanelControl ? "controlled" : "uncontrolled",
+	      style: rightPanelStyle }, endPanel) : null);
+	  }
+	});
+
+	module.exports = SplitBox;
+
+/***/ },
+/* 9 */
+/***/ function(module, exports) {
+
+	module.exports = __WEBPACK_EXTERNAL_MODULE_9__;
+
+/***/ },
+/* 10 */
+/***/ function(module, exports) {
+
+	module.exports = __WEBPACK_EXTERNAL_MODULE_10__;
+
+/***/ },
+/* 11 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/* This Source Code Form is subject to the terms of the Mozilla Public
+	 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+	 * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+	const React = __webpack_require__(9);
+	const ReactDOM = __webpack_require__(10);
+	const { DOM: dom, PropTypes } = React;
+
+	const Draggable = React.createClass({
+	  displayName: "Draggable",
+
+	  propTypes: {
+	    onMove: PropTypes.func.isRequired,
+	    onStart: PropTypes.func,
+	    onStop: PropTypes.func,
+	    style: PropTypes.object,
+	    className: PropTypes.string
+	  },
+
+	  startDragging(ev) {
+	    ev.preventDefault();
+	    const doc = ReactDOM.findDOMNode(this).ownerDocument;
+	    doc.addEventListener("mousemove", this.onMove);
+	    doc.addEventListener("mouseup", this.onUp);
+	    this.props.onStart && this.props.onStart();
+	  },
+
+	  onMove(ev) {
+	    ev.preventDefault();
+	    // We pass the whole event because we don't know which properties
+	    // the callee needs.
+	    this.props.onMove(ev);
+	  },
+
+	  onUp(ev) {
+	    ev.preventDefault();
+	    const doc = ReactDOM.findDOMNode(this).ownerDocument;
+	    doc.removeEventListener("mousemove", this.onMove);
+	    doc.removeEventListener("mouseup", this.onUp);
+	    this.props.onStop && this.props.onStop();
+	  },
+
+	  render() {
+	    return dom.div({
+	      style: this.props.style,
+	      className: this.props.className,
+	      onMouseDown: this.startDragging
+	    });
+	  }
+	});
+
+	module.exports = Draggable;
+
+/***/ },
+/* 12 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/**
+	 * Copyright (c) 2007-2016, Alexandru Marasteanu <hello [at) alexei (dot] ro>
+	 * All rights reserved.
+	 *
+	 * Redistribution and use in source and binary forms, with or without
+	 * modification, are permitted provided that the following conditions are met:
+	 * * Redistributions of source code must retain the above copyright
+	 *   notice, this list of conditions and the following disclaimer.
+	 * * Redistributions in binary form must reproduce the above copyright
+	 *   notice, this list of conditions and the following disclaimer in the
+	 *   documentation and/or other materials provided with the distribution.
+	 * * Neither the name of this software nor the names of its contributors may be
+	 *   used to endorse or promote products derived from this software without
+	 *   specific prior written permission.
+	 *
+	 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+	 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+	 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+	 * DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+	 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+	 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+	 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+	 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+	 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+	 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+	 *
+	 */
+
+	/* globals window, exports, define */
+
+	(function (window) {
+	    'use strict';
+
+	    var re = {
+	        not_string: /[^s]/,
+	        not_bool: /[^t]/,
+	        not_type: /[^T]/,
+	        not_primitive: /[^v]/,
+	        number: /[diefg]/,
+	        numeric_arg: /bcdiefguxX/,
+	        json: /[j]/,
+	        not_json: /[^j]/,
+	        text: /^[^\x25]+/,
+	        modulo: /^\x25{2}/,
+	        placeholder: /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijosStTuvxX])/,
+	        key: /^([a-z_][a-z_\d]*)/i,
+	        key_access: /^\.([a-z_][a-z_\d]*)/i,
+	        index_access: /^\[(\d+)\]/,
+	        sign: /^[\+\-]/
+	    };
+
+	    function sprintf() {
+	        var key = arguments[0],
+	            cache = sprintf.cache;
+	        if (!(cache[key] && cache.hasOwnProperty(key))) {
+	            cache[key] = sprintf.parse(key);
+	        }
+	        return sprintf.format.call(null, cache[key], arguments);
+	    }
+
+	    sprintf.format = function (parse_tree, argv) {
+	        var cursor = 1,
+	            tree_length = parse_tree.length,
+	            node_type = '',
+	            arg,
+	            output = [],
+	            i,
+	            k,
+	            match,
+	            pad,
+	            pad_character,
+	            pad_length,
+	            is_positive = true,
+	            sign = '';
+	        for (i = 0; i < tree_length; i++) {
+	            node_type = get_type(parse_tree[i]);
+	            if (node_type === 'string') {
+	                output[output.length] = parse_tree[i];
+	            } else if (node_type === 'array') {
+	                match = parse_tree[i]; // convenience purposes only
+	                if (match[2]) {
+	                    // keyword argument
+	                    arg = argv[cursor];
+	                    for (k = 0; k < match[2].length; k++) {
+	                        if (!arg.hasOwnProperty(match[2][k])) {
+	                            throw new Error(sprintf('[sprintf] property "%s" does not exist', match[2][k]));
+	                        }
+	                        arg = arg[match[2][k]];
+	                    }
+	                } else if (match[1]) {
+	                    // positional argument (explicit)
+	                    arg = argv[match[1]];
+	                } else {
+	                    // positional argument (implicit)
+	                    arg = argv[cursor++];
+	                }
+
+	                if (re.not_type.test(match[8]) && re.not_primitive.test(match[8]) && get_type(arg) == 'function') {
+	                    arg = arg();
+	                }
+
+	                if (re.numeric_arg.test(match[8]) && get_type(arg) != 'number' && isNaN(arg)) {
+	                    throw new TypeError(sprintf("[sprintf] expecting number but found %s", get_type(arg)));
+	                }
+
+	                if (re.number.test(match[8])) {
+	                    is_positive = arg >= 0;
+	                }
+
+	                switch (match[8]) {
+	                    case 'b':
+	                        arg = parseInt(arg, 10).toString(2);
+	                        break;
+	                    case 'c':
+	                        arg = String.fromCharCode(parseInt(arg, 10));
+	                        break;
+	                    case 'd':
+	                    case 'i':
+	                        arg = parseInt(arg, 10);
+	                        break;
+	                    case 'j':
+	                        arg = JSON.stringify(arg, null, match[6] ? parseInt(match[6]) : 0);
+	                        break;
+	                    case 'e':
+	                        arg = match[7] ? parseFloat(arg).toExponential(match[7]) : parseFloat(arg).toExponential();
+	                        break;
+	                    case 'f':
+	                        arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg);
+	                        break;
+	                    case 'g':
+	                        arg = match[7] ? parseFloat(arg).toPrecision(match[7]) : parseFloat(arg);
+	                        break;
+	                    case 'o':
+	                        arg = arg.toString(8);
+	                        break;
+	                    case 's':
+	                    case 'S':
+	                        arg = String(arg);
+	                        arg = match[7] ? arg.substring(0, match[7]) : arg;
+	                        break;
+	                    case 't':
+	                        arg = String(!!arg);
+	                        arg = match[7] ? arg.substring(0, match[7]) : arg;
+	                        break;
+	                    case 'T':
+	                        arg = get_type(arg);
+	                        arg = match[7] ? arg.substring(0, match[7]) : arg;
+	                        break;
+	                    case 'u':
+	                        arg = parseInt(arg, 10) >>> 0;
+	                        break;
+	                    case 'v':
+	                        arg = arg.valueOf();
+	                        arg = match[7] ? arg.substring(0, match[7]) : arg;
+	                        break;
+	                    case 'x':
+	                        arg = parseInt(arg, 10).toString(16);
+	                        break;
+	                    case 'X':
+	                        arg = parseInt(arg, 10).toString(16).toUpperCase();
+	                        break;
+	                }
+	                if (re.json.test(match[8])) {
+	                    output[output.length] = arg;
+	                } else {
+	                    if (re.number.test(match[8]) && (!is_positive || match[3])) {
+	                        sign = is_positive ? '+' : '-';
+	                        arg = arg.toString().replace(re.sign, '');
+	                    } else {
+	                        sign = '';
+	                    }
+	                    pad_character = match[4] ? match[4] === '0' ? '0' : match[4].charAt(1) : ' ';
+	                    pad_length = match[6] - (sign + arg).length;
+	                    pad = match[6] ? pad_length > 0 ? str_repeat(pad_character, pad_length) : '' : '';
+	                    output[output.length] = match[5] ? sign + arg + pad : pad_character === '0' ? sign + pad + arg : pad + sign + arg;
+	                }
+	            }
+	        }
+	        return output.join('');
+	    };
+
+	    sprintf.cache = {};
+
+	    sprintf.parse = function (fmt) {
+	        var _fmt = fmt,
+	            match = [],
+	            parse_tree = [],
+	            arg_names = 0;
+	        while (_fmt) {
+	            if ((match = re.text.exec(_fmt)) !== null) {
+	                parse_tree[parse_tree.length] = match[0];
+	            } else if ((match = re.modulo.exec(_fmt)) !== null) {
+	                parse_tree[parse_tree.length] = '%';
+	            } else if ((match = re.placeholder.exec(_fmt)) !== null) {
+	                if (match[2]) {
+	                    arg_names |= 1;
+	                    var field_list = [],
+	                        replacement_field = match[2],
+	                        field_match = [];
+	                    if ((field_match = re.key.exec(replacement_field)) !== null) {
+	                        field_list[field_list.length] = field_match[1];
+	                        while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {
+	                            if ((field_match = re.key_access.exec(replacement_field)) !== null) {
+	                                field_list[field_list.length] = field_match[1];
+	                            } else if ((field_match = re.index_access.exec(replacement_field)) !== null) {
+	                                field_list[field_list.length] = field_match[1];
+	                            } else {
+	                                throw new SyntaxError("[sprintf] failed to parse named argument key");
+	                            }
+	                        }
+	                    } else {
+	                        throw new SyntaxError("[sprintf] failed to parse named argument key");
+	                    }
+	                    match[2] = field_list;
+	                } else {
+	                    arg_names |= 2;
+	                }
+	                if (arg_names === 3) {
+	                    throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");
+	                }
+	                parse_tree[parse_tree.length] = match;
+	            } else {
+	                throw new SyntaxError("[sprintf] unexpected placeholder");
+	            }
+	            _fmt = _fmt.substring(match[0].length);
+	        }
+	        return parse_tree;
+	    };
+
+	    var vsprintf = function (fmt, argv, _argv) {
+	        _argv = (argv || []).slice(0);
+	        _argv.splice(0, 0, fmt);
+	        return sprintf.apply(null, _argv);
+	    };
+
+	    /**
+	     * helpers
+	     */
+	    function get_type(variable) {
+	        if (typeof variable === 'number') {
+	            return 'number';
+	        } else if (typeof variable === 'string') {
+	            return 'string';
+	        } else {
+	            return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase();
+	        }
+	    }
+
+	    var preformattedPadding = {
+	        '0': ['', '0', '00', '000', '0000', '00000', '000000', '0000000'],
+	        ' ': ['', ' ', '  ', '   ', '    ', '     ', '      ', '       '],
+	        '_': ['', '_', '__', '___', '____', '_____', '______', '_______']
+	    };
+	    function str_repeat(input, multiplier) {
+	        if (multiplier >= 0 && multiplier <= 7 && preformattedPadding[input]) {
+	            return preformattedPadding[input][multiplier];
+	        }
+	        return Array(multiplier + 1).join(input);
+	    }
+
+	    /**
+	     * export to either browser or node.js
+	     */
+	    if (true) {
+	        exports.sprintf = sprintf;
+	        exports.vsprintf = vsprintf;
+	    } else {
+	        window.sprintf = sprintf;
+	        window.vsprintf = vsprintf;
+
+	        if (typeof define === 'function' && define.amd) {
+	            define(function () {
+	                return {
+	                    sprintf: sprintf,
+	                    vsprintf: vsprintf
+	                };
+	            });
+	        }
+	    }
+	})(typeof window === 'undefined' ? this : window);
+
+/***/ },
+/* 13 */,
+/* 14 */,
+/* 15 */,
+/* 16 */,
+/* 17 */,
+/* 18 */,
+/* 19 */
+/***/ function(module, exports) {
+
+	let msgId = 1;
+	function workerTask(worker, method) {
+	  return function (...args) {
+	    return new Promise((resolve, reject) => {
+	      const id = msgId++;
+	      worker.postMessage({ id, method, args });
+
+	      const listener = ({ data: result }) => {
+	        if (result.id !== id) {
+	          return;
+	        }
+
+	        worker.removeEventListener("message", listener);
+	        if (result.error) {
+	          reject(result.error);
+	        } else {
+	          resolve(result.response);
+	        }
+	      };
+
+	      worker.addEventListener("message", listener);
+	    });
+	  };
+	}
+
+	module.exports = {
+	  workerTask
+	};
+
+/***/ },
+/* 20 */
+/***/ function(module, exports, __webpack_require__) {
+
+	const feature = __webpack_require__(21);
+
+	module.exports = feature;
+
+/***/ },
+/* 21 */
+/***/ function(module, exports, __webpack_require__) {
+
+	const pick = __webpack_require__(22);
+	const put = __webpack_require__(74);
+	const fs = __webpack_require__(80);
+	const path = __webpack_require__(81);
 
 	let config;
 
-	const flag = __webpack_require__(64);
+	const flag = __webpack_require__(83);
 
 	/**
 	 * Gets a config value for a given key
 	 * e.g "chrome.webSocketPort"
 	 */
 	function getValue(key) {
 	  return pick(config, key);
 	}
 
 	function setValue(key, value) {
 	  return put(config, key, value);
 	}
 
 	function isEnabled(key) {
-	  return config.features &&
-	    typeof config.features[key] == "object" ?
-	    config.features[key].enabled :
-	    config.features[key];
+	  return config.features && typeof config.features[key] == "object" ? config.features[key].enabled : config.features[key];
 	}
 
 	function isDevelopment() {
 	  if (isFirefoxPanel()) {
 	    // Default to production if compiling for the Firefox panel
 	    return ("production") === "development";
 	  }
 	  return ("production") !== "production";
@@ -180,17 +1248,18 @@ return /******/ (function(modules) { // 
 	  return ("firefox-panel") == "firefox-panel";
 	}
 
 	function isApplication() {
 	  return ("firefox-panel") == "application";
 	}
 
 	function isFirefox() {
-	  return /firefox/i.test(navigator.userAgent);
+	  return (/firefox/i.test(navigator.userAgent)
+	  );
 	}
 
 	function setConfig(value) {
 	  config = value;
 	}
 
 	function getConfig() {
 	  return config;
@@ -212,22 +1281,21 @@ return /******/ (function(modules) { // 
 	  isFirefoxPanel,
 	  isApplication,
 	  isFirefox,
 	  getConfig,
 	  setConfig,
 	  updateLocalConfig
 	};
 
-
 /***/ },
-/* 3 */
+/* 22 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var baseGet = __webpack_require__(4);
+	var baseGet = __webpack_require__(23);
 
 	/**
 	 * Gets the value at `path` of `object`. If the resolved value is
 	 * `undefined`, the `defaultValue` is returned in its place.
 	 *
 	 * @static
 	 * @memberOf _
 	 * @since 3.7.0
@@ -253,21 +1321,21 @@ return /******/ (function(modules) { // 
 	  var result = object == null ? undefined : baseGet(object, path);
 	  return result === undefined ? defaultValue : result;
 	}
 
 	module.exports = get;
 
 
 /***/ },
-/* 4 */
+/* 23 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var castPath = __webpack_require__(5),
-	    toKey = __webpack_require__(54);
+	var castPath = __webpack_require__(24),
+	    toKey = __webpack_require__(73);
 
 	/**
 	 * The base implementation of `_.get` without support for default values.
 	 *
 	 * @private
 	 * @param {Object} object The object to query.
 	 * @param {Array|string} path The path of the property to get.
 	 * @returns {*} Returns the resolved value.
@@ -283,23 +1351,23 @@ return /******/ (function(modules) { // 
 	  }
 	  return (index && index == length) ? object : undefined;
 	}
 
 	module.exports = baseGet;
 
 
 /***/ },
-/* 5 */
+/* 24 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var isArray = __webpack_require__(6),
-	    isKey = __webpack_require__(7),
-	    stringToPath = __webpack_require__(16),
-	    toString = __webpack_require__(51);
+	var isArray = __webpack_require__(25),
+	    isKey = __webpack_require__(26),
+	    stringToPath = __webpack_require__(35),
+	    toString = __webpack_require__(70);
 
 	/**
 	 * Casts `value` to a path array if it's not one.
 	 *
 	 * @private
 	 * @param {*} value The value to inspect.
 	 * @param {Object} [object] The object to query keys on.
 	 * @returns {Array} Returns the cast property path array.
@@ -310,17 +1378,17 @@ return /******/ (function(modules) { // 
 	  }
 	  return isKey(value, object) ? [value] : stringToPath(toString(value));
 	}
 
 	module.exports = castPath;
 
 
 /***/ },
-/* 6 */
+/* 25 */
 /***/ function(module, exports) {
 
 	/**
 	 * Checks if `value` is classified as an `Array` object.
 	 *
 	 * @static
 	 * @memberOf _
 	 * @since 0.1.0
@@ -342,21 +1410,21 @@ return /******/ (function(modules) { // 
 	 * // => false
 	 */
 	var isArray = Array.isArray;
 
 	module.exports = isArray;
 
 
 /***/ },
-/* 7 */
+/* 26 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var isArray = __webpack_require__(6),
-	    isSymbol = __webpack_require__(8);
+	var isArray = __webpack_require__(25),
+	    isSymbol = __webpack_require__(27);
 
 	/** Used to match property names within property paths. */
 	var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
 	    reIsPlainProp = /^\w*$/;
 
 	/**
 	 * Checks if `value` is a property name and not a property path.
 	 *
@@ -377,21 +1445,21 @@ return /******/ (function(modules) { // 
 	  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
 	    (object != null && value in Object(object));
 	}
 
 	module.exports = isKey;
 
 
 /***/ },
-/* 8 */
+/* 27 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var baseGetTag = __webpack_require__(9),
-	    isObjectLike = __webpack_require__(15);
+	var baseGetTag = __webpack_require__(28),
+	    isObjectLike = __webpack_require__(34);
 
 	/** `Object#toString` result references. */
 	var symbolTag = '[object Symbol]';
 
 	/**
 	 * Checks if `value` is classified as a `Symbol` primitive or object.
 	 *
 	 * @static
@@ -412,22 +1480,22 @@ return /******/ (function(modules) { // 
 	  return typeof value == 'symbol' ||
 	    (isObjectLike(value) && baseGetTag(value) == symbolTag);
 	}
 
 	module.exports = isSymbol;
 
 
 /***/ },
-/* 9 */
+/* 28 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var Symbol = __webpack_require__(10),
-	    getRawTag = __webpack_require__(13),
-	    objectToString = __webpack_require__(14);
+	var Symbol = __webpack_require__(29),
+	    getRawTag = __webpack_require__(32),
+	    objectToString = __webpack_require__(33);
 
 	/** `Object#toString` result references. */
 	var nullTag = '[object Null]',
 	    undefinedTag = '[object Undefined]';
 
 	/** Built-in value references. */
 	var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
 
@@ -446,58 +1514,58 @@ return /******/ (function(modules) { // 
 	    ? getRawTag(value)
 	    : objectToString(value);
 	}
 
 	module.exports = baseGetTag;
 
 
 /***/ },
-/* 10 */
+/* 29 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var root = __webpack_require__(11);
+	var root = __webpack_require__(30);
 
 	/** Built-in value references. */
 	var Symbol = root.Symbol;
 
 	module.exports = Symbol;
 
 
 /***/ },
-/* 11 */
+/* 30 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var freeGlobal = __webpack_require__(12);
+	var freeGlobal = __webpack_require__(31);
 
 	/** Detect free variable `self`. */
 	var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
 
 	/** Used as a reference to the global object. */
 	var root = freeGlobal || freeSelf || Function('return this')();
 
 	module.exports = root;
 
 
 /***/ },
-/* 12 */
+/* 31 */
 /***/ function(module, exports) {
 
 	/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
 	var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
 
 	module.exports = freeGlobal;
 
 	/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
 
 /***/ },
-/* 13 */
+/* 32 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var Symbol = __webpack_require__(10);
+	var Symbol = __webpack_require__(29);
 
 	/** Used for built-in method references. */
 	var objectProto = Object.prototype;
 
 	/** Used to check objects for own properties. */
 	var hasOwnProperty = objectProto.hasOwnProperty;
 
 	/**
@@ -536,17 +1604,17 @@ return /******/ (function(modules) { // 
 	  }
 	  return result;
 	}
 
 	module.exports = getRawTag;
 
 
 /***/ },
-/* 14 */
+/* 33 */
 /***/ function(module, exports) {
 
 	/** Used for built-in method references. */
 	var objectProto = Object.prototype;
 
 	/**
 	 * Used to resolve the
 	 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
@@ -564,17 +1632,17 @@ return /******/ (function(modules) { // 
 	function objectToString(value) {
 	  return nativeObjectToString.call(value);
 	}
 
 	module.exports = objectToString;
 
 
 /***/ },
-/* 15 */
+/* 34 */
 /***/ function(module, exports) {
 
 	/**
 	 * Checks if `value` is object-like. A value is object-like if it's not `null`
 	 * and has a `typeof` result of "object".
 	 *
 	 * @static
 	 * @memberOf _
@@ -599,20 +1667,20 @@ return /******/ (function(modules) { // 
 	function isObjectLike(value) {
 	  return value != null && typeof value == 'object';
 	}
 
 	module.exports = isObjectLike;
 
 
 /***/ },
-/* 16 */
+/* 35 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var memoizeCapped = __webpack_require__(17);
+	var memoizeCapped = __webpack_require__(36);
 
 	/** Used to match property names within property paths. */
 	var reLeadingDot = /^\./,
 	    rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
 
 	/** Used to match backslashes in property paths. */
 	var reEscapeChar = /\\(\\)?/g;
 
@@ -633,20 +1701,20 @@ return /******/ (function(modules) { // 
 	  });
 	  return result;
 	});
 
 	module.exports = stringToPath;
 
 
 /***/ },
-/* 17 */
+/* 36 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var memoize = __webpack_require__(18);
+	var memoize = __webpack_require__(37);
 
 	/** Used as the maximum memoize cache size. */
 	var MAX_MEMOIZE_SIZE = 500;
 
 	/**
 	 * A specialized version of `_.memoize` which clears the memoized function's
 	 * cache when it exceeds `MAX_MEMOIZE_SIZE`.
 	 *
@@ -665,20 +1733,20 @@ return /******/ (function(modules) { // 
 	  var cache = result.cache;
 	  return result;
 	}
 
 	module.exports = memoizeCapped;
 
 
 /***/ },
-/* 18 */
+/* 37 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var MapCache = __webpack_require__(19);
+	var MapCache = __webpack_require__(38);
 
 	/** Error message constants. */
 	var FUNC_ERROR_TEXT = 'Expected a function';
 
 	/**
 	 * Creates a function that memoizes the result of `func`. If `resolver` is
 	 * provided, it determines the cache key for storing the result based on the
 	 * arguments provided to the memoized function. By default, the first argument
@@ -744,24 +1812,24 @@ return /******/ (function(modules) { // 
 
 	// Expose `MapCache`.
 	memoize.Cache = MapCache;
 
 	module.exports = memoize;
 
 
 /***/ },
-/* 19 */
+/* 38 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var mapCacheClear = __webpack_require__(20),
-	    mapCacheDelete = __webpack_require__(45),
-	    mapCacheGet = __webpack_require__(48),
-	    mapCacheHas = __webpack_require__(49),
-	    mapCacheSet = __webpack_require__(50);
+	var mapCacheClear = __webpack_require__(39),
+	    mapCacheDelete = __webpack_require__(64),
+	    mapCacheGet = __webpack_require__(67),
+	    mapCacheHas = __webpack_require__(68),
+	    mapCacheSet = __webpack_require__(69);
 
 	/**
 	 * Creates a map cache object to store key-value pairs.
 	 *
 	 * @private
 	 * @constructor
 	 * @param {Array} [entries] The key-value pairs to cache.
 	 */
@@ -782,22 +1850,22 @@ return /******/ (function(modules) { // 
 	MapCache.prototype.get = mapCacheGet;
 	MapCache.prototype.has = mapCacheHas;
 	MapCache.prototype.set = mapCacheSet;
 
 	module.exports = MapCache;
 
 
 /***/ },
-/* 20 */
+/* 39 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var Hash = __webpack_require__(21),
-	    ListCache = __webpack_require__(36),
-	    Map = __webpack_require__(44);
+	var Hash = __webpack_require__(40),
+	    ListCache = __webpack_require__(55),
+	    Map = __webpack_require__(63);
 
 	/**
 	 * Removes all key-value entries from the map.
 	 *
 	 * @private
 	 * @name clear
 	 * @memberOf MapCache
 	 */
@@ -809,24 +1877,24 @@ return /******/ (function(modules) { // 
 	    'string': new Hash
 	  };
 	}
 
 	module.exports = mapCacheClear;
 
 
 /***/ },
-/* 21 */
+/* 40 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var hashClear = __webpack_require__(22),
-	    hashDelete = __webpack_require__(32),
-	    hashGet = __webpack_require__(33),
-	    hashHas = __webpack_require__(34),
-	    hashSet = __webpack_require__(35);
+	var hashClear = __webpack_require__(41),
+	    hashDelete = __webpack_require__(51),
+	    hashGet = __webpack_require__(52),
+	    hashHas = __webpack_require__(53),
+	    hashSet = __webpack_require__(54);
 
 	/**
 	 * Creates a hash object.
 	 *
 	 * @private
 	 * @constructor
 	 * @param {Array} [entries] The key-value pairs to cache.
 	 */
@@ -847,20 +1915,20 @@ return /******/ (function(modules) { // 
 	Hash.prototype.get = hashGet;
 	Hash.prototype.has = hashHas;
 	Hash.prototype.set = hashSet;
 
 	module.exports = Hash;
 
 
 /***/ },
-/* 22 */
+/* 41 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var nativeCreate = __webpack_require__(23);
+	var nativeCreate = __webpack_require__(42);
 
 	/**
 	 * Removes all key-value entries from the hash.
 	 *
 	 * @private
 	 * @name clear
 	 * @memberOf Hash
 	 */
@@ -868,33 +1936,33 @@ return /******/ (function(modules) { // 
 	  this.__data__ = nativeCreate ? nativeCreate(null) : {};
 	  this.size = 0;
 	}
 
 	module.exports = hashClear;
 
 
 /***/ },
-/* 23 */
+/* 42 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var getNative = __webpack_require__(24);
+	var getNative = __webpack_require__(43);
 
 	/* Built-in method references that are verified to be native. */
 	var nativeCreate = getNative(Object, 'create');
 
 	module.exports = nativeCreate;
 
 
 /***/ },
-/* 24 */
+/* 43 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var baseIsNative = __webpack_require__(25),
-	    getValue = __webpack_require__(31);
+	var baseIsNative = __webpack_require__(44),
+	    getValue = __webpack_require__(50);
 
 	/**
 	 * Gets the native function at `key` of `object`.
 	 *
 	 * @private
 	 * @param {Object} object The object to query.
 	 * @param {string} key The key of the method to get.
 	 * @returns {*} Returns the function if it's native, else `undefined`.
@@ -903,23 +1971,23 @@ return /******/ (function(modules) { // 
 	  var value = getValue(object, key);
 	  return baseIsNative(value) ? value : undefined;
 	}
 
 	module.exports = getNative;
 
 
 /***/ },
-/* 25 */
+/* 44 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var isFunction = __webpack_require__(26),
-	    isMasked = __webpack_require__(28),
-	    isObject = __webpack_require__(27),
-	    toSource = __webpack_require__(30);
+	var isFunction = __webpack_require__(45),
+	    isMasked = __webpack_require__(47),
+	    isObject = __webpack_require__(46),
+	    toSource = __webpack_require__(49);
 
 	/**
 	 * Used to match `RegExp`
 	 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
 	 */
 	var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
 
 	/** Used to detect host constructors (Safari). */
@@ -956,21 +2024,21 @@ return /******/ (function(modules) { // 
 	  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
 	  return pattern.test(toSource(value));
 	}
 
 	module.exports = baseIsNative;
 
 
 /***/ },
-/* 26 */
+/* 45 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var baseGetTag = __webpack_require__(9),
-	    isObject = __webpack_require__(27);
+	var baseGetTag = __webpack_require__(28),
+	    isObject = __webpack_require__(46);
 
 	/** `Object#toString` result references. */
 	var asyncTag = '[object AsyncFunction]',
 	    funcTag = '[object Function]',
 	    genTag = '[object GeneratorFunction]',
 	    proxyTag = '[object Proxy]';
 
 	/**
@@ -999,17 +2067,17 @@ return /******/ (function(modules) { // 
 	  var tag = baseGetTag(value);
 	  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
 	}
 
 	module.exports = isFunction;
 
 
 /***/ },
-/* 27 */
+/* 46 */
 /***/ function(module, exports) {
 
 	/**
 	 * Checks if `value` is the
 	 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
 	 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
 	 *
 	 * @static
@@ -1036,20 +2104,20 @@ return /******/ (function(modules) { // 
 	  var type = typeof value;
 	  return value != null && (type == 'object' || type == 'function');
 	}
 
 	module.exports = isObject;
 
 
 /***/ },
-/* 28 */
+/* 47 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var coreJsData = __webpack_require__(29);
+	var coreJsData = __webpack_require__(48);
 
 	/** Used to detect methods masquerading as native. */
 	var maskSrcKey = (function() {
 	  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
 	  return uid ? ('Symbol(src)_1.' + uid) : '';
 	}());
 
 	/**
@@ -1062,29 +2130,29 @@ return /******/ (function(modules) { // 
 	function isMasked(func) {
 	  return !!maskSrcKey && (maskSrcKey in func);
 	}
 
 	module.exports = isMasked;
 
 
 /***/ },
-/* 29 */
+/* 48 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var root = __webpack_require__(11);
+	var root = __webpack_require__(30);
 
 	/** Used to detect overreaching core-js shims. */
 	var coreJsData = root['__core-js_shared__'];
 
 	module.exports = coreJsData;
 
 
 /***/ },
-/* 30 */
+/* 49 */
 /***/ function(module, exports) {
 
 	/** Used for built-in method references. */
 	var funcProto = Function.prototype;
 
 	/** Used to resolve the decompiled source of functions. */
 	var funcToString = funcProto.toString;
 
@@ -1106,17 +2174,17 @@ return /******/ (function(modules) { // 
 	  }
 	  return '';
 	}
 
 	module.exports = toSource;
 
 
 /***/ },
-/* 31 */
+/* 50 */
 /***/ function(module, exports) {
 
 	/**
 	 * Gets the value at `key` of `object`.
 	 *
 	 * @private
 	 * @param {Object} [object] The object to query.
 	 * @param {string} key The key of the property to get.
@@ -1125,17 +2193,17 @@ return /******/ (function(modules) { // 
 	function getValue(object, key) {
 	  return object == null ? undefined : object[key];
 	}
 
 	module.exports = getValue;
 
 
 /***/ },
-/* 32 */
+/* 51 */
 /***/ function(module, exports) {
 
 	/**
 	 * Removes `key` and its value from the hash.
 	 *
 	 * @private
 	 * @name delete
 	 * @memberOf Hash
@@ -1148,20 +2216,20 @@ return /******/ (function(modules) { // 
 	  this.size -= result ? 1 : 0;
 	  return result;
 	}
 
 	module.exports = hashDelete;
 
 
 /***/ },
-/* 33 */
+/* 52 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var nativeCreate = __webpack_require__(23);
+	var nativeCreate = __webpack_require__(42);
 
 	/** Used to stand-in for `undefined` hash values. */
 	var HASH_UNDEFINED = '__lodash_hash_undefined__';
 
 	/** Used for built-in method references. */
 	var objectProto = Object.prototype;
 
 	/** Used to check objects for own properties. */
@@ -1184,20 +2252,20 @@ return /******/ (function(modules) { // 
 	  }
 	  return hasOwnProperty.call(data, key) ? data[key] : undefined;
 	}
 
 	module.exports = hashGet;
 
 
 /***/ },
-/* 34 */
+/* 53 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var nativeCreate = __webpack_require__(23);
+	var nativeCreate = __webpack_require__(42);
 
 	/** Used for built-in method references. */
 	var objectProto = Object.prototype;
 
 	/** Used to check objects for own properties. */
 	var hasOwnProperty = objectProto.hasOwnProperty;
 
 	/**
@@ -1213,20 +2281,20 @@ return /******/ (function(modules) { // 
 	  var data = this.__data__;
 	  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
 	}
 
 	module.exports = hashHas;
 
 
 /***/ },
-/* 35 */
+/* 54 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var nativeCreate = __webpack_require__(23);
+	var nativeCreate = __webpack_require__(42);
 
 	/** Used to stand-in for `undefined` hash values. */
 	var HASH_UNDEFINED = '__lodash_hash_undefined__';
 
 	/**
 	 * Sets the hash `key` to `value`.
 	 *
 	 * @private
@@ -1242,24 +2310,24 @@ return /******/ (function(modules) { // 
 	  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
 	  return this;
 	}
 
 	module.exports = hashSet;
 
 
 /***/ },
-/* 36 */
+/* 55 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var listCacheClear = __webpack_require__(37),
-	    listCacheDelete = __webpack_require__(38),
-	    listCacheGet = __webpack_require__(41),
-	    listCacheHas = __webpack_require__(42),
-	    listCacheSet = __webpack_require__(43);
+	var listCacheClear = __webpack_require__(56),
+	    listCacheDelete = __webpack_require__(57),
+	    listCacheGet = __webpack_require__(60),
+	    listCacheHas = __webpack_require__(61),
+	    listCacheSet = __webpack_require__(62);
 
 	/**
 	 * Creates an list cache object.
 	 *
 	 * @private
 	 * @constructor
 	 * @param {Array} [entries] The key-value pairs to cache.
 	 */
@@ -1280,17 +2348,17 @@ return /******/ (function(modules) { // 
 	ListCache.prototype.get = listCacheGet;
 	ListCache.prototype.has = listCacheHas;
 	ListCache.prototype.set = listCacheSet;
 
 	module.exports = ListCache;
 
 
 /***/ },
-/* 37 */
+/* 56 */
 /***/ function(module, exports) {
 
 	/**
 	 * Removes all key-value entries from the list cache.
 	 *
 	 * @private
 	 * @name clear
 	 * @memberOf ListCache
@@ -1299,20 +2367,20 @@ return /******/ (function(modules) { // 
 	  this.__data__ = [];
 	  this.size = 0;
 	}
 
 	module.exports = listCacheClear;
 
 
 /***/ },
-/* 38 */
+/* 57 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var assocIndexOf = __webpack_require__(39);
+	var assocIndexOf = __webpack_require__(58);
 
 	/** Used for built-in method references. */
 	var arrayProto = Array.prototype;
 
 	/** Built-in value references. */
 	var splice = arrayProto.splice;
 
 	/**
@@ -1340,20 +2408,20 @@ return /******/ (function(modules) { // 
 	  --this.size;
 	  return true;
 	}
 
 	module.exports = listCacheDelete;
 
 
 /***/ },
-/* 39 */
+/* 58 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var eq = __webpack_require__(40);
+	var eq = __webpack_require__(59);
 
 	/**
 	 * Gets the index at which the `key` is found in `array` of key-value pairs.
 	 *
 	 * @private
 	 * @param {Array} array The array to inspect.
 	 * @param {*} key The key to search for.
 	 * @returns {number} Returns the index of the matched value, else `-1`.
@@ -1367,17 +2435,17 @@ return /******/ (function(modules) { // 
 	  }
 	  return -1;
 	}
 
 	module.exports = assocIndexOf;
 
 
 /***/ },
-/* 40 */
+/* 59 */
 /***/ function(module, exports) {
 
 	/**
 	 * Performs a
 	 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 	 * comparison between two values to determine if they are equivalent.
 	 *
 	 * @static
@@ -1410,20 +2478,20 @@ return /******/ (function(modules) { // 
 	function eq(value, other) {
 	  return value === other || (value !== value && other !== other);
 	}
 
 	module.exports = eq;
 
 
 /***/ },
-/* 41 */
+/* 60 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var assocIndexOf = __webpack_require__(39);
+	var assocIndexOf = __webpack_require__(58);
 
 	/**
 	 * Gets the list cache value for `key`.
 	 *
 	 * @private
 	 * @name get
 	 * @memberOf ListCache
 	 * @param {string} key The key of the value to get.
@@ -1435,20 +2503,20 @@ return /******/ (function(modules) { // 
 
 	  return index < 0 ? undefined : data[index][1];
 	}
 
 	module.exports = listCacheGet;
 
 
 /***/ },
-/* 42 */
+/* 61 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var assocIndexOf = __webpack_require__(39);
+	var assocIndexOf = __webpack_require__(58);
 
 	/**
 	 * Checks if a list cache value for `key` exists.
 	 *
 	 * @private
 	 * @name has
 	 * @memberOf ListCache
 	 * @param {string} key The key of the entry to check.
@@ -1457,20 +2525,20 @@ return /******/ (function(modules) { // 
 	function listCacheHas(key) {
 	  return assocIndexOf(this.__data__, key) > -1;
 	}
 
 	module.exports = listCacheHas;
 
 
 /***/ },
-/* 43 */
+/* 62 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var assocIndexOf = __webpack_require__(39);
+	var assocIndexOf = __webpack_require__(58);
 
 	/**
 	 * Sets the list cache `key` to `value`.
 	 *
 	 * @private
 	 * @name set
 	 * @memberOf ListCache
 	 * @param {string} key The key of the value to set.
@@ -1489,33 +2557,33 @@ return /******/ (function(modules) { // 
 	  }
 	  return this;
 	}
 
 	module.exports = listCacheSet;
 
 
 /***/ },
-/* 44 */
+/* 63 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var getNative = __webpack_require__(24),
-	    root = __webpack_require__(11);
+	var getNative = __webpack_require__(43),
+	    root = __webpack_require__(30);
 
 	/* Built-in method references that are verified to be native. */
 	var Map = getNative(root, 'Map');
 
 	module.exports = Map;
 
 
 /***/ },
-/* 45 */
+/* 64 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var getMapData = __webpack_require__(46);
+	var getMapData = __webpack_require__(65);
 
 	/**
 	 * Removes `key` and its value from the map.
 	 *
 	 * @private
 	 * @name delete
 	 * @memberOf MapCache
 	 * @param {string} key The key of the value to remove.
@@ -1526,20 +2594,20 @@ return /******/ (function(modules) { // 
 	  this.size -= result ? 1 : 0;
 	  return result;
 	}
 
 	module.exports = mapCacheDelete;
 
 
 /***/ },
-/* 46 */
+/* 65 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var isKeyable = __webpack_require__(47);
+	var isKeyable = __webpack_require__(66);
 
 	/**
 	 * Gets the data for `map`.
 	 *
 	 * @private
 	 * @param {Object} map The map to query.
 	 * @param {string} key The reference key.
 	 * @returns {*} Returns the map data.
@@ -1550,17 +2618,17 @@ return /******/ (function(modules) { // 
 	    ? data[typeof key == 'string' ? 'string' : 'hash']
 	    : data.map;
 	}
 
 	module.exports = getMapData;
 
 
 /***/ },
-/* 47 */
+/* 66 */
 /***/ function(module, exports) {
 
 	/**
 	 * Checks if `value` is suitable for use as unique object key.
 	 *
 	 * @private
 	 * @param {*} value The value to check.
 	 * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
@@ -1571,20 +2639,20 @@ return /******/ (function(modules) { // 
 	    ? (value !== '__proto__')
 	    : (value === null);
 	}
 
 	module.exports = isKeyable;
 
 
 /***/ },
-/* 48 */
+/* 67 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var getMapData = __webpack_require__(46);
+	var getMapData = __webpack_require__(65);
 
 	/**
 	 * Gets the map value for `key`.
 	 *
 	 * @private
 	 * @name get
 	 * @memberOf MapCache
 	 * @param {string} key The key of the value to get.
@@ -1593,20 +2661,20 @@ return /******/ (function(modules) { // 
 	function mapCacheGet(key) {
 	  return getMapData(this, key).get(key);
 	}
 
 	module.exports = mapCacheGet;
 
 
 /***/ },
-/* 49 */
+/* 68 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var getMapData = __webpack_require__(46);
+	var getMapData = __webpack_require__(65);
 
 	/**
 	 * Checks if a map value for `key` exists.
 	 *
 	 * @private
 	 * @name has
 	 * @memberOf MapCache
 	 * @param {string} key The key of the entry to check.
@@ -1615,20 +2683,20 @@ return /******/ (function(modules) { // 
 	function mapCacheHas(key) {
 	  return getMapData(this, key).has(key);
 	}
 
 	module.exports = mapCacheHas;
 
 
 /***/ },
-/* 50 */
+/* 69 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var getMapData = __webpack_require__(46);
+	var getMapData = __webpack_require__(65);
 
 	/**
 	 * Sets the map `key` to `value`.
 	 *
 	 * @private
 	 * @name set
 	 * @memberOf MapCache
 	 * @param {string} key The key of the value to set.
@@ -1643,20 +2711,20 @@ return /******/ (function(modules) { // 
 	  this.size += data.size == size ? 0 : 1;
 	  return this;
 	}
 
 	module.exports = mapCacheSet;
 
 
 /***/ },
-/* 51 */
+/* 70 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var baseToString = __webpack_require__(52);
+	var baseToString = __webpack_require__(71);
 
 	/**
 	 * Converts `value` to a string. An empty string is returned for `null`
 	 * and `undefined` values. The sign of `-0` is preserved.
 	 *
 	 * @static
 	 * @memberOf _
 	 * @since 4.0.0
@@ -1677,23 +2745,23 @@ return /******/ (function(modules) { // 
 	function toString(value) {
 	  return value == null ? '' : baseToString(value);
 	}
 
 	module.exports = toString;
 
 
 /***/ },
-/* 52 */
+/* 71 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var Symbol = __webpack_require__(10),
-	    arrayMap = __webpack_require__(53),
-	    isArray = __webpack_require__(6),
-	    isSymbol = __webpack_require__(8);
+	var Symbol = __webpack_require__(29),
+	    arrayMap = __webpack_require__(72),
+	    isArray = __webpack_require__(25),
+	    isSymbol = __webpack_require__(27);
 
 	/** Used as references for various `Number` constants. */
 	var INFINITY = 1 / 0;
 
 	/** Used to convert symbols to primitives and strings. */
 	var symbolProto = Symbol ? Symbol.prototype : undefined,
 	    symbolToString = symbolProto ? symbolProto.toString : undefined;
 
@@ -1720,17 +2788,17 @@ return /******/ (function(modules) { // 
 	  var result = (value + '');
 	  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
 	}
 
 	module.exports = baseToString;
 
 
 /***/ },
-/* 53 */
+/* 72 */
 /***/ function(module, exports) {
 
 	/**
 	 * A specialized version of `_.map` for arrays without support for iteratee
 	 * shorthands.
 	 *
 	 * @private
 	 * @param {Array} [array] The array to iterate over.
@@ -1747,20 +2815,20 @@ return /******/ (function(modules) { // 
 	  }
 	  return result;
 	}
 
 	module.exports = arrayMap;
 
 
 /***/ },
-/* 54 */
+/* 73 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var isSymbol = __webpack_require__(8);
+	var isSymbol = __webpack_require__(27);
 
 	/** Used as references for various `Number` constants. */
 	var INFINITY = 1 / 0;
 
 	/**
 	 * Converts `value` to a string key if it's not a string or symbol.
 	 *
 	 * @private
@@ -1774,20 +2842,20 @@ return /******/ (function(modules) { // 
 	  var result = (value + '');
 	  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
 	}
 
 	module.exports = toKey;
 
 
 /***/ },
-/* 55 */
+/* 74 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var baseSet = __webpack_require__(56);
+	var baseSet = __webpack_require__(75);
 
 	/**
 	 * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
 	 * it's created. Arrays are created for missing index properties while objects
 	 * are created for all other missing properties. Use `_.setWith` to customize
 	 * `path` creation.
 	 *
 	 * **Note:** This method mutates `object`.
@@ -1815,24 +2883,24 @@ return /******/ (function(modules) { // 
 	function set(object, path, value) {
 	  return object == null ? object : baseSet(object, path, value);
 	}
 
 	module.exports = set;
 
 
 /***/ },
-/* 56 */
+/* 75 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var assignValue = __webpack_require__(57),
-	    castPath = __webpack_require__(5),
-	    isIndex = __webpack_require__(60),
-	    isObject = __webpack_require__(27),
-	    toKey = __webpack_require__(54);
+	var assignValue = __webpack_require__(76),
+	    castPath = __webpack_require__(24),
+	    isIndex = __webpack_require__(79),
+	    isObject = __webpack_require__(46),
+	    toKey = __webpack_require__(73);
 
 	/**
 	 * The base implementation of `_.set`.
 	 *
 	 * @private
 	 * @param {Object} object The object to modify.
 	 * @param {Array|string} path The path of the property to set.
 	 * @param {*} value The value to set.
@@ -1868,21 +2936,21 @@ return /******/ (function(modules) { // 
 	  }
 	  return object;
 	}
 
 	module.exports = baseSet;
 
 
 /***/ },
-/* 57 */
+/* 76 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var baseAssignValue = __webpack_require__(58),
-	    eq = __webpack_require__(40);
+	var baseAssignValue = __webpack_require__(77),
+	    eq = __webpack_require__(59);
 
 	/** Used for built-in method references. */
 	var objectProto = Object.prototype;
 
 	/** Used to check objects for own properties. */
 	var hasOwnProperty = objectProto.hasOwnProperty;
 
 	/**
@@ -1902,20 +2970,20 @@ return /******/ (function(modules) { // 
 	    baseAssignValue(object, key, value);
 	  }
 	}
 
 	module.exports = assignValue;
 
 
 /***/ },
-/* 58 */
+/* 77 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var defineProperty = __webpack_require__(59);
+	var defineProperty = __webpack_require__(78);
 
 	/**
 	 * The base implementation of `assignValue` and `assignMergeValue` without
 	 * value checks.
 	 *
 	 * @private
 	 * @param {Object} object The object to modify.
 	 * @param {string} key The key of the property to assign.
@@ -1933,34 +3001,34 @@ return /******/ (function(modules) { // 
 	    object[key] = value;
 	  }
 	}
 
 	module.exports = baseAssignValue;
 
 
 /***/ },
-/* 59 */
+/* 78 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var getNative = __webpack_require__(24);
+	var getNative = __webpack_require__(43);
 
 	var defineProperty = (function() {
 	  try {
 	    var func = getNative(Object, 'defineProperty');
 	    func({}, '', {});
 	    return func;
 	  } catch (e) {}
 	}());
 
 	module.exports = defineProperty;
 
 
 /***/ },
-/* 60 */
+/* 79 */
 /***/ function(module, exports) {
 
 	/** Used as references for various `Number` constants. */
 	var MAX_SAFE_INTEGER = 9007199254740991;
 
 	/** Used to detect unsigned integer values. */
 	var reIsUint = /^(?:0|[1-9]\d*)$/;
 
@@ -1978,23 +3046,23 @@ return /******/ (function(modules) { // 
 	    (typeof value == 'number' || reIsUint.test(value)) &&
 	    (value > -1 && value % 1 == 0 && value < length);
 	}
 
 	module.exports = isIndex;
 
 
 /***/ },
-/* 61 */
+/* 80 */
 /***/ function(module, exports) {
 
 	
 
 /***/ },
-/* 62 */
+/* 81 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors.
 	//
 	// Permission is hereby granted, free of charge, to any person obtaining a
 	// copy of this software and associated documentation files (the
 	// "Software"), to deal in the Software without restriction, including
 	// without limitation the rights to use, copy, modify, merge, publish,
@@ -2212,20 +3280,20 @@ return /******/ (function(modules) { // 
 	var substr = 'ab'.substr(-1) === 'b'
 	    ? function (str, start, len) { return str.substr(start, len) }
 	    : function (str, start, len) {
 	        if (start < 0) start = str.length + start;
 	        return str.substr(start, len);
 	    }
 	;
 
-	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(63)))
+	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(82)))
 
 /***/ },
-/* 63 */
+/* 82 */
 /***/ function(module, exports) {
 
 	// shim for using process in browser
 	var process = module.exports = {};
 
 	// cached from whatever global is present so that test runners that stub it
 	// don't break things.  But we need to wrap it in a try catch in case it is
 	// wrapped in strict mode code which doesn't define any globals.  It's inside a
@@ -2401,464 +3469,17 @@ return /******/ (function(modules) { // 
 	process.cwd = function () { return '/' };
 	process.chdir = function (dir) {
 	    throw new Error('process.chdir is not supported');
 	};
 	process.umask = function() { return 0; };
 
 
 /***/ },
-/* 64 */
+/* 83 */
 /***/ function(module, exports) {
 
-	module.exports = __WEBPACK_EXTERNAL_MODULE_64__;
-
-/***/ },
-/* 65 */
-/***/ function(module, exports, __webpack_require__) {
-
-	const md5 = __webpack_require__(66);
-
-	function originalToGeneratedId(originalId) {
-	  const match = originalId.match(/(.*)\/originalSource/);
-	  return match ? match[1] : "";
-	}
-
-	function generatedToOriginalId(generatedId, url) {
-	  return `${generatedId}/originalSource-${md5(url)}`;
-	}
-
-	function isOriginalId(id) {
-	  return !!id.match(/\/originalSource/);
-	}
-
-	function isGeneratedId(id) {
-	  return !isOriginalId(id);
-	}
-
-	/**
-	 * Trims the query part or reference identifier of a URL string, if necessary.
-	 */
-	function trimUrlQuery(url) {
-	  let length = url.length;
-	  let q1 = url.indexOf("?");
-	  let q2 = url.indexOf("&");
-	  let q3 = url.indexOf("#");
-	  let q = Math.min(q1 != -1 ? q1 : length, q2 != -1 ? q2 : length, q3 != -1 ? q3 : length);
-
-	  return url.slice(0, q);
-	}
-
-	/**
-	 * Returns true if the specified URL and/or content type are specific to
-	 * JavaScript files.
-	 *
-	 * @return boolean
-	 *         True if the source is likely JavaScript.
-	 */
-	function isJavaScript(url, contentType = "") {
-	  return url && /\.(jsm|js)?$/.test(trimUrlQuery(url)) || contentType.includes("javascript");
-	}
-
-	function getContentType(url) {
-	  if (isJavaScript(url)) {
-	    return "text/javascript";
-	  }
-
-	  if (url.match(/ts$/)) {
-	    return "text/typescript";
-	  }
-
-	  if (url.match(/tsx$/)) {
-	    return "text/typescript-jsx";
-	  }
-
-	  if (url.match(/jsx$/)) {
-	    return "text/jsx";
-	  }
-
-	  if (url.match(/coffee$/)) {
-	    return "text/coffeescript";
-	  }
-
-	  if (url.match(/elm$/)) {
-	    return "text/elm";
-	  }
-
-	  if (url.match(/cljs$/)) {
-	    return "text/x-clojure";
-	  }
-
-	  return "text/plain";
-	}
-
-	let msgId = 1;
-	function workerTask(worker, method) {
-	  return function (...args) {
-	    return new Promise((resolve, reject) => {
-	      const id = msgId++;
-	      worker.postMessage({ id, method, args });
-
-	      const listener = ({ data: result }) => {
-	        if (result.id !== id) {
-	          return;
-	        }
-
-	        worker.removeEventListener("message", listener);
-	        if (result.error) {
-	          reject(result.error);
-	        } else {
-	          resolve(result.response);
-	        }
-	      };
-
-	      worker.addEventListener("message", listener);
-	    });
-	  };
-	}
-
-	module.exports = {
-	  originalToGeneratedId,
-	  generatedToOriginalId,
-	  isOriginalId,
-	  isGeneratedId,
-	  getContentType,
-	  workerTask
-	};
-
-/***/ },
-/* 66 */
-/***/ function(module, exports, __webpack_require__) {
-
-	(function(){
-	  var crypt = __webpack_require__(67),
-	      utf8 = __webpack_require__(68).utf8,
-	      isBuffer = __webpack_require__(69),
-	      bin = __webpack_require__(68).bin,
-
-	  // The core
-	  md5 = function (message, options) {
-	    // Convert to byte array
-	    if (message.constructor == String)
-	      if (options && options.encoding === 'binary')
-	        message = bin.stringToBytes(message);
-	      else
-	        message = utf8.stringToBytes(message);
-	    else if (isBuffer(message))
-	      message = Array.prototype.slice.call(message, 0);
-	    else if (!Array.isArray(message))
-	      message = message.toString();
-	    // else, assume byte array already
-
-	    var m = crypt.bytesToWords(message),
-	        l = message.length * 8,
-	        a =  1732584193,
-	        b = -271733879,
-	        c = -1732584194,
-	        d =  271733878;
-
-	    // Swap endian
-	    for (var i = 0; i < m.length; i++) {
-	      m[i] = ((m[i] <<  8) | (m[i] >>> 24)) & 0x00FF00FF |
-	             ((m[i] << 24) | (m[i] >>>  8)) & 0xFF00FF00;
-	    }
-
-	    // Padding
-	    m[l >>> 5] |= 0x80 << (l % 32);
-	    m[(((l + 64) >>> 9) << 4) + 14] = l;
-
-	    // Method shortcuts
-	    var FF = md5._ff,
-	        GG = md5._gg,
-	        HH = md5._hh,
-	        II = md5._ii;
-
-	    for (var i = 0; i < m.length; i += 16) {
-
-	      var aa = a,
-	          bb = b,
-	          cc = c,
-	          dd = d;
-
-	      a = FF(a, b, c, d, m[i+ 0],  7, -680876936);
-	      d = FF(d, a, b, c, m[i+ 1], 12, -389564586);
-	      c = FF(c, d, a, b, m[i+ 2], 17,  606105819);
-	      b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);
-	      a = FF(a, b, c, d, m[i+ 4],  7, -176418897);
-	      d = FF(d, a, b, c, m[i+ 5], 12,  1200080426);
-	      c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);
-	      b = FF(b, c, d, a, m[i+ 7], 22, -45705983);
-	      a = FF(a, b, c, d, m[i+ 8],  7,  1770035416);
-	      d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);
-	      c = FF(c, d, a, b, m[i+10], 17, -42063);
-	      b = FF(b, c, d, a, m[i+11], 22, -1990404162);
-	      a = FF(a, b, c, d, m[i+12],  7,  1804603682);
-	      d = FF(d, a, b, c, m[i+13], 12, -40341101);
-	      c = FF(c, d, a, b, m[i+14], 17, -1502002290);
-	      b = FF(b, c, d, a, m[i+15], 22,  1236535329);
-
-	      a = GG(a, b, c, d, m[i+ 1],  5, -165796510);
-	      d = GG(d, a, b, c, m[i+ 6],  9, -1069501632);
-	      c = GG(c, d, a, b, m[i+11], 14,  643717713);
-	      b = GG(b, c, d, a, m[i+ 0], 20, -373897302);
-	      a = GG(a, b, c, d, m[i+ 5],  5, -701558691);
-	      d = GG(d, a, b, c, m[i+10],  9,  38016083);
-	      c = GG(c, d, a, b, m[i+15], 14, -660478335);
-	      b = GG(b, c, d, a, m[i+ 4], 20, -405537848);
-	      a = GG(a, b, c, d, m[i+ 9],  5,  568446438);
-	      d = GG(d, a, b, c, m[i+14],  9, -1019803690);
-	      c = GG(c, d, a, b, m[i+ 3], 14, -187363961);
-	      b = GG(b, c, d, a, m[i+ 8], 20,  1163531501);
-	      a = GG(a, b, c, d, m[i+13],  5, -1444681467);
-	      d = GG(d, a, b, c, m[i+ 2],  9, -51403784);
-	      c = GG(c, d, a, b, m[i+ 7], 14,  1735328473);
-	      b = GG(b, c, d, a, m[i+12], 20, -1926607734);
-
-	      a = HH(a, b, c, d, m[i+ 5],  4, -378558);
-	      d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);
-	      c = HH(c, d, a, b, m[i+11], 16,  1839030562);
-	      b = HH(b, c, d, a, m[i+14], 23, -35309556);
-	      a = HH(a, b, c, d, m[i+ 1],  4, -1530992060);
-	      d = HH(d, a, b, c, m[i+ 4], 11,  1272893353);
-	      c = HH(c, d, a, b, m[i+ 7], 16, -155497632);
-	      b = HH(b, c, d, a, m[i+10], 23, -1094730640);
-	      a = HH(a, b, c, d, m[i+13],  4,  681279174);
-	      d = HH(d, a, b, c, m[i+ 0], 11, -358537222);
-	      c = HH(c, d, a, b, m[i+ 3], 16, -722521979);
-	      b = HH(b, c, d, a, m[i+ 6], 23,  76029189);
-	      a = HH(a, b, c, d, m[i+ 9],  4, -640364487);
-	      d = HH(d, a, b, c, m[i+12], 11, -421815835);
-	      c = HH(c, d, a, b, m[i+15], 16,  530742520);
-	      b = HH(b, c, d, a, m[i+ 2], 23, -995338651);
-
-	      a = II(a, b, c, d, m[i+ 0],  6, -198630844);
-	      d = II(d, a, b, c, m[i+ 7], 10,  1126891415);
-	      c = II(c, d, a, b, m[i+14], 15, -1416354905);
-	      b = II(b, c, d, a, m[i+ 5], 21, -57434055);
-	      a = II(a, b, c, d, m[i+12],  6,  1700485571);
-	      d = II(d, a, b, c, m[i+ 3], 10, -1894986606);
-	      c = II(c, d, a, b, m[i+10], 15, -1051523);
-	      b = II(b, c, d, a, m[i+ 1], 21, -2054922799);
-	      a = II(a, b, c, d, m[i+ 8],  6,  1873313359);
-	      d = II(d, a, b, c, m[i+15], 10, -30611744);
-	      c = II(c, d, a, b, m[i+ 6], 15, -1560198380);
-	      b = II(b, c, d, a, m[i+13], 21,  1309151649);
-	      a = II(a, b, c, d, m[i+ 4],  6, -145523070);
-	      d = II(d, a, b, c, m[i+11], 10, -1120210379);
-	      c = II(c, d, a, b, m[i+ 2], 15,  718787259);
-	      b = II(b, c, d, a, m[i+ 9], 21, -343485551);
-
-	      a = (a + aa) >>> 0;
-	      b = (b + bb) >>> 0;
-	      c = (c + cc) >>> 0;
-	      d = (d + dd) >>> 0;
-	    }
-
-	    return crypt.endian([a, b, c, d]);
-	  };
-
-	  // Auxiliary functions
-	  md5._ff  = function (a, b, c, d, x, s, t) {
-	    var n = a + (b & c | ~b & d) + (x >>> 0) + t;
-	    return ((n << s) | (n >>> (32 - s))) + b;
-	  };
-	  md5._gg  = function (a, b, c, d, x, s, t) {
-	    var n = a + (b & d | c & ~d) + (x >>> 0) + t;
-	    return ((n << s) | (n >>> (32 - s))) + b;
-	  };
-	  md5._hh  = function (a, b, c, d, x, s, t) {
-	    var n = a + (b ^ c ^ d) + (x >>> 0) + t;
-	    return ((n << s) | (n >>> (32 - s))) + b;
-	  };
-	  md5._ii  = function (a, b, c, d, x, s, t) {
-	    var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;
-	    return ((n << s) | (n >>> (32 - s))) + b;
-	  };
-
-	  // Package private blocksize
-	  md5._blocksize = 16;
-	  md5._digestsize = 16;
-
-	  module.exports = function (message, options) {
-	    if (message === undefined || message === null)
-	      throw new Error('Illegal argument ' + message);
-
-	    var digestbytes = crypt.wordsToBytes(md5(message, options));
-	    return options && options.asBytes ? digestbytes :
-	        options && options.asString ? bin.bytesToString(digestbytes) :
-	        crypt.bytesToHex(digestbytes);
-	  };
-
-	})();
-
-
-/***/ },
-/* 67 */
-/***/ function(module, exports) {
-
-	(function() {
-	  var base64map
-	      = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
-
-	  crypt = {
-	    // Bit-wise rotation left
-	    rotl: function(n, b) {
-	      return (n << b) | (n >>> (32 - b));
-	    },
-
-	    // Bit-wise rotation right
-	    rotr: function(n, b) {
-	      return (n << (32 - b)) | (n >>> b);
-	    },
-
-	    // Swap big-endian to little-endian and vice versa
-	    endian: function(n) {
-	      // If number given, swap endian
-	      if (n.constructor == Number) {
-	        return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;
-	      }
-
-	      // Else, assume array and swap all items
-	      for (var i = 0; i < n.length; i++)
-	        n[i] = crypt.endian(n[i]);
-	      return n;
-	    },
-
-	    // Generate an array of any length of random bytes
-	    randomBytes: function(n) {
-	      for (var bytes = []; n > 0; n--)
-	        bytes.push(Math.floor(Math.random() * 256));
-	      return bytes;
-	    },
-
-	    // Convert a byte array to big-endian 32-bit words
-	    bytesToWords: function(bytes) {
-	      for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)
-	        words[b >>> 5] |= bytes[i] << (24 - b % 32);
-	      return words;
-	    },
-
-	    // Convert big-endian 32-bit words to a byte array
-	    wordsToBytes: function(words) {
-	      for (var bytes = [], b = 0; b < words.length * 32; b += 8)
-	        bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);
-	      return bytes;
-	    },
-
-	    // Convert a byte array to a hex string
-	    bytesToHex: function(bytes) {
-	      for (var hex = [], i = 0; i < bytes.length; i++) {
-	        hex.push((bytes[i] >>> 4).toString(16));
-	        hex.push((bytes[i] & 0xF).toString(16));
-	      }
-	      return hex.join('');
-	    },
-
-	    // Convert a hex string to a byte array
-	    hexToBytes: function(hex) {
-	      for (var bytes = [], c = 0; c < hex.length; c += 2)
-	        bytes.push(parseInt(hex.substr(c, 2), 16));
-	      return bytes;
-	    },
-
-	    // Convert a byte array to a base-64 string
-	    bytesToBase64: function(bytes) {
-	      for (var base64 = [], i = 0; i < bytes.length; i += 3) {
-	        var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];
-	        for (var j = 0; j < 4; j++)
-	          if (i * 8 + j * 6 <= bytes.length * 8)
-	            base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));
-	          else
-	            base64.push('=');
-	      }
-	      return base64.join('');
-	    },
-
-	    // Convert a base-64 string to a byte array
-	    base64ToBytes: function(base64) {
-	      // Remove non-base-64 characters
-	      base64 = base64.replace(/[^A-Z0-9+\/]/ig, '');
-
-	      for (var bytes = [], i = 0, imod4 = 0; i < base64.length;
-	          imod4 = ++i % 4) {
-	        if (imod4 == 0) continue;
-	        bytes.push(((base64map.indexOf(base64.charAt(i - 1))
-	            & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))
-	            | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));
-	      }
-	      return bytes;
-	    }
-	  };
-
-	  module.exports = crypt;
-	})();
-
-
-/***/ },
-/* 68 */
-/***/ function(module, exports) {
-
-	var charenc = {
-	  // UTF-8 encoding
-	  utf8: {
-	    // Convert a string to a byte array
-	    stringToBytes: function(str) {
-	      return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));
-	    },
-
-	    // Convert a byte array to a string
-	    bytesToString: function(bytes) {
-	      return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));
-	    }
-	  },
-
-	  // Binary encoding
-	  bin: {
-	    // Convert a string to a byte array
-	    stringToBytes: function(str) {
-	      for (var bytes = [], i = 0; i < str.length; i++)
-	        bytes.push(str.charCodeAt(i) & 0xFF);
-	      return bytes;
-	    },
-
-	    // Convert a byte array to a string
-	    bytesToString: function(bytes) {
-	      for (var str = [], i = 0; i < bytes.length; i++)
-	        str.push(String.fromCharCode(bytes[i]));
-	      return str.join('');
-	    }
-	  }
-	};
-
-	module.exports = charenc;
-
-
-/***/ },
-/* 69 */
-/***/ function(module, exports) {
-
-	/*!
-	 * Determine if an object is a Buffer
-	 *
-	 * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
-	 * @license  MIT
-	 */
-
-	// The _isBuffer check is for Safari 5-7 support, because it's missing
-	// Object.prototype.constructor. Remove this eventually
-	module.exports = function (obj) {
-	  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
-	}
-
-	function isBuffer (obj) {
-	  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
-	}
-
-	// For Node v0.10 support. Remove this eventually.
-	function isSlowBuffer (obj) {
-	  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
-	}
-
+	module.exports = __WEBPACK_EXTERNAL_MODULE_83__;
 
 /***/ }
 /******/ ])
 });
 ;
\ No newline at end of file
--- a/devtools/client/shared/source-map/worker.js
+++ b/devtools/client/shared/source-map/worker.js
@@ -49,329 +49,51 @@ return /******/ (function(modules) { // 
 /******/ 	// Load entry module and return exports
 /******/ 	return __webpack_require__(0);
 /******/ })
 /************************************************************************/
 /******/ ([
 /* 0 */
 /***/ function(module, exports, __webpack_require__) {
 
-	let _resolveAndFetch = (() => {
-	  var _ref = _asyncToGenerator(function* (generatedSource) {
-	    // Fetch the sourcemap over the network and create it.
-	    const sourceMapURL = _resolveSourceMapURL(generatedSource);
-	    const fetched = yield networkRequest(sourceMapURL, { loadFromCache: false });
-
-	    // Create the source map and fix it up.
-	    const map = new SourceMapConsumer(fetched.content);
-	    _setSourceMapRoot(map, sourceMapURL, generatedSource);
-	    return map;
-	  });
-
-	  return function _resolveAndFetch(_x) {
-	    return _ref.apply(this, arguments);
-	  };
-	})();
-
-	let getOriginalURLs = (() => {
-	  var _ref2 = _asyncToGenerator(function* (generatedSource) {
-	    const map = yield _fetchSourceMap(generatedSource);
-	    return map && map.sources;
-	  });
-
-	  return function getOriginalURLs(_x2) {
-	    return _ref2.apply(this, arguments);
-	  };
-	})();
-
-	let getGeneratedLocation = (() => {
-	  var _ref3 = _asyncToGenerator(function* (location, originalSource) {
-	    if (!isOriginalId(location.sourceId)) {
-	      return location;
-	    }
-
-	    const generatedSourceId = originalToGeneratedId(location.sourceId);
-	    const map = yield _getSourceMap(generatedSourceId);
-	    if (!map) {
-	      return location;
-	    }
-
-	    const { line, column } = map.generatedPositionFor({
-	      source: originalSource.url,
-	      line: location.line,
-	      column: location.column == null ? 0 : location.column,
-	      bias: SourceMapConsumer.LEAST_UPPER_BOUND
-	    });
-
-	    return {
-	      sourceId: generatedSourceId,
-	      line: line,
-	      // Treat 0 as no column so that line breakpoints work correctly.
-	      column: column === 0 ? undefined : column
-	    };
-	  });
-
-	  return function getGeneratedLocation(_x3, _x4) {
-	    return _ref3.apply(this, arguments);
-	  };
-	})();
-
-	let getOriginalLocation = (() => {
-	  var _ref4 = _asyncToGenerator(function* (location) {
-	    if (!isGeneratedId(location.sourceId)) {
-	      return location;
-	    }
-
-	    const map = yield _getSourceMap(location.sourceId);
-	    if (!map) {
-	      return location;
-	    }
-
-	    const { source: url, line, column } = map.originalPositionFor({
-	      line: location.line,
-	      column: location.column == null ? Infinity : location.column
-	    });
-
-	    if (url == null) {
-	      // No url means the location didn't map.
-	      return location;
-	    }
-
-	    return {
-	      sourceId: generatedToOriginalId(location.sourceId, url),
-	      line,
-	      column
-	    };
-	  });
-
-	  return function getOriginalLocation(_x5) {
-	    return _ref4.apply(this, arguments);
-	  };
-	})();
-
-	let getOriginalSourceText = (() => {
-	  var _ref5 = _asyncToGenerator(function* (originalSource) {
-	    assert(isOriginalId(originalSource.id), "Source is not an original source");
-
-	    const generatedSourceId = originalToGeneratedId(originalSource.id);
-	    const map = yield _getSourceMap(generatedSourceId);
-	    if (!map) {
-	      return null;
-	    }
-
-	    let text = map.sourceContentFor(originalSource.url);
-	    if (!text) {
-	      text = (yield networkRequest(originalSource.url, { loadFromCache: false })).content;
-	    }
-
-	    return {
-	      text,
-	      contentType: getContentType(originalSource.url || "")
-	    };
-	  });
-
-	  return function getOriginalSourceText(_x6) {
-	    return _ref5.apply(this, arguments);
-	  };
-	})();
-
-	function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
-
-	/**
-	 * Source Map Worker
-	 * @module utils/source-map-worker
-	 */
-
-	const networkRequest = __webpack_require__(70);
-	const { parse } = __webpack_require__(71);
-	const path = __webpack_require__(78);
-	const { SourceMapConsumer, SourceMapGenerator } = __webpack_require__(79);
-	const assert = __webpack_require__(90);
 	const {
-	  originalToGeneratedId,
-	  generatedToOriginalId,
-	  isGeneratedId,
-	  isOriginalId,
-	  getContentType
-	} = __webpack_require__(65);
-
-	let sourceMapRequests = new Map();
-	let sourceMapsEnabled = false;
-
-	function clearSourceMaps() {
-	  sourceMapRequests.clear();
-	}
-
-	function enableSourceMaps() {
-	  sourceMapsEnabled = true;
-	}
-
-	function _resolveSourceMapURL(source) {
-	  const { url = "", sourceMapURL = "" } = source;
-	  if (path.isURL(sourceMapURL) || url == "") {
-	    // If it's already a full URL or the source doesn't have a URL,
-	    // don't resolve anything.
-	    return sourceMapURL;
-	  } else if (path.isAbsolute(sourceMapURL)) {
-	    // If it's an absolute path, it should be resolved relative to the
-	    // host of the source.
-	    const { protocol = "", host = "" } = parse(url);
-	    return `${protocol}//${host}${sourceMapURL}`;
-	  }
-	  // Otherwise, it's a relative path and should be resolved relative
-	  // to the source.
-	  return `${path.dirname(url)}/${sourceMapURL}`;
-	}
-
-	/**
-	 * Sets the source map's sourceRoot to be relative to the source map url.
-	 * @memberof utils/source-map-worker
-	 * @static
-	 */
-	function _setSourceMapRoot(sourceMap, absSourceMapURL, source) {
-	  // No need to do this fiddling if we won't be fetching any sources over the
-	  // wire.
-	  if (sourceMap.hasContentsOfAllSources()) {
-	    return;
-	  }
-
-	  const base = path.dirname(absSourceMapURL.indexOf("data:") === 0 && source.url ? source.url : absSourceMapURL);
-
-	  if (sourceMap.sourceRoot) {
-	    sourceMap.sourceRoot = path.join(base, sourceMap.sourceRoot);
-	  } else {
-	    sourceMap.sourceRoot = base;
-	  }
-
-	  return sourceMap;
-	}
-
-	function _getSourceMap(generatedSourceId) {
-	  return sourceMapRequests.get(generatedSourceId);
-	}
-
-	function _fetchSourceMap(generatedSource) {
-	  const existingRequest = sourceMapRequests.get(generatedSource.id);
-	  if (existingRequest) {
-	    // If it has already been requested, return the request. Make sure
-	    // to do this even if sourcemapping is turned off, because
-	    // pretty-printing uses sourcemaps.
-	    //
-	    // An important behavior here is that if it's in the middle of
-	    // requesting it, all subsequent calls will block on the initial
-	    // request.
-	    return existingRequest;
-	  } else if (!generatedSource.sourceMapURL || !sourceMapsEnabled) {
-	    return Promise.resolve(null);
-	  }
-
-	  // Fire off the request, set it in the cache, and return it.
-	  const req = _resolveAndFetch(generatedSource).catch(e => console.error(e));
-	  sourceMapRequests.set(generatedSource.id, req);
-	  return req;
-	}
-
-	function applySourceMap(generatedId, url, code, mappings) {
-	  const generator = new SourceMapGenerator({ file: url });
-	  mappings.forEach(mapping => generator.addMapping(mapping));
-	  generator.setSourceContent(url, code);
-
-	  const map = SourceMapConsumer(generator.toJSON());
-	  sourceMapRequests.set(generatedId, Promise.resolve(map));
-	}
-
+	  getOriginalURLs,
+	  getGeneratedLocation,
+	  getOriginalLocation,
+	  getOriginalSourceText,
+	  applySourceMap,
+	  clearSourceMaps
+	} = __webpack_require__(84);
+
+	// The interface is implemented in source-map to be
+	// easier to unit test.
 	const publicInterface = {
 	  getOriginalURLs,
 	  getGeneratedLocation,
 	  getOriginalLocation,
 	  getOriginalSourceText,
-	  enableSourceMaps,
 	  applySourceMap,
 	  clearSourceMaps
 	};
 
 	self.onmessage = function (msg) {
 	  const { id, method, args } = msg.data;
 	  const response = publicInterface[method].apply(undefined, args);
 	  if (response instanceof Promise) {
 	    response.then(val => self.postMessage({ id, response: val }), err => self.postMessage({ id, error: err }));
 	  } else {
 	    self.postMessage({ id, response });
 	  }
 	};
 
 /***/ },
-/* 1 */,
-/* 2 */,
-/* 3 */,
-/* 4 */,
-/* 5 */,
-/* 6 */,
-/* 7 */,
-/* 8 */,
-/* 9 */,
-/* 10 */,
-/* 11 */,
-/* 12 */,
-/* 13 */,
-/* 14 */,
-/* 15 */,
-/* 16 */,
-/* 17 */,
-/* 18 */,
-/* 19 */,
-/* 20 */,
-/* 21 */,
-/* 22 */,
-/* 23 */,
-/* 24 */,
-/* 25 */,
-/* 26 */,
-/* 27 */,
-/* 28 */,
-/* 29 */,
-/* 30 */,
-/* 31 */,
-/* 32 */,
-/* 33 */,
-/* 34 */,
-/* 35 */,
-/* 36 */,
-/* 37 */,
-/* 38 */,
-/* 39 */,
-/* 40 */,
-/* 41 */,
-/* 42 */,
-/* 43 */,
-/* 44 */,
-/* 45 */,
-/* 46 */,
-/* 47 */,
-/* 48 */,
-/* 49 */,
-/* 50 */,
-/* 51 */,
-/* 52 */,
-/* 53 */,
-/* 54 */,
-/* 55 */,
-/* 56 */,
-/* 57 */,
-/* 58 */,
-/* 59 */,
-/* 60 */,
-/* 61 */,
-/* 62 */,
-/* 63 */,
-/* 64 */,
-/* 65 */
+/* 1 */
 /***/ function(module, exports, __webpack_require__) {
 
-	const md5 = __webpack_require__(66);
+	const md5 = __webpack_require__(2);
 
 	function originalToGeneratedId(originalId) {
 	  const match = originalId.match(/(.*)\/originalSource/);
 	  return match ? match[1] : "";
 	}
 
 	function generatedToOriginalId(generatedId, url) {
 	  return `${generatedId}/originalSource-${md5(url)}`;
@@ -436,59 +158,33 @@ return /******/ (function(modules) { // 
 
 	  if (url.match(/cljs$/)) {
 	    return "text/x-clojure";
 	  }
 
 	  return "text/plain";
 	}
 
-	let msgId = 1;
-	function workerTask(worker, method) {
-	  return function (...args) {
-	    return new Promise((resolve, reject) => {
-	      const id = msgId++;
-	      worker.postMessage({ id, method, args });
-
-	      const listener = ({ data: result }) => {
-	        if (result.id !== id) {
-	          return;
-	        }
-
-	        worker.removeEventListener("message", listener);
-	        if (result.error) {
-	          reject(result.error);
-	        } else {
-	          resolve(result.response);
-	        }
-	      };
-
-	      worker.addEventListener("message", listener);
-	    });
-	  };
-	}
-
 	module.exports = {
 	  originalToGeneratedId,
 	  generatedToOriginalId,
 	  isOriginalId,
 	  isGeneratedId,
-	  getContentType,
-	  workerTask
+	  getContentType
 	};
 
 /***/ },
-/* 66 */
+/* 2 */
 /***/ function(module, exports, __webpack_require__) {
 
 	(function(){
-	  var crypt = __webpack_require__(67),
-	      utf8 = __webpack_require__(68).utf8,
-	      isBuffer = __webpack_require__(69),
-	      bin = __webpack_require__(68).bin,
+	  var crypt = __webpack_require__(3),
+	      utf8 = __webpack_require__(4).utf8,
+	      isBuffer = __webpack_require__(5),
+	      bin = __webpack_require__(4).bin,
 
 	  // The core
 	  md5 = function (message, options) {
 	    // Convert to byte array
 	    if (message.constructor == String)
 	      if (options && options.encoding === 'binary')
 	        message = bin.stringToBytes(message);
 	      else
@@ -637,17 +333,17 @@ return /******/ (function(modules) { // 
 	        options && options.asString ? bin.bytesToString(digestbytes) :
 	        crypt.bytesToHex(digestbytes);
 	  };
 
 	})();
 
 
 /***/ },
-/* 67 */
+/* 3 */
 /***/ function(module, exports) {
 
 	(function() {
 	  var base64map
 	      = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
 
 	  crypt = {
 	    // Bit-wise rotation left
@@ -739,17 +435,17 @@ return /******/ (function(modules) { // 
 	    }
 	  };
 
 	  module.exports = crypt;
 	})();
 
 
 /***/ },
-/* 68 */
+/* 4 */
 /***/ function(module, exports) {
 
 	var charenc = {
 	  // UTF-8 encoding
 	  utf8: {
 	    // Convert a string to a byte array
 	    stringToBytes: function(str) {
 	      return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));
@@ -778,17 +474,17 @@ return /******/ (function(modules) { // 
 	    }
 	  }
 	};
 
 	module.exports = charenc;
 
 
 /***/ },
-/* 69 */
+/* 5 */
 /***/ function(module, exports) {
 
 	/*!
 	 * Determine if an object is a Buffer
 	 *
 	 * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
 	 * @license  MIT
 	 */
@@ -805,17 +501,328 @@ return /******/ (function(modules) { // 
 
 	// For Node v0.10 support. Remove this eventually.
 	function isSlowBuffer (obj) {
 	  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
 	}
 
 
 /***/ },
-/* 70 */
+/* 6 */,
+/* 7 */,
+/* 8 */,
+/* 9 */,
+/* 10 */,
+/* 11 */,
+/* 12 */,
+/* 13 */,
+/* 14 */,
+/* 15 */,
+/* 16 */,
+/* 17 */,
+/* 18 */,
+/* 19 */,
+/* 20 */,
+/* 21 */,
+/* 22 */,
+/* 23 */,
+/* 24 */,
+/* 25 */,
+/* 26 */,
+/* 27 */,
+/* 28 */,
+/* 29 */,
+/* 30 */,
+/* 31 */,
+/* 32 */,
+/* 33 */,
+/* 34 */,
+/* 35 */,
+/* 36 */,
+/* 37 */,
+/* 38 */,
+/* 39 */,
+/* 40 */,
+/* 41 */,
+/* 42 */,
+/* 43 */,
+/* 44 */,
+/* 45 */,
+/* 46 */,
+/* 47 */,
+/* 48 */,
+/* 49 */,
+/* 50 */,
+/* 51 */,
+/* 52 */,
+/* 53 */,
+/* 54 */,
+/* 55 */,
+/* 56 */,
+/* 57 */,
+/* 58 */,
+/* 59 */,
+/* 60 */,
+/* 61 */,
+/* 62 */,
+/* 63 */,
+/* 64 */,
+/* 65 */,
+/* 66 */,
+/* 67 */,
+/* 68 */,
+/* 69 */,
+/* 70 */,
+/* 71 */,
+/* 72 */,
+/* 73 */,
+/* 74 */,
+/* 75 */,
+/* 76 */,
+/* 77 */,
+/* 78 */,
+/* 79 */,
+/* 80 */,
+/* 81 */,
+/* 82 */,
+/* 83 */,
+/* 84 */
+/***/ function(module, exports, __webpack_require__) {
+
+	let _resolveAndFetch = (() => {
+	  var _ref = _asyncToGenerator(function* (generatedSource) {
+	    // Fetch the sourcemap over the network and create it.
+	    const sourceMapURL = _resolveSourceMapURL(generatedSource);
+	    const fetched = yield networkRequest(sourceMapURL, { loadFromCache: false });
+
+	    // Create the source map and fix it up.
+	    const map = new SourceMapConsumer(fetched.content);
+	    _setSourceMapRoot(map, sourceMapURL, generatedSource);
+	    return map;
+	  });
+
+	  return function _resolveAndFetch(_x) {
+	    return _ref.apply(this, arguments);
+	  };
+	})();
+
+	let getOriginalURLs = (() => {
+	  var _ref2 = _asyncToGenerator(function* (generatedSource) {
+	    const map = yield _fetchSourceMap(generatedSource);
+	    return map && map.sources;
+	  });
+
+	  return function getOriginalURLs(_x2) {
+	    return _ref2.apply(this, arguments);
+	  };
+	})();
+
+	let getGeneratedLocation = (() => {
+	  var _ref3 = _asyncToGenerator(function* (location, originalSource) {
+	    if (!isOriginalId(location.sourceId)) {
+	      return location;
+	    }
+
+	    const generatedSourceId = originalToGeneratedId(location.sourceId);
+	    const map = yield _getSourceMap(generatedSourceId);
+	    if (!map) {
+	      return location;
+	    }
+
+	    const { line, column } = map.generatedPositionFor({
+	      source: originalSource.url,
+	      line: location.line,
+	      column: location.column == null ? 0 : location.column,
+	      bias: SourceMapConsumer.LEAST_UPPER_BOUND
+	    });
+
+	    return {
+	      sourceId: generatedSourceId,
+	      line: line,
+	      // Treat 0 as no column so that line breakpoints work correctly.
+	      column: column === 0 ? undefined : column
+	    };
+	  });
+
+	  return function getGeneratedLocation(_x3, _x4) {
+	    return _ref3.apply(this, arguments);
+	  };
+	})();
+
+	let getOriginalLocation = (() => {
+	  var _ref4 = _asyncToGenerator(function* (location) {
+	    if (!isGeneratedId(location.sourceId)) {
+	      return location;
+	    }
+
+	    const map = yield _getSourceMap(location.sourceId);
+	    if (!map) {
+	      return location;
+	    }
+
+	    const { source: url, line, column } = map.originalPositionFor({
+	      line: location.line,
+	      column: location.column == null ? Infinity : location.column
+	    });
+
+	    if (url == null) {
+	      // No url means the location didn't map.
+	      return location;
+	    }
+
+	    return {
+	      sourceId: generatedToOriginalId(location.sourceId, url),
+	      line,
+	      column
+	    };
+	  });
+
+	  return function getOriginalLocation(_x5) {
+	    return _ref4.apply(this, arguments);
+	  };
+	})();
+
+	let getOriginalSourceText = (() => {
+	  var _ref5 = _asyncToGenerator(function* (originalSource) {
+	    assert(isOriginalId(originalSource.id), "Source is not an original source");
+
+	    const generatedSourceId = originalToGeneratedId(originalSource.id);
+	    const map = yield _getSourceMap(generatedSourceId);
+	    if (!map) {
+	      return null;
+	    }
+
+	    let text = map.sourceContentFor(originalSource.url);
+	    if (!text) {
+	      text = (yield networkRequest(originalSource.url, { loadFromCache: false })).content;
+	    }
+
+	    return {
+	      text,
+	      contentType: getContentType(originalSource.url || "")
+	    };
+	  });
+
+	  return function getOriginalSourceText(_x6) {
+	    return _ref5.apply(this, arguments);
+	  };
+	})();
+
+	function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
+
+	/**
+	 * Source Map Worker
+	 * @module utils/source-map-worker
+	 */
+
+	const networkRequest = __webpack_require__(85);
+
+	const { parse } = __webpack_require__(86);
+	const path = __webpack_require__(93);
+	const { SourceMapConsumer, SourceMapGenerator } = __webpack_require__(94);
+	const assert = __webpack_require__(105);
+	const {
+	  originalToGeneratedId,
+	  generatedToOriginalId,
+	  isGeneratedId,
+	  isOriginalId,
+	  getContentType
+	} = __webpack_require__(1);
+
+	let sourceMapRequests = new Map();
+
+	function clearSourceMaps() {
+	  sourceMapRequests.clear();
+	}
+
+	function _resolveSourceMapURL(source) {
+	  const { url = "", sourceMapURL = "" } = source;
+	  if (path.isURL(sourceMapURL) || url == "") {
+	    // If it's already a full URL or the source doesn't have a URL,
+	    // don't resolve anything.
+	    return sourceMapURL;
+	  } else if (path.isAbsolute(sourceMapURL)) {
+	    // If it's an absolute path, it should be resolved relative to the
+	    // host of the source.
+	    const { protocol = "", host = "" } = parse(url);
+	    return `${protocol}//${host}${sourceMapURL}`;
+	  }
+	  // Otherwise, it's a relative path and should be resolved relative
+	  // to the source.
+	  return `${path.dirname(url)}/${sourceMapURL}`;
+	}
+
+	/**
+	 * Sets the source map's sourceRoot to be relative to the source map url.
+	 * @memberof utils/source-map-worker
+	 * @static
+	 */
+	function _setSourceMapRoot(sourceMap, absSourceMapURL, source) {
+	  // No need to do this fiddling if we won't be fetching any sources over the
+	  // wire.
+	  if (sourceMap.hasContentsOfAllSources()) {
+	    return;
+	  }
+
+	  const base = path.dirname(absSourceMapURL.indexOf("data:") === 0 && source.url ? source.url : absSourceMapURL);
+
+	  if (sourceMap.sourceRoot) {
+	    sourceMap.sourceRoot = path.join(base, sourceMap.sourceRoot);
+	  } else {
+	    sourceMap.sourceRoot = base;
+	  }
+
+	  return sourceMap;
+	}
+
+	function _getSourceMap(generatedSourceId) {
+	  return sourceMapRequests.get(generatedSourceId);
+	}
+
+	function _fetchSourceMap(generatedSource) {
+	  const existingRequest = sourceMapRequests.get(generatedSource.id);
+	  if (existingRequest) {
+	    // If it has already been requested, return the request. Make sure
+	    // to do this even if sourcemapping is turned off, because
+	    // pretty-printing uses sourcemaps.
+	    //
+	    // An important behavior here is that if it's in the middle of
+	    // requesting it, all subsequent calls will block on the initial
+	    // request.
+	    return existingRequest;
+	  } else if (!generatedSource.sourceMapURL) {
+	    return Promise.resolve(null);
+	  }
+
+	  // Fire off the request, set it in the cache, and return it.
+	  const req = _resolveAndFetch(generatedSource).catch(e => console.error(e));
+	  sourceMapRequests.set(generatedSource.id, req);
+	  return req;
+	}
+
+	function applySourceMap(generatedId, url, code, mappings) {
+	  const generator = new SourceMapGenerator({ file: url });
+	  mappings.forEach(mapping => generator.addMapping(mapping));
+	  generator.setSourceContent(url, code);
+
+	  const map = SourceMapConsumer(generator.toJSON());
+	  sourceMapRequests.set(generatedId, Promise.resolve(map));
+	}
+
+	module.exports = {
+	  getOriginalURLs,
+	  getGeneratedLocation,
+	  getOriginalLocation,
+	  getOriginalSourceText,
+	  applySourceMap,
+	  clearSourceMaps
+	};
+
+/***/ },
+/* 85 */
 /***/ function(module, exports) {
 
 	function networkRequest(url, opts) {
 	  return new Promise((resolve, reject) => {
 	    const req = new XMLHttpRequest();
 
 	    req.addEventListener("readystatechange", () => {
 	      if (req.readyState === XMLHttpRequest.DONE) {
@@ -838,19 +845,18 @@ return /******/ (function(modules) { // 
 
 	    req.open("GET", url);
 	    req.send();
 	  });
 	}
 
 	module.exports = networkRequest;
 
-
 /***/ },
-/* 71 */
+/* 86 */
 /***/ function(module, exports, __webpack_require__) {
 
 	// Copyright Joyent, Inc. and other Node contributors.
 	//
 	// Permission is hereby granted, free of charge, to any person obtaining a
 	// copy of this software and associated documentation files (the
 	// "Software"), to deal in the Software without restriction, including
 	// without limitation the rights to use, copy, modify, merge, publish,
@@ -866,18 +872,18 @@ return /******/ (function(modules) { // 
 	// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 	// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 	// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 	// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 	// USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 	'use strict';
 
-	var punycode = __webpack_require__(72);
-	var util = __webpack_require__(74);
+	var punycode = __webpack_require__(87);
+	var util = __webpack_require__(89);
 
 	exports.parse = urlParse;
 	exports.resolve = urlResolve;
 	exports.resolveObject = urlResolveObject;
 	exports.format = urlFormat;
 
 	exports.Url = Url;
 
@@ -942,17 +948,17 @@ return /******/ (function(modules) { // 
 	      'gopher': true,
 	      'file': true,
 	      'http:': true,
 	      'https:': true,
 	      'ftp:': true,
 	      'gopher:': true,
 	      'file:': true
 	    },
-	    querystring = __webpack_require__(75);
+	    querystring = __webpack_require__(90);
 
 	function urlParse(url, parseQueryString, slashesDenoteHost) {
 	  if (url && util.isObject(url) && url instanceof Url) return url;
 
 	  var u = new Url;
 	  u.parse(url, parseQueryString, slashesDenoteHost);
 	  return u;
 	}
@@ -1578,17 +1584,17 @@ return /******/ (function(modules) { // 
 	    }
 	    host = host.substr(0, host.length - port.length);
 	  }
 	  if (host) this.hostname = host;
 	};
 
 
 /***/ },
-/* 72 */
+/* 87 */
 /***/ function(module, exports, __webpack_require__) {
 
 	var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/*! https://mths.be/punycode v1.3.2 by @mathias */
 	;(function(root) {
 
 		/** Detect free variables */
 		var freeExports = typeof exports == 'object' && exports &&
 			!exports.nodeType && exports;
@@ -2110,36 +2116,36 @@ return /******/ (function(modules) { // 
 				}
 			}
 		} else { // in Rhino or a web browser
 			root.punycode = punycode;
 		}
 
 	}(this));
 
-	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(73)(module), (function() { return this; }())))
+	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(88)(module), (function() { return this; }())))
 
 /***/ },
-/* 73 */
+/* 88 */
 /***/ function(module, exports) {
 
 	module.exports = function(module) {
 		if(!module.webpackPolyfill) {
 			module.deprecate = function() {};
 			module.paths = [];
 			// module.parent = undefined by default
 			module.children = [];
 			module.webpackPolyfill = 1;
 		}
 		return module;
 	}
 
 
 /***/ },
-/* 74 */
+/* 89 */
 /***/ function(module, exports) {
 
 	'use strict';
 
 	module.exports = {
 	  isString: function(arg) {
 	    return typeof(arg) === 'string';
 	  },
@@ -2151,27 +2157,27 @@ return /******/ (function(modules) { // 
 	  },
 	  isNullOrUndefined: function(arg) {
 	    return arg == null;
 	  }
 	};
 
 
 /***/ },
-/* 75 */
+/* 90 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 
-	exports.decode = exports.parse = __webpack_require__(76);
-	exports.encode = exports.stringify = __webpack_require__(77);
+	exports.decode = exports.parse = __webpack_require__(91);
+	exports.encode = exports.stringify = __webpack_require__(92);
 
 
 /***/ },
-/* 76 */
+/* 91 */
 /***/ function(module, exports) {
 
 	// Copyright Joyent, Inc. and other Node contributors.
 	//
 	// Permission is hereby granted, free of charge, to any person obtaining a
 	// copy of this software and associated documentation files (the
 	// "Software"), to deal in the Software without restriction, including
 	// without limitation the rights to use, copy, modify, merge, publish,
@@ -2247,17 +2253,17 @@ return /******/ (function(modules) { // 
 	    }
 	  }
 
 	  return obj;
 	};
 
 
 /***/ },
-/* 77 */
+/* 92 */
 /***/ function(module, exports) {
 
 	// Copyright Joyent, Inc. and other Node contributors.
 	//
 	// Permission is hereby granted, free of charge, to any person obtaining a
 	// copy of this software and associated documentation files (the
 	// "Software"), to deal in the Software without restriction, including
 	// without limitation the rights to use, copy, modify, merge, publish,
@@ -2317,17 +2323,17 @@ return /******/ (function(modules) { // 
 
 	  if (!name) return '';
 	  return encodeURIComponent(stringifyPrimitive(name)) + eq +
 	         encodeURIComponent(stringifyPrimitive(obj));
 	};
 
 
 /***/ },
-/* 78 */
+/* 93 */
 /***/ function(module, exports) {
 
 	function basename(path) {
 	  return path.split("/").pop();
 	}
 
 	function dirname(path) {
 	  const idx = path.lastIndexOf("/");
@@ -2346,44 +2352,44 @@ return /******/ (function(modules) { // 
 	  return `${base}/${dir}`;
 	}
 
 	module.exports = {
 	  basename, dirname, isURL, isAbsolute, join
 	};
 
 /***/ },
-/* 79 */
+/* 94 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/*
 	 * Copyright 2009-2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE.txt or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
-	exports.SourceMapGenerator = __webpack_require__(80).SourceMapGenerator;
-	exports.SourceMapConsumer = __webpack_require__(86).SourceMapConsumer;
-	exports.SourceNode = __webpack_require__(89).SourceNode;
+	exports.SourceMapGenerator = __webpack_require__(95).SourceMapGenerator;
+	exports.SourceMapConsumer = __webpack_require__(101).SourceMapConsumer;
+	exports.SourceNode = __webpack_require__(104).SourceNode;
 
 
 /***/ },
-/* 80 */
+/* 95 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
 
-	var base64VLQ = __webpack_require__(81);
-	var util = __webpack_require__(83);
-	var ArraySet = __webpack_require__(84).ArraySet;
-	var MappingList = __webpack_require__(85).MappingList;
+	var base64VLQ = __webpack_require__(96);
+	var util = __webpack_require__(98);
+	var ArraySet = __webpack_require__(99).ArraySet;
+	var MappingList = __webpack_require__(100).MappingList;
 
 	/**
 	 * An instance of the SourceMapGenerator represents a source map which is
 	 * being built incrementally. You may pass an object with the following
 	 * properties:
 	 *
 	 *   - file: The filename of the generated source.
 	 *   - sourceRoot: A root for all relative URLs in this source map.
@@ -2770,17 +2776,17 @@ return /******/ (function(modules) { // 
 	  function SourceMapGenerator_toString() {
 	    return JSON.stringify(this.toJSON());
 	  };
 
 	exports.SourceMapGenerator = SourceMapGenerator;
 
 
 /***/ },
-/* 81 */
+/* 96 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 *
@@ -2810,17 +2816,17 @@ return /******/ (function(modules) { // 
 	 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 	 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 	 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 	 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 	 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 	 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 	 */
 
-	var base64 = __webpack_require__(82);
+	var base64 = __webpack_require__(97);
 
 	// A single base 64 digit can contain 6 bits of data. For the base 64 variable
 	// length quantities we use in the source map spec, the first bit is the sign,
 	// the next four bits are the actual value, and the 6th bit is the
 	// continuation bit. The continuation bit tells us whether there are more
 	// digits in this value following this digit.
 	//
 	//   Continuation
@@ -2916,17 +2922,17 @@ return /******/ (function(modules) { // 
 	  } while (continuation);
 
 	  aOutParam.value = fromVLQSigned(result);
 	  aOutParam.rest = aIndex;
 	};
 
 
 /***/ },
-/* 82 */
+/* 97 */
 /***/ function(module, exports) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
@@ -2989,17 +2995,17 @@ return /******/ (function(modules) { // 
 	  }
 
 	  // Invalid base64 digit.
 	  return -1;
 	};
 
 
 /***/ },
-/* 83 */
+/* 98 */
 /***/ function(module, exports) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
@@ -3412,27 +3418,27 @@ return /******/ (function(modules) { // 
 	  }
 
 	  return strcmp(mappingA.name, mappingB.name);
 	}
 	exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
 
 
 /***/ },
-/* 84 */
+/* 99 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
 
-	var util = __webpack_require__(83);
+	var util = __webpack_require__(98);
 	var has = Object.prototype.hasOwnProperty;
 
 	/**
 	 * A data structure which is a combination of an array and a set. Adding a new
 	 * member is O(1), testing for membership is O(1), and finding the index of an
 	 * element is O(1). Removing elements from the set is not supported. Only
 	 * strings are supported for membership.
 	 */
@@ -3522,27 +3528,27 @@ return /******/ (function(modules) { // 
 	ArraySet.prototype.toArray = function ArraySet_toArray() {
 	  return this._array.slice();
 	};
 
 	exports.ArraySet = ArraySet;
 
 
 /***/ },
-/* 85 */
+/* 100 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2014 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
 
-	var util = __webpack_require__(83);
+	var util = __webpack_require__(98);
 
 	/**
 	 * Determine whether mappingB is after mappingA with respect to generated
 	 * position.
 	 */
 	function generatedPositionAfter(mappingA, mappingB) {
 	  // Optimized for most common case
 	  var lineA = mappingA.generatedLine;
@@ -3607,31 +3613,31 @@ return /******/ (function(modules) { // 
 	  }
 	  return this._array;
 	};
 
 	exports.MappingList = MappingList;
 
 
 /***/ },
-/* 86 */
+/* 101 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
 
-	var util = __webpack_require__(83);
-	var binarySearch = __webpack_require__(87);
-	var ArraySet = __webpack_require__(84).ArraySet;
-	var base64VLQ = __webpack_require__(81);
-	var quickSort = __webpack_require__(88).quickSort;
+	var util = __webpack_require__(98);
+	var binarySearch = __webpack_require__(102);
+	var ArraySet = __webpack_require__(99).ArraySet;
+	var base64VLQ = __webpack_require__(96);
+	var quickSort = __webpack_require__(103).quickSort;
 
 	function SourceMapConsumer(aSourceMap) {
 	  var sourceMap = aSourceMap;
 	  if (typeof aSourceMap === 'string') {
 	    sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
 	  }
 
 	  return sourceMap.sections != null
@@ -4695,17 +4701,17 @@ return /******/ (function(modules) { // 
 	    quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
 	    quickSort(this.__originalMappings, util.compareByOriginalPositions);
 	  };
 
 	exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
 
 
 /***/ },
-/* 87 */
+/* 102 */
 /***/ function(module, exports) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
@@ -4812,17 +4818,17 @@ return /******/ (function(modules) { // 
 	    --index;
 	  }
 
 	  return index;
 	};
 
 
 /***/ },
-/* 88 */
+/* 103 */
 /***/ function(module, exports) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
@@ -4932,28 +4938,28 @@ return /******/ (function(modules) { // 
 	 *        Function to use to compare two items.
 	 */
 	exports.quickSort = function (ary, comparator) {
 	  doQuickSort(ary, comparator, 0, ary.length - 1);
 	};
 
 
 /***/ },
-/* 89 */
+/* 104 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* -*- Mode: js; js-indent-level: 2; -*- */
 	/*
 	 * Copyright 2011 Mozilla Foundation and contributors
 	 * Licensed under the New BSD license. See LICENSE or:
 	 * http://opensource.org/licenses/BSD-3-Clause
 	 */
 
-	var SourceMapGenerator = __webpack_require__(80).SourceMapGenerator;
-	var util = __webpack_require__(83);
+	var SourceMapGenerator = __webpack_require__(95).SourceMapGenerator;
+	var util = __webpack_require__(98);
 
 	// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
 	// operating systems these days (capturing the result).
 	var REGEX_NEWLINE = /(\r?\n)/;
 
 	// Newline character code for charCodeAt() comparisons
 	var NEWLINE_CODE = 10;
 
@@ -5345,17 +5351,17 @@ return /******/ (function(modules) { // 
 
 	  return { code: generated.code, map: map };
 	};
 
 	exports.SourceNode = SourceNode;
 
 
 /***/ },
-/* 90 */
+/* 105 */
 /***/ function(module, exports) {
 
 	function assert(condition, message) {
 	  if (!condition) {
 	    throw new Error(`Assertion failure: ${message}`);
 	  }
 	}