# Stats from current release

Default Server Mode (Increase detected ⚠)

General Overall decrease ✓

|  | zeit/next.js canary | zeit/next.js refs/tags/v9.1.5-canary.14 | Change |
| - | - | - | - |
| buildDuration | 14.2s | 13.4s | -774ms |
| nodeModulesSize | 49.7 MB | 46.8 MB | -2.9 MB |

Client Bundles (main, webpack, commons) Overall increase ⚠

|  | zeit/next.js canary | zeit/next.js refs/tags/v9.1.5-canary.14 | Change |
| - | - | - | - |
| main-HASH.js | 14.8 kB | 18.3 kB | ⚠ +3.43 kB |
| main-HASH.js gzip | 5.11 kB | 6.44 kB | ⚠ +1.33 kB |
| webpack-HASH.js | 1.53 kB | 1.53 kB | ✓ |
| webpack-HASH.js gzip | 746 B | 746 B | ✓ |
| 16b1a7225520..0f1a45b52.js | 19.9 kB | N/A | N/A |
| 16b1a7225520..5b52.js gzip | 7.34 kB | N/A | N/A |
| 314e4c089430..de6eb480f.js | 7.9 kB | N/A | N/A |
| 314e4c089430..480f.js gzip | 3.31 kB | N/A | N/A |
| commons.HASH.js | 10.4 kB | 10.4 kB | ⚠ +14 B |
| commons.HASH.js gzip | 3.91 kB | 3.91 kB | ⚠ +5 B |
| de003c3a9d30..39988e4af.js | 33.1 kB | N/A | N/A |
| de003c3a9d30..e4af.js gzip | 12.3 kB | N/A | N/A |
| framework.HASH.js | 125 kB | 126 kB | ⚠ +122 B |
| framework.HASH.js gzip | 39.4 kB | 39.5 kB | ⚠ +66 B |
| 16b1a7225520..10012f496.js | N/A | 20 kB | N/A |
| 16b1a7225520..f496.js gzip | N/A | 7.42 kB | N/A |
| 4952ddcd88e7..49d7903c2.js | N/A | 9.61 kB | N/A |
| 4952ddcd88e7..03c2.js gzip | N/A | 3.77 kB | N/A |
| de003c3a9d30..a5a0ede39.js | N/A | 21.2 kB | N/A |
| de003c3a9d30..de39.js gzip | N/A | 8.19 kB | N/A |
| Overall change | 213 kB | 207 kB | ⚠ +3.56 kB |

Client Bundles (main, webpack, commons) Modern Overall increase ⚠

|  | zeit/next.js canary | zeit/next.js refs/tags/v9.1.5-canary.14 | Change |
| - | - | - | - |
| main-HASH.module.js | 14.1 kB | 14.2 kB | ⚠ +167 B |
| main-HASH.module.js gzip | 5.29 kB | 5.36 kB | ⚠ +75 B |
| webpack-HASH.module.js | 1.53 kB | 1.53 kB | ✓ |
| webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
| 16b1a7225520..99.module.js | 16.1 kB | N/A | N/A |
| 16b1a7225520..dule.js gzip | 6.22 kB | N/A | N/A |
| 4952ddcd88e7..cc.module.js | 11.9 kB | 11.9 kB | -64 B |
| 4952ddcd88e7..dule.js gzip | 4.43 kB | 4.42 kB | -12 B |
| de003c3a9d30..36.module.js | 22.2 kB | N/A | N/A |
| de003c3a9d30..dule.js gzip | 8.71 kB | N/A | N/A |
| framework.HASH.module.js | 125 kB | 126 kB | ⚠ +18 B |
| framework.HA..dule.js gzip | 39.4 kB | 39.4 kB | ⚠ +56 B |
| 16b1a7225520..e5.module.js | N/A | 21.2 kB | N/A |
| 16b1a7225520..dule.js gzip | N/A | 8.18 kB | N/A |
| de003c3a9d30..80.module.js | N/A | 15 kB | N/A |
| de003c3a9d30..dule.js gzip | N/A | 6.15 kB | N/A |
| Overall change | 191 kB | 189 kB | ⚠ +121 B |

Legacy Client Bundles (polyfills) Overall increase ⚠

|  | zeit/next.js canary | zeit/next.js refs/tags/v9.1.5-canary.14 | Change |
| - | - | - | - |
| polyfills-HASH.js | 9.11 kB | 15.3 kB | ⚠ +6.21 kB |
| polyfills-HASH.js gzip | 3.11 kB | 4.76 kB | ⚠ +1.65 kB |
| Overall change | 9.11 kB | 15.3 kB | ⚠ +6.21 kB |

Client Pages Overall decrease ✓

|  | zeit/next.js canary | zeit/next.js refs/tags/v9.1.5-canary.14 | Change |
| - | - | - | - |
| _app.js | 7.71 kB | 2.93 kB | -4.78 kB |
| _app.js gzip | 3.22 kB | 1.33 kB | -1.9 kB |
| _error.js | 14.9 kB | 13.2 kB | -1.72 kB |
| _error.js gzip | 5.57 kB | 5.11 kB | -462 B |
| hooks.js | 1.92 kB | 1.92 kB | ⚠ +4 B |
| hooks.js gzip | 941 B | 943 B | ⚠ +2 B |
| index.js | 318 B | 318 B | ✓ |
| index.js gzip | 222 B | 222 B | ✓ |
| link.js | 4.05 kB | 6.78 kB | ⚠ +2.72 kB |
| link.js gzip | 1.81 kB | 2.89 kB | ⚠ +1.08 kB |
| routerDirect.js | 411 B | 413 B | ⚠ +2 B |
| routerDirect.js gzip | 283 B | 285 B | ⚠ +2 B |
| withRouter.js | 421 B | 423 B | ⚠ +2 B |
| withRouter.js gzip | 282 B | 284 B | ⚠ +2 B |
| Overall change | 29.7 kB | 26 kB | -3.77 kB |

Client Pages Modern Overall decrease ✓

|  | zeit/next.js canary | zeit/next.js refs/tags/v9.1.5-canary.14 | Change |
| - | - | - | - |
| _app.module.js | 1.54 kB | 1.53 kB | -9 B |
| _app.module.js gzip | 759 B | 745 B | -14 B |
| _error.module.js | 10.5 kB | 10.3 kB | -179 B |
| _error.module.js gzip | 4.26 kB | 4.24 kB | -21 B |
| hooks.module.js | 677 B | 651 B | -26 B |
| hooks.module.js gzip | 384 B | 371 B | -13 B |
| index.module.js | 292 B | 276 B | -16 B |
| index.module.js gzip | 223 B | 212 B | -11 B |
| link.module.js | 5.49 kB | 5.45 kB | -44 B |
| link.module.js gzip | 2.47 kB | 2.46 kB | -6 B |
| routerDirect.module.js | 399 B | 386 B | -13 B |
| routerDirect..dule.js gzip | 285 B | 275 B | -10 B |
| withRouter.module.js | 409 B | 396 B | -13 B |
| withRouter.m..dule.js gzip | 282 B | 274 B | -8 B |
| Overall change | 19.3 kB | 19 kB | -300 B |

Client Build Manifests Overall decrease ✓

|  | zeit/next.js canary | zeit/next.js refs/tags/v9.1.5-canary.14 | Change |
| - | - | - | - |
| _buildManifest.js | 353 B | 244 B | -109 B |
| _buildManifest.js gzip | 259 B | 200 B | -59 B |
| _buildManifest.module.js | 251 B | 251 B | ✓ |
| _buildManife..dule.js gzip | 205 B | 209 B | ⚠ +4 B |
| Overall change | 604 B | 495 B | -109 B |

Rendered Page Sizes Overall increase ⚠

|  | zeit/next.js canary | zeit/next.js refs/tags/v9.1.5-canary.14 | Change |
| - | - | - | - |
| index.html | 3.9 kB | 4.06 kB | ⚠ +154 B |
| index.html gzip | 1.02 kB | 1.03 kB | ⚠ +18 B |
| link.html | 4.58 kB | 4.58 kB | ✓ |
| link.html gzip | 1.14 kB | 1.11 kB | -24 B |
| withRouter.html | 4.43 kB | 4.59 kB | ⚠ +154 B |
| withRouter.html gzip | 1.08 kB | 1.1 kB | ⚠ +19 B |
| Overall change | 12.9 kB | 13.2 kB | ⚠ +308 B |

#### Diffs

Diff for main-HASH.js

```diff
@@ -1,5 +1,77 @@
 (window["webpackJsonp"] = window["webpackJsonp"] || []).push([[13],{

+/***/ "+oT+":
+/***/ (function(module, exports, __webpack_require__) {
+
+var _Promise = __webpack_require__("eVuF");
+
+function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
+  try {
+    var info = gen[key](arg);
+    var value = info.value;
+  } catch (error) {
+    reject(error);
+    return;
+  }
+
+  if (info.done) {
+    resolve(value);
+  } else {
+    _Promise.resolve(value).then(_next, _throw);
+  }
+}
+
+function _asyncToGenerator(fn) {
+  return function () {
+    var self = this,
+        args = arguments;
+    return new _Promise(function (resolve, reject) {
+      var gen = fn.apply(self, args);
+
+      function _next(value) {
+        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
+      }
+
+      function _throw(err) {
+        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
+      }
+
+      _next(undefined);
+    });
+  };
+}
+
+module.exports = _asyncToGenerator;
+
+/***/ }),
+
+/***/ "+plK":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("ApPD");
+module.exports = __webpack_require__("WEpk").Object.getPrototypeOf;
+
+
+/***/ }),
+
+/***/ "/+P4":
+/***/ (function(module, exports, __webpack_require__) {
+
+var _Object$getPrototypeOf = __webpack_require__("Bhuq");
+
+var _Object$setPrototypeOf = __webpack_require__("TRZx");
+
+function _getPrototypeOf(o) {
+  module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {
+    return o.__proto__ || _Object$getPrototypeOf(o);
+  };
+  return _getPrototypeOf(o);
+}
+
+module.exports = _getPrototypeOf;
+
+/***/ }),
+
 /***/ "/h46":
 /***/ (function(module, exports, __webpack_require__) {

@@ -65,6 +137,38 @@ exports.DataManager = DataManager;

 /***/ }),

+/***/ "8iia":
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/DavidBruant/Map-Set.prototype.toJSON
+var classof = __webpack_require__("QMMT");
+var from = __webpack_require__("RRc/");
+module.exports = function (NAME) {
+  return function toJSON() {
+    if (classof(this) != NAME) throw TypeError(NAME + "#toJSON isn't generic");
+    return from(this);
+  };
+};
+
+
+/***/ }),
+
+/***/ "ApPD":
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.9 Object.getPrototypeOf(O)
+var toObject = __webpack_require__("JB68");
+var $getPrototypeOf = __webpack_require__("U+KD");
+
+__webpack_require__("zn7N")('getPrototypeOf', function () {
+  return function getPrototypeOf(it) {
+    return $getPrototypeOf(toObject(it));
+  };
+});
+
+
+/***/ }),
+
 /***/ "BMP1":
 /***/ (function(module, exports, __webpack_require__) {

@@ -82,6 +186,13 @@ window.next = next;

 /***/ }),

+/***/ "Bhuq":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("+plK");
+
+/***/ }),
+
 /***/ "DqTX":
 /***/ (function(module, exports, __webpack_require__) {

@@ -326,7 +437,7 @@ if (!window.Promise) {

 var data = JSON.parse(document.getElementById('__NEXT_DATA__').textContent);
 window.__NEXT_DATA__ = data;
-var version = "9.1.4";
+var version = "9.1.5-canary.14";
 exports.version = version;
 var props = data.props,
     err = data.err,
@@ -402,7 +513,7 @@ function (_react$default$Compon) {
       // If it's a dynamic route or has a querystring

-      if (data.nextExport && ((0, _isDynamic.isDynamicRoute)(router.pathname) || location.search)) {
+      if (data.nextExport && ((0, _isDynamic.isDynamicRoute)(router.pathname) || location.search) || Component.__NEXT_SPR && location.search) {
         // update query on mount for exported pages
         router.replace(router.pathname + '?' + (0, _querystring.stringify)((0, _extends2["default"])({}, router.query, {}, (0, _querystring.parse)(location.search.substr(1)))), asPath, {
           // WARNING: `_h` is an internal option for handing Next.js
@@ -474,11 +585,13 @@ function () {
               onPerfEntry = function onPerfEntry(_ref3) {
                 var name = _ref3.name,
                     startTime = _ref3.startTime,
-                    value = _ref3.value;
+                    value = _ref3.value,
+                    duration = _ref3.duration;
                 mod.unstable_onPerformanceData({
                   name: name,
                   startTime: startTime,
-                  value: value
+                  value: value,
+                  duration: duration
                 });
               };
             }
@@ -732,8 +845,19 @@ function renderReactElement(reactEl, domEl) {
     }
   }

-  if (onPerfEntry) {
-    performance.getEntriesByType('paint').forEach(onPerfEntry);
+  if (onPerfEntry && _utils.SUPPORTS_PERFORMANCE_USER_TIMING) {
+    if (!(PerformanceObserver in window)) {
+      window.addEventListener('load', function () {
+        performance.getEntriesByType('paint').forEach(onPerfEntry);
+      });
+    } else {
+      var observer = new PerformanceObserver(function (list) {
+        list.getEntries().forEach(onPerfEntry);
+      });
+      observer.observe({
+        entryTypes: ['paint']
+      });
+    }
   }
 }

@@ -892,6 +1016,21 @@ function _doRender() {

 /***/ }),

+/***/ "K47E":
+/***/ (function(module, exports) {
+
+function _assertThisInitialized(self) {
+  if (self === void 0) {
+    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+  }
+
+  return self;
+}
+
+module.exports = _assertThisInitialized;
+
+/***/ }),
+
 /***/ "LX0d":
 /***/ (function(module, exports, __webpack_require__) {

@@ -899,6 +1038,46 @@ module.exports = __webpack_require__("UDep");

 /***/ }),

+/***/ "N9n2":
+/***/ (function(module, exports, __webpack_require__) {
+
+var _Object$create = __webpack_require__("SqZg");
+
+var setPrototypeOf = __webpack_require__("vjea");
+
+function _inherits(subClass, superClass) {
+  if (typeof superClass !== "function" && superClass !== null) {
+    throw new TypeError("Super expression must either be null or a function");
+  }
+
+  subClass.prototype = _Object$create(superClass && superClass.prototype, {
+    constructor: {
+      value: subClass,
+      writable: true,
+      configurable: true
+    }
+  });
+  if (superClass) setPrototypeOf(subClass, superClass);
+}
+
+module.exports = _inherits;
+
+/***/ }),
+
+/***/ "RRc/":
+/***/ (function(module, exports, __webpack_require__) {
+
+var forOf = __webpack_require__("oioR");
+
+module.exports = function (iter, ITERATOR) {
+  var result = [];
+  forOf(iter, false, result.push, result, ITERATOR);
+  return result;
+};
+
+
+/***/ }),
+
 /***/ "UDep":
 /***/ (function(module, exports, __webpack_require__) {

@@ -914,6 +1093,158 @@ module.exports = __webpack_require__("WEpk").Map;

 /***/ }),

+/***/ "Wu5q":
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var dP = __webpack_require__("2faE").f;
+var create = __webpack_require__("oVml");
+var redefineAll = __webpack_require__("XJU/");
+var ctx = __webpack_require__("2GTP");
+var anInstance = __webpack_require__("EXMj");
+var forOf = __webpack_require__("oioR");
+var $iterDefine = __webpack_require__("MPFp");
+var step = __webpack_require__("UO39");
+var setSpecies = __webpack_require__("TJWN");
+var DESCRIPTORS = __webpack_require__("jmDH");
+var fastKey = __webpack_require__("6/1s").fastKey;
+var validate = __webpack_require__("n3ko");
+var SIZE = DESCRIPTORS ? '_s' : 'size';
+
+var getEntry = function (that, key) {
+  // fast case
+  var index = fastKey(key);
+  var entry;
+  if (index !== 'F') return that._i[index];
+  // frozen object case
+  for (entry = that._f; entry; entry = entry.n) {
+    if (entry.k == key) return entry;
+  }
+};
+
+module.exports = {
+  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
+    var C = wrapper(function (that, iterable) {
+      anInstance(that, C, NAME, '_i');
+      that._t = NAME;         // collection type
+      that._i = create(null); // index
+      that._f = undefined;    // first entry
+      that._l = undefined;    // last entry
+      that[SIZE] = 0;         // size
+      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
+    });
+    redefineAll(C.prototype, {
+      // 23.1.3.1 Map.prototype.clear()
+      // 23.2.3.2 Set.prototype.clear()
+      clear: function clear() {
+        for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {
+          entry.r = true;
+          if (entry.p) entry.p = entry.p.n = undefined;
+          delete data[entry.i];
+        }
+        that._f = that._l = undefined;
+        that[SIZE] = 0;
+      },
+      // 23.1.3.3 Map.prototype.delete(key)
+      // 23.2.3.4 Set.prototype.delete(value)
+      'delete': function (key) {
+        var that = validate(this, NAME);
+        var entry = getEntry(that, key);
+        if (entry) {
+          var next = entry.n;
+          var prev = entry.p;
+          delete that._i[entry.i];
+          entry.r = true;
+          if (prev) prev.n = next;
+          if (next) next.p = prev;
+          if (that._f == entry) that._f = next;
+          if (that._l == entry) that._l = prev;
+          that[SIZE]--;
+        } return !!entry;
+      },
+      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
+      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
+      forEach: function forEach(callbackfn /* , that = undefined */) {
+        validate(this, NAME);
+        var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+        var entry;
+        while (entry = entry ? entry.n : this._f) {
+          f(entry.v, entry.k, this);
+          // revert to the last existing entry
+          while (entry && entry.r) entry = entry.p;
+        }
+      },
+      // 23.1.3.7 Map.prototype.has(key)
+      // 23.2.3.7 Set.prototype.has(value)
+      has: function has(key) {
+        return !!getEntry(validate(this, NAME), key);
+      }
+    });
+    if (DESCRIPTORS) dP(C.prototype, 'size', {
+      get: function () {
+        return validate(this, NAME)[SIZE];
+      }
+    });
+    return C;
+  },
+  def: function (that, key, value) {
+    var entry = getEntry(that, key);
+    var prev, index;
+    // change existing entry
+    if (entry) {
+      entry.v = value;
+    // create new entry
+    } else {
+      that._l = entry = {
+        i: index = fastKey(key, true), // <- index
+        k: key,                        // <- key
+        v: value,                      // <- value
+        p: prev = that._l,             // <- previous entry
+        n: undefined,                  // <- next entry
+        r: false                       // <- removed
+      };
+      if (!that._f) that._f = entry;
+      if (prev) prev.n = entry;
+      that[SIZE]++;
+      // add to index
+      if (index !== 'F') that._i[index] = entry;
+    } return that;
+  },
+  getEntry: getEntry,
+  setStrong: function (C, NAME, IS_MAP) {
+    // add .keys, .values, .entries, [@@iterator]
+    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
+    $iterDefine(C, NAME, function (iterated, kind) {
+      this._t = validate(iterated, NAME); // target
+      this._k = kind;                     // kind
+      this._l = undefined;                // previous
+    }, function () {
+      var that = this;
+      var kind = that._k;
+      var entry = that._l;
+      // revert to the last existing entry
+      while (entry && entry.r) entry = entry.p;
+      // get next entry
+      if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {
+        // or finish the iteration
+        that._t = undefined;
+        return step(1);
+      }
+      // return step by kind
+      if (kind == 'keys') return step(0, entry.k);
+      if (kind == 'values') return step(0, entry.v);
+      return step(0, [entry.k, entry.v]);
+    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);
+
+    // add [@@species], 23.1.2.2, 23.2.2.2
+    setSpecies(NAME);
+  }
+};
+
+
+/***/ }),
+
 /***/ "XLbu":
 /***/ (function(module, exports, __webpack_require__) {

@@ -925,6 +1256,25 @@ $export($export.P + $export.R, 'Map', { toJSON: __webpack_require__("8iia")('Map

 /***/ }),

+/***/ "ZDA2":
+/***/ (function(module, exports, __webpack_require__) {
+
+var _typeof = __webpack_require__("iZP3");
+
+var assertThisInitialized = __webpack_require__("K47E");
+
+function _possibleConstructorReturn(self, call) {
+  if (call && (_typeof(call) === "object" || typeof call === "function")) {
+    return call;
+  }
+
+  return assertThisInitialized(self);
+}
+
+module.exports = _possibleConstructorReturn;
+
+/***/ }),
+
 /***/ "dVTT":
 /***/ (function(module, exports, __webpack_require__) {

@@ -1054,7 +1404,7 @@ function preloadScript(url) {
   var link = document.createElement('link');
   link.rel = 'preload';
   link.crossOrigin = "anonymous";
-  link.href = encodeURI(url);
+  link.href = url;
   link.as = 'script';
   document.head.appendChild(link);
 }
@@ -1090,7 +1440,7 @@ function () {
     value: function getDependencies(route) {
       return this.promisedBuildManifest.then(function (man) {
         return man[route] && man[route].map(function (url) {
-          return "/_next/" + url;
+          return "/_next/" + encodeURI(url);
         }) || [];
       });
     }
@@ -1193,7 +1543,7 @@ function () {
               case 0:
                 route = _this.normalizeRoute(route);
                 scriptRoute = route === '/' ? '/index.js' : route + ".js";
-                url = _this.assetPrefix + "/_next/static/" + encodeURIComponent(_this.buildId) + "/pages" + scriptRoute;
+                url = _this.assetPrefix + "/_next/static/" + encodeURIComponent(_this.buildId) + "/pages" + encodeURI(scriptRoute);

                 _this.loadScript(url, route, true);

@@ -1220,7 +1570,7 @@ function () {
       }

       script.crossOrigin = "anonymous";
-      script.src = encodeURI(url);
+      script.src = url;

       script.onerror = function () {
         var error = new Error("Error loading script " + url);
@@ -1284,7 +1634,7 @@ function () {
                   scriptRoute = scriptRoute.replace(/\.js$/, '.module.js');
                 }

-                url = _this2.assetPrefix + (isDependency ? route : "/_next/static/" + encodeURIComponent(_this2.buildId) + "/pages" + scriptRoute); // n.b. If preload is not supported, we fall back to `loadPage` which has
+                url = _this2.assetPrefix + (isDependency ? route : "/_next/static/" + encodeURIComponent(_this2.buildId) + "/pages" + encodeURI(scriptRoute)); // n.b. If preload is not supported, we fall back to `loadPage` which has
                 // its own deduping mechanism.

                 if (!document.querySelector("link[rel=\"preload\"][href^=\"" + url + "\"], script[data-next-page=\"" + route + "\"]")) {
```

Diff for main-HASH.module.js

```diff
@@ -341,7 +341,7 @@ if (!window.Promise) {

 var data = JSON.parse(document.getElementById('__NEXT_DATA__').textContent);
 window.__NEXT_DATA__ = data;
-var version = "9.1.4";
+var version = "9.1.5-canary.14";
 exports.version = version;
 var {
   props,
@@ -403,7 +403,7 @@ class Container extends _react.default.Component {
     // If it's a dynamic route or has a querystring

-    if (data.nextExport && ((0, _isDynamic.isDynamicRoute)(router.pathname) || location.search)) {
+    if (data.nextExport && ((0, _isDynamic.isDynamicRoute)(router.pathname) || location.search) || Component.__NEXT_SPR && location.search) {
       // update query on mount for exported pages
       router.replace(router.pathname + '?' + (0, _querystring.stringify)((0, _extends2.default)({}, router.query, {}, (0, _querystring.parse)(location.search.substr(1)))), asPath, {
         // WARNING: `_h` is an internal option for handing Next.js
@@ -461,12 +461,14 @@ function () {
         var {
           name,
           startTime,
-          value
+          value,
+          duration
         } = _ref3;
         mod.unstable_onPerformanceData({
           name,
           startTime,
-          value
+          value,
+          duration
         });
       };
     }
@@ -620,8 +622,19 @@ function renderReactElement(reactEl, domEl) {
     }
   }

-  if (onPerfEntry) {
-    performance.getEntriesByType('paint').forEach(onPerfEntry);
+  if (onPerfEntry && _utils.SUPPORTS_PERFORMANCE_USER_TIMING) {
+    if (!(PerformanceObserver in window)) {
+      window.addEventListener('load', () => {
+        performance.getEntriesByType('paint').forEach(onPerfEntry);
+      });
+    } else {
+      var observer = new PerformanceObserver(list => {
+        list.getEntries().forEach(onPerfEntry);
+      });
+      observer.observe({
+        entryTypes: ['paint']
+      });
+    }
   }
 }

@@ -1082,7 +1095,7 @@ function preloadScript(url) {
   var link = document.createElement('link');
   link.rel = 'preload';
   link.crossOrigin = "anonymous";
-  link.href = encodeURI(url);
+  link.href = url;
   link.as = 'script';
   document.head.appendChild(link);
 }
@@ -1110,7 +1123,7 @@ class PageLoader {

   getDependencies(route) {
-    return this.promisedBuildManifest.then(man => man[route] && man[route].map(url => "/_next/" + url) || []);
+    return this.promisedBuildManifest.then(man => man[route] && man[route].map(url => "/_next/" + encodeURI(url)) || []);
   }

   normalizeRoute(route) {
@@ -1195,7 +1208,7 @@ class PageLoader {
     return (0, _asyncToGenerator2.default)(function* () {
       route = _this.normalizeRoute(route);
       var scriptRoute = route === '/' ? '/index.js' : route + ".js";
-      var url = _this.assetPrefix + "/_next/static/" + encodeURIComponent(_this.buildId) + "/pages" + scriptRoute;
+      var url = _this.assetPrefix + "/_next/static/" + encodeURIComponent(_this.buildId) + "/pages" + encodeURI(scriptRoute);

       _this.loadScript(url, route, true);
     })();
@@ -1212,7 +1225,7 @@ class PageLoader {
     }

     script.crossOrigin = "anonymous";
-    script.src = encodeURI(url);
+    script.src = url;

     script.onerror = () => {
       var error = new Error("Error loading script " + url);
@@ -1262,7 +1275,7 @@ class PageLoader {
         scriptRoute = scriptRoute.replace(/\.js$/, '.module.js');
       }

-      var url = _this2.assetPrefix + (isDependency ? route : "/_next/static/" + encodeURIComponent(_this2.buildId) + "/pages" + scriptRoute); // n.b. If preload is not supported, we fall back to `loadPage` which has
+      var url = _this2.assetPrefix + (isDependency ? route : "/_next/static/" + encodeURIComponent(_this2.buildId) + "/pages" + encodeURI(scriptRoute)); // n.b. If preload is not supported, we fall back to `loadPage` which has
       // its own deduping mechanism.

       if (document.querySelector("link[rel=\"preload\"][href^=\"" + url + "\"], script[data-next-page=\"" + route + "\"]")) {
```

Diff for polyfills-HASH.js

```diff
@@ -635,6 +635,497 @@ module.exports = shouldUseNative() ? Object.assign : function (target, source) {

 /***/ }),

+/***/ "T1qB":
+/***/ (function(module, exports, __webpack_require__) {
+
+/* WEBPACK VAR INJECTION */(function(global) {(function(global) {
+  /**
+   * Polyfill URLSearchParams
+   *
+   * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js
+   */
+
+  var checkIfIteratorIsSupported = function() {
+    try {
+      return !!Symbol.iterator;
+    } catch (error) {
+      return false;
+    }
+  };
+
+
+  var iteratorSupported = checkIfIteratorIsSupported();
+
+  var createIterator = function(items) {
+    var iterator = {
+      next: function() {
+        var value = items.shift();
+        return { done: value === void 0, value: value };
+      }
+    };
+
+    if (iteratorSupported) {
+      iterator[Symbol.iterator] = function() {
+        return iterator;
+      };
+    }
+
+    return iterator;
+  };
+
+  /**
+   * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing
+   * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.
+   */
+  var serializeParam = function(value) {
+    return encodeURIComponent(value).replace(/%20/g, '+');
+  };
+
+  var deserializeParam = function(value) {
+    return decodeURIComponent(String(value).replace(/\+/g, ' '));
+  };
+
+  var polyfillURLSearchParams = function() {
+
+    var URLSearchParams = function(searchString) {
+      Object.defineProperty(this, '_entries', { writable: true, value: {} });
+      var typeofSearchString = typeof searchString;
+
+      if (typeofSearchString === 'undefined') {
+        // do nothing
+      } else if (typeofSearchString === 'string') {
+        if (searchString !== '') {
+          this._fromString(searchString);
+        }
+      } else if (searchString instanceof URLSearchParams) {
+        var _this = this;
+        searchString.forEach(function(value, name) {
+          _this.append(name, value);
+        });
+      } else if ((searchString !== null) && (typeofSearchString === 'object')) {
+        if (Object.prototype.toString.call(searchString) === '[object Array]') {
+          for (var i = 0; i < searchString.length; i++) {
+            var entry = searchString[i];
+            if ((Object.prototype.toString.call(entry) === '[object Array]') || (entry.length !== 2)) {
+              this.append(entry[0], entry[1]);
+            } else {
+              throw new TypeError('Expected [string, any] as entry at index ' + i + ' of URLSearchParams\'s input');
+            }
+          }
+        } else {
+          for (var key in searchString) {
+            if (searchString.hasOwnProperty(key)) {
+              this.append(key, searchString[key]);
+            }
+          }
+        }
+      } else {
+        throw new TypeError('Unsupported input\'s type for URLSearchParams');
+      }
+    };
+
+    var proto = URLSearchParams.prototype;
+
+    proto.append = function(name, value) {
+      if (name in this._entries) {
+        this._entries[name].push(String(value));
+      } else {
+        this._entries[name] = [String(value)];
+      }
+    };
+
+    proto.delete = function(name) {
+      delete this._entries[name];
+    };
+
+    proto.get = function(name) {
+      return (name in this._entries) ? this._entries[name][0] : null;
+    };
+
+    proto.getAll = function(name) {
+      return (name in this._entries) ? this._entries[name].slice(0) : [];
+    };
+
+    proto.has = function(name) {
+      return (name in this._entries);
+    };
+
+    proto.set = function(name, value) {
+      this._entries[name] = [String(value)];
+    };
+
+    proto.forEach = function(callback, thisArg) {
+      var entries;
+      for (var name in this._entries) {
+        if (this._entries.hasOwnProperty(name)) {
+          entries = this._entries[name];
+          for (var i = 0; i < entries.length; i++) {
+            callback.call(thisArg, entries[i], name, this);
+          }
+        }
+      }
+    };
+
+    proto.keys = function() {
+      var items = [];
+      this.forEach(function(value, name) {
+        items.push(name);
+      });
+      return createIterator(items);
+    };
+
+    proto.values = function() {
+      var items = [];
+      this.forEach(function(value) {
+        items.push(value);
+      });
+      return createIterator(items);
+    };
+
+    proto.entries = function() {
+      var items = [];
+      this.forEach(function(value, name) {
+        items.push([name, value]);
+      });
+      return createIterator(items);
+    };
+
+    if (iteratorSupported) {
+      proto[Symbol.iterator] = proto.entries;
+    }
+
+    proto.toString = function() {
+      var searchArray = [];
+      this.forEach(function(value, name) {
+        searchArray.push(serializeParam(name) + '=' + serializeParam(value));
+      });
+      return searchArray.join('&');
+    };
+
+
+    global.URLSearchParams = URLSearchParams;
+  };
+
+  var checkIfURLSearchParamsSupported = function() {
+    try {
+      var URLSearchParams = global.URLSearchParams;
+
+      return (new URLSearchParams('?a=1').toString() === 'a=1') && (typeof URLSearchParams.prototype.set === 'function');
+    } catch (e) {
+      return false;
+    }
+  };
+
+  if (!checkIfURLSearchParamsSupported()) {
+    polyfillURLSearchParams();
+  }
+
+  var proto = global.URLSearchParams.prototype;
+
+  if (typeof proto.sort !== 'function') {
+    proto.sort = function() {
+      var _this = this;
+      var items = [];
+      this.forEach(function(value, name) {
+        items.push([name, value]);
+        if (!_this._entries) {
+          _this.delete(name);
+        }
+      });
+      items.sort(function(a, b) {
+        if (a[0] < b[0]) {
+          return -1;
+        } else if (a[0] > b[0]) {
+          return +1;
+        } else {
+          return 0;
+        }
+      });
+      if (_this._entries) { // force reset because IE keeps keys index
+        _this._entries = {};
+      }
+      for (var i = 0; i < items.length; i++) {
+        this.append(items[i][0], items[i][1]);
+      }
+    };
+  }
+
+  if (typeof proto._fromString !== 'function') {
+    Object.defineProperty(proto, '_fromString', {
+      enumerable: false,
+      configurable: false,
+      writable: false,
+      value: function(searchString) {
+        if (this._entries) {
+          this._entries = {};
+        } else {
+          var keys = [];
+          this.forEach(function(value, name) {
+            keys.push(name);
+          });
+          for (var i = 0; i < keys.length; i++) {
+            this.delete(keys[i]);
+          }
+        }
+
+        searchString = searchString.replace(/^\?/, '');
+        var attributes = searchString.split('&');
+        var attribute;
+        for (var i = 0; i < attributes.length; i++) {
+          attribute = attributes[i].split('=');
+          this.append(
+            deserializeParam(attribute[0]),
+            (attribute.length > 1) ? deserializeParam(attribute[1]) : ''
+          );
+        }
+      }
+    });
+  }
+
+  // HTMLAnchorElement
+
+})(
+  (typeof global !== 'undefined') ? global
+    : ((typeof window !== 'undefined') ? window
+    : ((typeof self !== 'undefined') ? self : this))
+);
+
+(function(global) {
+  /**
+   * Polyfill URL
+   *
+   * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js
+   */
+
+  var checkIfURLIsSupported = function() {
+    try {
+      var u = new global.URL('b', 'http://a');
+      u.pathname = 'c%20d';
+      return (u.href === 'http://a/c%20d') && u.searchParams;
+    } catch (e) {
+      return false;
+    }
+  };
+
+
+  var polyfillURL = function() {
+    var _URL = global.URL;
+
+    var URL = function(url, base) {
+      if (typeof url !== 'string') url = String(url);
+
+      // Only create another document if the base is different from current location.
+      var doc = document, baseElement;
+      if (base && (global.location === void 0 || base !== global.location.href)) {
+        doc = document.implementation.createHTMLDocument('');
+        baseElement = doc.createElement('base');
+        baseElement.href = base;
+        doc.head.appendChild(baseElement);
+        try {
+          if (baseElement.href.indexOf(base) !== 0) throw new Error(baseElement.href);
+        } catch (err) {
+          throw new Error('URL unable to set base ' + base + ' due to ' + err);
+        }
+      }
+
+      var anchorElement = doc.createElement('a');
+      anchorElement.href = url;
+      if (baseElement) {
+        doc.body.appendChild(anchorElement);
+        anchorElement.href = anchorElement.href; // force href to refresh
+      }
+
+      if (anchorElement.protocol === ':' || !/:/.test(anchorElement.href)) {
+        throw new TypeError('Invalid URL');
+      }
+
+      Object.defineProperty(this, '_anchorElement', {
+        value: anchorElement
+      });
+
+
+      // create a linked searchParams which reflect its changes on URL
+      var searchParams = new global.URLSearchParams(this.search);
+      var enableSearchUpdate = true;
+      var enableSearchParamsUpdate = true;
+      var _this = this;
+      ['append', 'delete', 'set'].forEach(function(methodName) {
+        var method = searchParams[methodName];
+        searchParams[methodName] = function() {
+          method.apply(searchParams, arguments);
+          if (enableSearchUpdate) {
+            enableSearchParamsUpdate = false;
+            _this.search = searchParams.toString();
+            enableSearchParamsUpdate = true;
+          }
+        };
+      });
+
+      Object.defineProperty(this, 'searchParams', {
+        value: searchParams,
+        enumerable: true
+      });
+
+      var search = void 0;
+      Object.defineProperty(this, '_updateSearchParams', {
+        enumerable: false,
+        configurable: false,
+        writable: false,
+        value: function() {
+          if (this.search !== search) {
+            search = this.search;
+            if (enableSearchParamsUpdate) {
+              enableSearchUpdate = false;
+              this.searchParams._fromString(this.search);
+              enableSearchUpdate = true;
+            }
+          }
+        }
+      });
+    };
+
+    var proto = URL.prototype;
+
+    var linkURLWithAnchorAttribute = function(attributeName) {
+      Object.defineProperty(proto, attributeName, {
+        get: function() {
+          return this._anchorElement[attributeName];
+        },
+        set: function(value) {
+          this._anchorElement[attributeName] = value;
+        },
+        enumerable: true
+      });
+    };
+
+    ['hash', 'host', 'hostname', 'port', 'protocol']
+      .forEach(function(attributeName) {
+        linkURLWithAnchorAttribute(attributeName);
+      });
+
+    Object.defineProperty(proto, 'search', {
+      get: function() {
+        return this._anchorElement['search'];
+      },
+      set: function(value) {
+        this._anchorElement['search'] = value;
+        this._updateSearchParams();
+      },
+      enumerable: true
+    });
+
+    Object.defineProperties(proto, {
+
+      'toString': {
+        get: function() {
+          var _this = this;
+          return function() {
+            return _this.href;
+          };
+        }
+      },
+
+      'href': {
+        get: function() {
+          return this._anchorElement.href.replace(/\?$/, '');
+        },
+        set: function(value) {
+          this._anchorElement.href = value;
+          this._updateSearchParams();
+        },
+        enumerable: true
+      },
+
+      'pathname': {
+        get: function() {
+          return this._anchorElement.pathname.replace(/(^\/?)/, '/');
+        },
+        set: function(value) {
+          this._anchorElement.pathname = value;
+        },
+        enumerable: true
+      },
+
+      'origin': {
+        get: function() {
+          // get expected port from protocol
+          var expectedPort = { 'http:': 80, 'https:': 443, 'ftp:': 21 }[this._anchorElement.protocol];
+          // add port to origin if, expected port is different than actual port
+          // and it is not empty f.e http://foo:8080
+          // 8080 != 80 && 8080 != ''
+          var addPortToOrigin = this._anchorElement.port != expectedPort &&
+            this._anchorElement.port !== '';
+
+          return this._anchorElement.protocol +
+            '//' +
+            this._anchorElement.hostname +
+            (addPortToOrigin ? (':' + this._anchorElement.port) : '');
+        },
+        enumerable: true
+      },
+
+      'password': { // TODO
+        get: function() {
+          return '';
+        },
+        set: function(value) {
+        },
+        enumerable: true
+      },
+
+      'username': { // TODO
+        get: function() {
+          return '';
+        },
+        set: function(value) {
+        },
+        enumerable: true
+      },
+    });
+
+    URL.createObjectURL = function(blob) {
+      return _URL.createObjectURL.apply(_URL, arguments);
+    };
+
+    URL.revokeObjectURL = function(url) {
+      return _URL.revokeObjectURL.apply(_URL, arguments);
+    };
+
+    global.URL = URL;
+
+  };
+
+  if (!checkIfURLIsSupported()) {
+    polyfillURL();
+  }
+
+  if ((global.location !== void 0) && !('origin' in global.location)) {
+    var getOrigin = function() {
+      return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');
+    };
+
+    try {
+      Object.defineProperty(global.location, 'origin', {
+        get: getOrigin,
+        enumerable: true
+      });
+    } catch (e) {
+      setInterval(function() {
+        global.location.origin = getOrigin();
+      }, 100);
+    }
+  }
+
+})(
+  (typeof global !== 'undefined') ? global
+    : ((typeof window !== 'undefined') ? window
+    : ((typeof self !== 'undefined') ? self : this))
+);
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("yLpj")))
+
+/***/ }),
+
 /***/ "XLER":
 /***/ (function(module, exports, __webpack_require__) {

@@ -643,8 +1134,37 @@ module.exports = shouldUseNative() ? Object.assign : function (target, source) {

 __webpack_require__("GkXk");

+__webpack_require__("T1qB");
+
 Object.assign = __webpack_require__("MgzW");

+/***/ }),
+
+/***/ "yLpj":
+/***/ (function(module, exports) {
+
+var g;
+
+// This works in non-strict mode
+g = (function() {
+	return this;
+})();
+
+try {
+	// This works if eval is allowed (see CSP)
+	g = g || new Function("return this")();
+} catch (e) {
+	// This works if the window reference is available
+	if (typeof window === "object") g = window;
+}
+
+// g can still be undefined, but nothing to do about it...
+// We return undefined, instead of nothing here, so it's
+// easier to handle this case. if(!global) { ...}
+
+module.exports = g;
+
+
 /***/ })

 },[["XLER",0]]]);
\ No newline at end of file
```

Diff for _app.js

```diff
@@ -1,14 +1,47 @@
 (window["webpackJsonp"] = window["webpackJsonp"] || []).push([[6],{

-/***/ "+SFK":
+/***/ "+oT+":
 /***/ (function(module, exports, __webpack_require__) {

-__webpack_require__("AUvm");
-__webpack_require__("wgeU");
-__webpack_require__("adOz");
-__webpack_require__("dl0q");
-module.exports = __webpack_require__("WEpk").Symbol;
+var _Promise = __webpack_require__("eVuF");

+function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
+  try {
+    var info = gen[key](arg);
+    var value = info.value;
+  } catch (error) {
+    reject(error);
+    return;
+  }
+
+  if (info.done) {
+    resolve(value);
+  } else {
+    _Promise.resolve(value).then(_next, _throw);
+  }
+}
+
+function _asyncToGenerator(fn) {
+  return function () {
+    var self = this,
+        args = arguments;
+    return new _Promise(function (resolve, reject) {
+      var gen = fn.apply(self, args);
+
+      function _next(value) {
+        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
+      }
+
+      function _throw(err) {
+        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
+      }
+
+      _next(undefined);
+    });
+  };
+}
+
+module.exports = _asyncToGenerator;

 /***/ }),

@@ -39,296 +72,6 @@ module.exports = _getPrototypeOf;

 /***/ }),

-/***/ "2Nb0":
-/***/ (function(module, exports, __webpack_require__) {
-
-__webpack_require__("FlQf");
-__webpack_require__("bBy9");
-module.exports = __webpack_require__("zLkG").f('iterator');
-
-
-/***/ }),
-
-/***/ "A5Xg":
-/***/ (function(module, exports, __webpack_require__) {
-
-// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
-var toIObject = __webpack_require__("NsO/");
-var gOPN = __webpack_require__("ar/p").f;
-var toString = {}.toString;
-
-var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
-  ? Object.getOwnPropertyNames(window) : [];
-
-var getWindowNames = function (it) {
-  try {
-    return gOPN(it);
-  } catch (e) {
-    return windowNames.slice();
-  }
-};
-
-module.exports.f = function getOwnPropertyNames(it) {
-  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
-};
-
-
-/***/ }),
-
-/***/ "AUvm":
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-// ECMAScript 6 symbols shim
-var global = __webpack_require__("5T2Y");
-var has = __webpack_require__("B+OT");
-var DESCRIPTORS = __webpack_require__("jmDH");
-var $export = __webpack_require__("Y7ZC");
-var redefine = __webpack_require__("kTiW");
-var META = __webpack_require__("6/1s").KEY;
-var $fails = __webpack_require__("KUxP");
-var shared = __webpack_require__("29s/");
-var setToStringTag = __webpack_require__("RfKB");
-var uid = __webpack_require__("YqAc");
-var wks = __webpack_require__("UWiX");
-var wksExt = __webpack_require__("zLkG");
-var wksDefine = __webpack_require__("Zxgi");
-var enumKeys = __webpack_require__("R+7+");
-var isArray = __webpack_require__("kAMH");
-var anObject = __webpack_require__("5K7Z");
-var isObject = __webpack_require__("93I4");
-var toObject = __webpack_require__("JB68");
-var toIObject = __webpack_require__("NsO/");
-var toPrimitive = __webpack_require__("G8Mo");
-var createDesc = __webpack_require__("rr1i");
-var _create = __webpack_require__("oVml");
-var gOPNExt = __webpack_require__("A5Xg");
-var $GOPD = __webpack_require__("vwuL");
-var $GOPS = __webpack_require__("mqlF");
-var $DP = __webpack_require__("2faE");
-var $keys = __webpack_require__("w6GO");
-var gOPD = $GOPD.f;
-var dP = $DP.f;
-var gOPN = gOPNExt.f;
-var $Symbol = global.Symbol;
-var $JSON = global.JSON;
-var _stringify = $JSON && $JSON.stringify;
-var PROTOTYPE = 'prototype';
-var HIDDEN = wks('_hidden');
-var TO_PRIMITIVE = wks('toPrimitive');
-var isEnum = {}.propertyIsEnumerable;
-var SymbolRegistry = shared('symbol-registry');
-var AllSymbols = shared('symbols');
-var OPSymbols = shared('op-symbols');
-var ObjectProto = Object[PROTOTYPE];
-var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
-var QObject = global.QObject;
-// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
-var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
-
-// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
-var setSymbolDesc = DESCRIPTORS && $fails(function () {
-  return _create(dP({}, 'a', {
-    get: function () { return dP(this, 'a', { value: 7 }).a; }
-  })).a != 7;
-}) ? function (it, key, D) {
-  var protoDesc = gOPD(ObjectProto, key);
-  if (protoDesc) delete ObjectProto[key];
-  dP(it, key, D);
-  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
-} : dP;
-
-var wrap = function (tag) {
-  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
-  sym._k = tag;
-  return sym;
-};
-
-var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
-  return typeof it == 'symbol';
-} : function (it) {
-  return it instanceof $Symbol;
-};
-
-var $defineProperty = function defineProperty(it, key, D) {
-  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
-  anObject(it);
-  key = toPrimitive(key, true);
-  anObject(D);
-  if (has(AllSymbols, key)) {
-    if (!D.enumerable) {
-      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
-      it[HIDDEN][key] = true;
-    } else {
-      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
-      D = _create(D, { enumerable: createDesc(0, false) });
-    } return setSymbolDesc(it, key, D);
-  } return dP(it, key, D);
-};
-var $defineProperties = function defineProperties(it, P) {
-  anObject(it);
-  var keys = enumKeys(P = toIObject(P));
-  var i = 0;
-  var l = keys.length;
-  var key;
-  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
-  return it;
-};
-var $create = function create(it, P) {
-  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
-};
-var $propertyIsEnumerable = function propertyIsEnumerable(key) {
-  var E = isEnum.call(this, key = toPrimitive(key, true));
-  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
-  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
-};
-var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
-  it = toIObject(it);
-  key = toPrimitive(key, true);
-  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
-  var D = gOPD(it, key);
-  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
-  return D;
-};
-var $getOwnPropertyNames = function getOwnPropertyNames(it) {
-  var names = gOPN(toIObject(it));
-  var result = [];
-  var i = 0;
-  var key;
-  while (names.length > i) {
-    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
-  } return result;
-};
-var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
-  var IS_OP = it === ObjectProto;
-  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
-  var result = [];
-  var i = 0;
-  var key;
-  while (names.length > i) {
-    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
-  } return result;
-};
-
-// 19.4.1.1 Symbol([description])
-if (!USE_NATIVE) {
-  $Symbol = function Symbol() {
-    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
-    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
-    var $set = function (value) {
-      if (this === ObjectProto) $set.call(OPSymbols, value);
-      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
-      setSymbolDesc(this, tag, createDesc(1, value));
-    };
-    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
-    return wrap(tag);
-  };
-  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
-    return this._k;
-  });
-
-  $GOPD.f = $getOwnPropertyDescriptor;
-  $DP.f = $defineProperty;
-  __webpack_require__("ar/p").f = gOPNExt.f = $getOwnPropertyNames;
-  __webpack_require__("NV0k").f = $propertyIsEnumerable;
-  $GOPS.f = $getOwnPropertySymbols;
-
-  if (DESCRIPTORS && !__webpack_require__("uOPS")) {
-    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
-  }
-
-  wksExt.f = function (name) {
-    return wrap(wks(name));
-  };
-}
-
-$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });
-
-for (var es6Symbols = (
-  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
-  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
-).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);
-
-for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);
-
-$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
-  // 19.4.2.1 Symbol.for(key)
-  'for': function (key) {
-    return has(SymbolRegistry, key += '')
-      ? SymbolRegistry[key]
-      : SymbolRegistry[key] = $Symbol(key);
-  },
-  // 19.4.2.5 Symbol.keyFor(sym)
-  keyFor: function keyFor(sym) {
-    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
-    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
-  },
-  useSetter: function () { setter = true; },
-  useSimple: function () { setter = false; }
-});
-
-$export($export.S + $export.F * !USE_NATIVE, 'Object', {
-  // 19.1.2.2 Object.create(O [, Properties])
-  create: $create,
-  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
-  defineProperty: $defineProperty,
-  // 19.1.2.3 Object.defineProperties(O, Properties)
-  defineProperties: $defineProperties,
-  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
-  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
-  // 19.1.2.7 Object.getOwnPropertyNames(O)
-  getOwnPropertyNames: $getOwnPropertyNames,
-  // 19.1.2.8 Object.getOwnPropertySymbols(O)
-  getOwnPropertySymbols: $getOwnPropertySymbols
-});
-
-// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
-// https://bugs.chromium.org/p/v8/issues/detail?id=3443
-var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });
-
-$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
-  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
-    return $GOPS.f(toObject(it));
-  }
-});
-
-// 24.3.2 JSON.stringify(value [, replacer [, space]])
-$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
-  var S = $Symbol();
-  // MS Edge converts symbol values to JSON as {}
-  // WebKit converts symbol values to JSON as null
-  // V8 throws on boxed symbols
-  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
-})), 'JSON', {
-  stringify: function stringify(it) {
-    var args = [it];
-    var i = 1;
-    var replacer, $replacer;
-    while (arguments.length > i) args.push(arguments[i++]);
-    $replacer = replacer = args[1];
-    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
-    if (!isArray(replacer)) replacer = function (key, value) {
-      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
-      if (!isSymbol(value)) return value;
-    };
-    args[1] = replacer;
-    return _stringify.apply($JSON, args);
-  }
-});
-
-// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
-$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__("NegM")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
-// 19.4.3.5 Symbol.prototype[@@toStringTag]
-setToStringTag($Symbol, 'Symbol');
-// 20.2.1.9 Math[@@toStringTag]
-setToStringTag(Math, 'Math', true);
-// 24.3.3 JSON[@@toStringTag]
-setToStringTag(global.JSON, 'JSON', true);
-
-
-/***/ }),
-
 /***/ "ApPD":
 /***/ (function(module, exports, __webpack_require__) {

@@ -565,42 +308,6 @@ module.exports = _inherits;

 /***/ }),

-/***/ "R+7+":
-/***/ (function(module, exports, __webpack_require__) {
-
-// all enumerable object keys, includes symbols
-var getKeys = __webpack_require__("w6GO");
-var gOPS = __webpack_require__("mqlF");
-var pIE = __webpack_require__("NV0k");
-module.exports = function (it) {
-  var result = getKeys(it);
-  var getSymbols = gOPS.f;
-  if (getSymbols) {
-    var symbols = getSymbols(it);
-    var isEnum = pIE.f;
-    var i = 0;
-    var key;
-    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
-  } return result;
-};
-
-
-/***/ }),
-
-/***/ "XVgq":
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__("2Nb0");
-
-/***/ }),
-
-/***/ "Z7t5":
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__("+SFK");
-
-/***/ }),
-
 /***/ "ZDA2":
 /***/ (function(module, exports, __webpack_require__) {

@@ -620,52 +327,6 @@ module.exports = _possibleConstructorReturn;

 /***/ }),

-/***/ "Zxgi":
-/***/ (function(module, exports, __webpack_require__) {
-
-var global = __webpack_require__("5T2Y");
-var core = __webpack_require__("WEpk");
-var LIBRARY = __webpack_require__("uOPS");
-var wksExt = __webpack_require__("zLkG");
-var defineProperty = __webpack_require__("2faE").f;
-module.exports = function (name) {
-  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
-  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
-};
-
-
-/***/ }),
-
-/***/ "adOz":
-/***/ (function(module, exports, __webpack_require__) {
-
-__webpack_require__("Zxgi")('asyncIterator');
-
-
-/***/ }),
-
-/***/ "ar/p":
-/***/ (function(module, exports, __webpack_require__) {
-
-// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
-var $keys = __webpack_require__("5vMV");
-var hiddenKeys = __webpack_require__("FpHa").concat('length', 'prototype');
-
-exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
-  return $keys(O, hiddenKeys);
-};
-
-
-/***/ }),
-
-/***/ "dl0q":
-/***/ (function(module, exports, __webpack_require__) {
-
-__webpack_require__("Zxgi")('observable');
-
-
-/***/ }),
-
 /***/ "e9+W":
 /***/ (function(module, exports, __webpack_require__) {

@@ -677,41 +338,6 @@ __webpack_require__("Zxgi")('observable');
     }]);

-/***/ }),
-
-/***/ "iZP3":
-/***/ (function(module, exports, __webpack_require__) {
-
-var _Symbol$iterator = __webpack_require__("XVgq");
-
-var _Symbol = __webpack_require__("Z7t5");
-
-function _typeof2(obj) { if (typeof _Symbol === "function" && typeof _Symbol$iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof _Symbol === "function" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); }
-
-function _typeof(obj) {
-  if (typeof _Symbol === "function" && _typeof2(_Symbol$iterator) === "symbol") {
-    module.exports = _typeof = function _typeof(obj) {
-      return _typeof2(obj);
-    };
-  } else {
-    module.exports = _typeof = function _typeof(obj) {
-      return obj && typeof _Symbol === "function" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? "symbol" : _typeof2(obj);
-    };
-  }
-
-  return _typeof(obj);
-}
-
-module.exports = _typeof;
-
-/***/ }),
-
-/***/ "zLkG":
-/***/ (function(module, exports, __webpack_require__) {
-
-exports.f = __webpack_require__("UWiX");
-
-
 /***/ })

-},[["e9+W",0,2,1,3]]]);
\ No newline at end of file
+},[["e9+W",0,2,1,3,4]]]);
\ No newline at end of file
```

Diff for _error.js

```diff
@@ -15,6 +15,33 @@ module.exports = __webpack_require__("WEpk").Set;

 /***/ }),

+/***/ "+plK":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("ApPD");
+module.exports = __webpack_require__("WEpk").Object.getPrototypeOf;
+
+
+/***/ }),
+
+/***/ "/+P4":
+/***/ (function(module, exports, __webpack_require__) {
+
+var _Object$getPrototypeOf = __webpack_require__("Bhuq");
+
+var _Object$setPrototypeOf = __webpack_require__("TRZx");
+
+function _getPrototypeOf(o) {
+  module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {
+    return o.__proto__ || _Object$getPrototypeOf(o);
+  };
+  return _getPrototypeOf(o);
+}
+
+module.exports = _getPrototypeOf;
+
+/***/ }),
+
 /***/ "/0+H":
 /***/ (function(module, exports, __webpack_require__) {

@@ -60,19 +87,6 @@ exports.useAmp = useAmp;

 /***/ }),

-/***/ "/HRN":
-/***/ (function(module, exports) {
-
-function _classCallCheck(instance, Constructor) {
-  if (!(instance instanceof Constructor)) {
-    throw new TypeError("Cannot call a class as a function");
-  }
-}
-
-module.exports = _classCallCheck;
-
-/***/ }),
-
 /***/ "/a9y":
 /***/ (function(module, exports, __webpack_require__) {

@@ -229,110 +243,6 @@ module.exports = _nonIterableSpread;

 /***/ }),

-/***/ "3GJH":
-/***/ (function(module, exports, __webpack_require__) {
-
-__webpack_require__("lCc8");
-var $Object = __webpack_require__("WEpk").Object;
-module.exports = function create(P, D) {
-  return $Object.create(P, D);
-};
-
-
-/***/ }),
-
-/***/ "6/1s":
-/***/ (function(module, exports, __webpack_require__) {
-
-var META = __webpack_require__("YqAc")('meta');
-var isObject = __webpack_require__("93I4");
-var has = __webpack_require__("B+OT");
-var setDesc = __webpack_require__("2faE").f;
-var id = 0;
-var isExtensible = Object.isExtensible || function () {
-  return true;
-};
-var FREEZE = !__webpack_require__("KUxP")(function () {
-  return isExtensible(Object.preventExtensions({}));
-});
-var setMeta = function (it) {
-  setDesc(it, META, { value: {
-    i: 'O' + ++id, // object ID
-    w: {}          // weak collections IDs
-  } });
-};
-var fastKey = function (it, create) {
-  // return primitive with prefix
-  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
-  if (!has(it, META)) {
-    // can't set metadata to uncaught frozen object
-    if (!isExtensible(it)) return 'F';
-    // not necessary to add metadata
-    if (!create) return 'E';
-    // add missing metadata
-    setMeta(it);
-  // return object ID
-  } return it[META].i;
-};
-var getWeak = function (it, create) {
-  if (!has(it, META)) {
-    // can't set metadata to uncaught frozen object
-    if (!isExtensible(it)) return true;
-    // not necessary to add metadata
-    if (!create) return false;
-    // add missing metadata
-    setMeta(it);
-  // return hash weak collections IDs
-  } return it[META].w;
-};
-// add metadata on freeze-family methods calling
-var onFreeze = function (it) {
-  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
-  return it;
-};
-var meta = module.exports = {
-  KEY: META,
-  NEED: false,
-  fastKey: fastKey,
-  getWeak: getWeak,
-  onFreeze: onFreeze
-};
-
-
-/***/ }),
-
-/***/ "6tYh":
-/***/ (function(module, exports, __webpack_require__) {
-
-// Works with __proto__ only. Old v8 can't work with null proto objects.
-/* eslint-disable no-proto */
-var isObject = __webpack_require__("93I4");
-var anObject = __webpack_require__("5K7Z");
-var check = function (O, proto) {
-  anObject(O);
-  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
-};
-module.exports = {
-  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
-    function (test, buggy, set) {
-      try {
-        set = __webpack_require__("2GTP")(Function.call, __webpack_require__("vwuL").f(Object.prototype, '__proto__').set, 2);
-        set(test, []);
-        buggy = !(test instanceof Array);
-      } catch (e) { buggy = true; }
-      return function setPrototypeOf(O, proto) {
-        check(O, proto);
-        if (buggy) O.__proto__ = proto;
-        else set(O, proto);
-        return O;
-      };
-    }({}, false) : undefined),
-  check: check
-};
-
-
-/***/ }),
-
 /***/ "8Kt/":
 /***/ (function(module, exports, __webpack_require__) {

@@ -366,13 +276,11 @@ var amp_1 = __webpack_require__("/0+H");
 function defaultHead() {
   var inAmpMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
   var head = [react_1["default"].createElement("meta", {
-    key: "charSet",
     charSet: "utf-8"
   })];

   if (!inAmpMode) {
     head.push(react_1["default"].createElement("meta", {
-      key: "viewport",
       name: "viewport",
       content: "width=device-width,minimum-scale=1,initial-scale=1"
     }));
@@ -416,22 +324,28 @@ function unique() {
   var metaTypes = new _Set();
   var metaCategories = {};
   return function (h) {
-    if (h.key && typeof h.key !== 'number' && h.key.indexOf('.$') === 0) {
-      if (keys.has(h.key)) return false;
-      keys.add(h.key);
-      return true;
-    } // If custom meta tag has been added the key will be prepended with `.$`, we can
-    // check for this and dedupe in favor of the custom one, so the default
-    // is not rendered as well
+    var unique = true;

+    if (h.key && typeof h.key !== 'number' && h.key.indexOf('$') > 0) {
+      var key = h.key.slice(h.key.indexOf('$') + 1);
+
+      if (keys.has(key)) {
+        unique = false;
+      } else {
+        keys.add(key);
+      }
+    } // eslint-disable-next-line default-case

-    if (keys.has(".$".concat(h.key))) return false; // eslint-disable-next-line default-case

     switch (h.type) {
       case 'title':
       case 'base':
-        if (tags.has(h.type)) return false;
-        tags.add(h.type);
+        if (tags.has(h.type)) {
+          unique = false;
+        } else {
+          tags.add(h.type);
+        }
+
         break;

       case 'meta':
@@ -440,21 +354,28 @@ function unique() {
           if (!h.props.hasOwnProperty(metatype)) continue;

           if (metatype === 'charSet') {
-            if (metaTypes.has(metatype)) return false;
-            metaTypes.add(metatype);
+            if (metaTypes.has(metatype)) {
+              unique = false;
+            } else {
+              metaTypes.add(metatype);
+            }
           } else {
             var category = h.props[metatype];
             var categories = metaCategories[metatype] || new _Set();
-            if (categories.has(category)) return false;
-            categories.add(category);
-            metaCategories[metatype] = categories;
+
+            if (categories.has(category)) {
+              unique = false;
+            } else {
+              categories.add(category);
+              metaCategories[metatype] = categories;
+            }
           }
         }

         break;
     }

-    return true;
+    return unique;
   };
 }
 /**
@@ -499,6 +420,22 @@ exports["default"] = Head;

 /***/ }),

+/***/ "8iia":
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/DavidBruant/Map-Set.prototype.toJSON
+var classof = __webpack_require__("QMMT");
+var from = __webpack_require__("RRc/");
+module.exports = function (NAME) {
+  return function toJSON() {
+    if (classof(this) != NAME) throw TypeError(NAME + "#toJSON isn't generic");
+    return from(this);
+  };
+};
+
+
+/***/ }),
+
 /***/ "9BDd":
 /***/ (function(module, exports, __webpack_require__) {

@@ -508,6 +445,22 @@ module.exports = __webpack_require__("WEpk").Array.isArray;

 /***/ }),

+/***/ "ApPD":
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.9 Object.getPrototypeOf(O)
+var toObject = __webpack_require__("JB68");
+var $getPrototypeOf = __webpack_require__("U+KD");
+
+__webpack_require__("zn7N")('getPrototypeOf', function () {
+  return function getPrototypeOf(it) {
+    return $getPrototypeOf(toObject(it));
+  };
+});
+
+
+/***/ }),
+
 /***/ "B9jh":
 /***/ (function(module, exports, __webpack_require__) {

@@ -530,6 +483,13 @@ module.exports = __webpack_require__("raTm")(SET, function (get) {

 /***/ }),

+/***/ "Bhuq":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("+plK");
+
+/***/ }),
+
 /***/ "C2SN":
 /***/ (function(module, exports, __webpack_require__) {

@@ -553,18 +513,6 @@ module.exports = function (original) {

 /***/ }),

-/***/ "EXMj":
-/***/ (function(module, exports) {
-
-module.exports = function (it, Constructor, name, forbiddenField) {
-  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
-    throw TypeError(name + ': incorrect invocation!');
-  } return it;
-};
-
-
-/***/ }),
-
 /***/ "FYa8":
 /***/ (function(module, exports, __webpack_require__) {

@@ -604,16 +552,6 @@ $export($export.S, 'Array', { isArray: __webpack_require__("kAMH") });

 /***/ }),

-/***/ "Hfiw":
-/***/ (function(module, exports, __webpack_require__) {
-
-// 19.1.3.19 Object.setPrototypeOf(O, proto)
-var $export = __webpack_require__("Y7ZC");
-$export($export.S, 'Object', { setPrototypeOf: __webpack_require__("6tYh").set });
-
-
-/***/ }),
-
 /***/ "IP1Z":
 /***/ (function(module, exports, __webpack_require__) {

@@ -630,48 +568,44 @@ module.exports = function (object, index, value) {

 /***/ }),

-/***/ "JbBM":
-/***/ (function(module, exports, __webpack_require__) {
-
-__webpack_require__("Hfiw");
-module.exports = __webpack_require__("WEpk").Object.setPrototypeOf;
-
-
-/***/ }),
-
-/***/ "KI45":
+/***/ "K47E":
 /***/ (function(module, exports) {

-function _interopRequireDefault(obj) {
-  return obj && obj.__esModule ? obj : {
-    "default": obj
-  };
+function _assertThisInitialized(self) {
+  if (self === void 0) {
+    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+  }
+
+  return self;
 }

-module.exports = _interopRequireDefault;
+module.exports = _assertThisInitialized;

 /***/ }),

-/***/ "NV0k":
-/***/ (function(module, exports) {
-
-exports.f = {}.propertyIsEnumerable;
-
+/***/ "N9n2":
+/***/ (function(module, exports, __webpack_require__) {

-/***/ }),
+var _Object$create = __webpack_require__("SqZg");

-/***/ "NwJ3":
-/***/ (function(module, exports, __webpack_require__) {
+var setPrototypeOf = __webpack_require__("vjea");

-// check on default Array iterator
-var Iterators = __webpack_require__("SBuE");
-var ITERATOR = __webpack_require__("UWiX")('iterator');
-var ArrayProto = Array.prototype;
+function _inherits(subClass, superClass) {
+  if (typeof superClass !== "function" && superClass !== null) {
+    throw new TypeError("Super expression must either be null or a function");
+  }

-module.exports = function (it) {
-  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
-};
+  subClass.prototype = _Object$create(superClass && superClass.prototype, {
+    constructor: {
+      value: subClass,
+      writable: true,
+      configurable: true
+    }
+  });
+  if (superClass) setPrototypeOf(subClass, superClass);
+}

+module.exports = _inherits;

 /***/ }),

@@ -690,64 +624,20 @@ module.exports = _iterableToArray;

 /***/ }),

-/***/ "RU/L":
-/***/ (function(module, exports, __webpack_require__) {
-
-__webpack_require__("Rqdy");
-var $Object = __webpack_require__("WEpk").Object;
-module.exports = function defineProperty(it, key, desc) {
-  return $Object.defineProperty(it, key, desc);
-};
-
-
-/***/ }),
-
-/***/ "Rqdy":
-/***/ (function(module, exports, __webpack_require__) {
-
-var $export = __webpack_require__("Y7ZC");
-// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
-$export($export.S + $export.F * !__webpack_require__("jmDH"), 'Object', { defineProperty: __webpack_require__("2faE").f });
-
-
-/***/ }),
-
-/***/ "SqZg":
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__("3GJH");
-
-/***/ }),
-
-/***/ "TJWN":
+/***/ "RRc/":
 /***/ (function(module, exports, __webpack_require__) {

-"use strict";
-
-var global = __webpack_require__("5T2Y");
-var core = __webpack_require__("WEpk");
-var dP = __webpack_require__("2faE");
-var DESCRIPTORS = __webpack_require__("jmDH");
-var SPECIES = __webpack_require__("UWiX")('species');
+var forOf = __webpack_require__("oioR");

-module.exports = function (KEY) {
-  var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
-  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
-    configurable: true,
-    get: function () { return this; }
-  });
+module.exports = function (iter, ITERATOR) {
+  var result = [];
+  forOf(iter, false, result.push, result, ITERATOR);
+  return result;
 };

 /***/ }),

-/***/ "TRZx":
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__("JbBM");
-
-/***/ }),
-
 /***/ "TbGu":
 /***/ (function(module, exports, __webpack_require__) {

@@ -765,35 +655,6 @@ module.exports = _toConsumableArray;

 /***/ }),

-/***/ "TuGD":
-/***/ (function(module, exports, __webpack_require__) {
-
-var ITERATOR = __webpack_require__("UWiX")('iterator');
-var SAFE_CLOSING = false;
-
-try {
-  var riter = [7][ITERATOR]();
-  riter['return'] = function () { SAFE_CLOSING = true; };
-  // eslint-disable-next-line no-throw-literal
-  Array.from(riter, function () { throw 2; });
-} catch (e) { /* empty */ }
-
-module.exports = function (exec, skipClosing) {
-  if (!skipClosing && !SAFE_CLOSING) return false;
-  var safe = false;
-  try {
-    var arr = [7];
-    var iter = arr[ITERATOR]();
-    iter.next = function () { return { done: safe = true }; };
-    arr[ITERATOR] = function () { return iter; };
-    exec(arr);
-  } catch (e) { /* empty */ }
-  return safe;
-};
-
-
-/***/ }),
-
 /***/ "V+O7":
 /***/ (function(module, exports, __webpack_require__) {

@@ -909,41 +770,153 @@ module.exports = __webpack_require__("ldVq");

 /***/ }),

-/***/ "WaGi":
+/***/ "Wu5q":
 /***/ (function(module, exports, __webpack_require__) {

-var _Object$defineProperty = __webpack_require__("hfKm");
-
-function _defineProperties(target, props) {
-  for (var i = 0; i < props.length; i++) {
-    var descriptor = props[i];
-    descriptor.enumerable = descriptor.enumerable || false;
-    descriptor.configurable = true;
-    if ("value" in descriptor) descriptor.writable = true;
+"use strict";

-    _Object$defineProperty(target, descriptor.key, descriptor);
+var dP = __webpack_require__("2faE").f;
+var create = __webpack_require__("oVml");
+var redefineAll = __webpack_require__("XJU/");
+var ctx = __webpack_require__("2GTP");
+var anInstance = __webpack_require__("EXMj");
+var forOf = __webpack_require__("oioR");
+var $iterDefine = __webpack_require__("MPFp");
+var step = __webpack_require__("UO39");
+var setSpecies = __webpack_require__("TJWN");
+var DESCRIPTORS = __webpack_require__("jmDH");
+var fastKey = __webpack_require__("6/1s").fastKey;
+var validate = __webpack_require__("n3ko");
+var SIZE = DESCRIPTORS ? '_s' : 'size';
+
+var getEntry = function (that, key) {
+  // fast case
+  var index = fastKey(key);
+  var entry;
+  if (index !== 'F') return that._i[index];
+  // frozen object case
+  for (entry = that._f; entry; entry = entry.n) {
+    if (entry.k == key) return entry;
   }
-}
-
-function _createClass(Constructor, protoProps, staticProps) {
-  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
-  if (staticProps) _defineProperties(Constructor, staticProps);
-  return Constructor;
-}
-
-module.exports = _createClass;
-
-/***/ }),
-
-/***/ "XJU/":
-/***/ (function(module, exports, __webpack_require__) {
+};

-var hide = __webpack_require__("NegM");
-module.exports = function (target, src, safe) {
-  for (var key in src) {
-    if (safe && target[key]) target[key] = src[key];
-    else hide(target, key, src[key]);
-  } return target;
+module.exports = {
+  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
+    var C = wrapper(function (that, iterable) {
+      anInstance(that, C, NAME, '_i');
+      that._t = NAME;         // collection type
+      that._i = create(null); // index
+      that._f = undefined;    // first entry
+      that._l = undefined;    // last entry
+      that[SIZE] = 0;         // size
+      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
+    });
+    redefineAll(C.prototype, {
+      // 23.1.3.1 Map.prototype.clear()
+      // 23.2.3.2 Set.prototype.clear()
+      clear: function clear() {
+        for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {
+          entry.r = true;
+          if (entry.p) entry.p = entry.p.n = undefined;
+          delete data[entry.i];
+        }
+        that._f = that._l = undefined;
+        that[SIZE] = 0;
+      },
+      // 23.1.3.3 Map.prototype.delete(key)
+      // 23.2.3.4 Set.prototype.delete(value)
+      'delete': function (key) {
+        var that = validate(this, NAME);
+        var entry = getEntry(that, key);
+        if (entry) {
+          var next = entry.n;
+          var prev = entry.p;
+          delete that._i[entry.i];
+          entry.r = true;
+          if (prev) prev.n = next;
+          if (next) next.p = prev;
+          if (that._f == entry) that._f = next;
+          if (that._l == entry) that._l = prev;
+          that[SIZE]--;
+        } return !!entry;
+      },
+      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
+      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
+      forEach: function forEach(callbackfn /* , that = undefined */) {
+        validate(this, NAME);
+        var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+        var entry;
+        while (entry = entry ? entry.n : this._f) {
+          f(entry.v, entry.k, this);
+          // revert to the last existing entry
+          while (entry && entry.r) entry = entry.p;
+        }
+      },
+      // 23.1.3.7 Map.prototype.has(key)
+      // 23.2.3.7 Set.prototype.has(value)
+      has: function has(key) {
+        return !!getEntry(validate(this, NAME), key);
+      }
+    });
+    if (DESCRIPTORS) dP(C.prototype, 'size', {
+      get: function () {
+        return validate(this, NAME)[SIZE];
+      }
+    });
+    return C;
+  },
+  def: function (that, key, value) {
+    var entry = getEntry(that, key);
+    var prev, index;
+    // change existing entry
+    if (entry) {
+      entry.v = value;
+    // create new entry
+    } else {
+      that._l = entry = {
+        i: index = fastKey(key, true), // <- index
+        k: key,                        // <- key
+        v: value,                      // <- value
+        p: prev = that._l,             // <- previous entry
+        n: undefined,                  // <- next entry
+        r: false                       // <- removed
+      };
+      if (!that._f) that._f = entry;
+      if (prev) prev.n = entry;
+      that[SIZE]++;
+      // add to index
+      if (index !== 'F') that._i[index] = entry;
+    } return that;
+  },
+  getEntry: getEntry,
+  setStrong: function (C, NAME, IS_MAP) {
+    // add .keys, .values, .entries, [@@iterator]
+    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
+    $iterDefine(C, NAME, function (iterated, kind) {
+      this._t = validate(iterated, NAME); // target
+      this._k = kind;                     // kind
+      this._l = undefined;                // previous
+    }, function () {
+      var that = this;
+      var kind = that._k;
+      var entry = that._l;
+      // revert to the last existing entry
+      while (entry && entry.r) entry = entry.p;
+      // get next entry
+      if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {
+        // or finish the iteration
+        that._t = undefined;
+        return step(1);
+      }
+      // return step by kind
+      if (kind == 'keys') return step(0, entry.k);
+      if (kind == 'values') return step(0, entry.v);
+      return step(0, [entry.k, entry.v]);
+    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);
+
+    // add [@@species], 23.1.2.2, 23.2.2.2
+    setSpecies(NAME);
+  }
 };

@@ -1055,6 +1028,25 @@ exports["default"] = function () {

 /***/ }),

+/***/ "ZDA2":
+/***/ (function(module, exports, __webpack_require__) {
+
+var _typeof = __webpack_require__("iZP3");
+
+var assertThisInitialized = __webpack_require__("K47E");
+
+function _possibleConstructorReturn(self, call) {
+  if (call && (_typeof(call) === "object" || typeof call === "function")) {
+    return call;
+  }
+
+  return assertThisInitialized(self);
+}
+
+module.exports = _possibleConstructorReturn;
+
+/***/ }),
+
 /***/ "aPfg":
 /***/ (function(module, exports, __webpack_require__) {

@@ -1148,23 +1140,6 @@ module.exports = _arrayWithoutHoles;

 /***/ }),

-/***/ "hfKm":
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__("RU/L");
-
-/***/ }),
-
-/***/ "lCc8":
-/***/ (function(module, exports, __webpack_require__) {
-
-var $export = __webpack_require__("Y7ZC");
-// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
-$export($export.S, 'Object', { create: __webpack_require__("oVml") });
-
-
-/***/ }),
-
 /***/ "ldVq":
 /***/ (function(module, exports, __webpack_require__) {

@@ -1210,14 +1185,6 @@ exports.AmpStateContext = React.createContext({});

 /***/ }),

-/***/ "mqlF":
-/***/ (function(module, exports) {
-
-exports.f = Object.getOwnPropertySymbols;
-
-
-/***/ }),
-
 /***/ "n3ko":
 /***/ (function(module, exports, __webpack_require__) {

@@ -1230,38 +1197,6 @@ module.exports = function (it, TYPE) {

 /***/ }),

-/***/ "oioR":
-/***/ (function(module, exports, __webpack_require__) {
-
-var ctx = __webpack_require__("2GTP");
-var call = __webpack_require__("sNwI");
-var isArrayIter = __webpack_require__("NwJ3");
-var anObject = __webpack_require__("5K7Z");
-var toLength = __webpack_require__("tEej");
-var getIterFn = __webpack_require__("fNZA");
-var BREAK = {};
-var RETURN = {};
-var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
-  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
-  var f = ctx(fn, that, entries ? 2 : 1);
-  var index = 0;
-  var length, step, iterator, result;
-  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
-  // fast case for arrays with default iterator
-  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
-    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
-    if (result === BREAK || result === RETURN) return result;
-  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
-    result = call(iterator, f, step.value, entries);
-    if (result === BREAK || result === RETURN) return result;
-  }
-};
-exports.BREAK = BREAK;
-exports.RETURN = RETURN;
-
-
-/***/ }),
-
 /***/ "p0XB":
 /***/ (function(module, exports, __webpack_require__) {

@@ -1336,25 +1271,6 @@ module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {

 /***/ }),

-/***/ "sNwI":
-/***/ (function(module, exports, __webpack_require__) {
-
-// call something on iterator step with safe closing on error
-var anObject = __webpack_require__("5K7Z");
-module.exports = function (iterator, fn, value, entries) {
-  try {
-    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
-  // 7.4.6 IteratorClose(iterator, completion)
-  } catch (e) {
-    var ret = iterator['return'];
-    if (ret !== undefined) anObject(ret.call(iterator));
-    throw e;
-  }
-};
-
-
-/***/ }),
-
 /***/ "ttDY":
 /***/ (function(module, exports, __webpack_require__) {

@@ -1375,54 +1291,6 @@ module.exports = function (original, length) {

 /***/ }),

-/***/ "vjea":
-/***/ (function(module, exports, __webpack_require__) {
-
-var _Object$setPrototypeOf = __webpack_require__("TRZx");
-
-function _setPrototypeOf(o, p) {
-  module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {
-    o.__proto__ = p;
-    return o;
-  };
-
-  return _setPrototypeOf(o, p);
-}
-
-module.exports = _setPrototypeOf;
-
-/***/ }),
-
-/***/ "vwuL":
-/***/ (function(module, exports, __webpack_require__) {
-
-var pIE = __webpack_require__("NV0k");
-var createDesc = __webpack_require__("rr1i");
-var toIObject = __webpack_require__("NsO/");
-var toPrimitive = __webpack_require__("G8Mo");
-var has = __webpack_require__("B+OT");
-var IE8_DOM_DEFINE = __webpack_require__("eUtF");
-var gOPD = Object.getOwnPropertyDescriptor;
-
-exports.f = __webpack_require__("jmDH") ? gOPD : function getOwnPropertyDescriptor(O, P) {
-  O = toIObject(O);
-  P = toPrimitive(P, true);
-  if (IE8_DOM_DEFINE) try {
-    return gOPD(O, P);
-  } catch (e) { /* empty */ }
-  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
-};
-
-
-/***/ }),
-
-/***/ "wgeU":
-/***/ (function(module, exports) {
-
-
-
-/***/ }),
-
 /***/ "xvv9":
 /***/ (function(module, exports, __webpack_require__) {

@@ -1437,23 +1305,6 @@ __webpack_require__("cHUd")('Set');

 module.exports = __webpack_require__("VKFn");

-/***/ }),
-
-/***/ "zn7N":
-/***/ (function(module, exports, __webpack_require__) {
-
-// most Object methods by ES6 should accept primitives
-var $export = __webpack_require__("Y7ZC");
-var core = __webpack_require__("WEpk");
-var fails = __webpack_require__("KUxP");
-module.exports = function (KEY, exec) {
-  var fn = (core.Object || {})[KEY] || Object[KEY];
-  var exp = {};
-  exp[KEY] = exec(fn);
-  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
-};
-
-
 /***/ })

-},[["04ac",0,2,1,5]]]);
\ No newline at end of file
+},[["04ac",0,2,1,3]]]);
\ No newline at end of file
```
</details>
<details>
<summary>Diff for <strong>link.js</strong></summary>

```diff
@@ -1,5 +1,32 @@
 (window["webpackJsonp"] = window["webpackJsonp"] || []).push([[10],{

+/***/ "+plK":
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__("ApPD");
+module.exports = __webpack_require__("WEpk").Object.getPrototypeOf;
+
+
+/***/ }),
+
+/***/ "/+P4":
+/***/ (function(module, exports, __webpack_require__) {
+
+var _Object$getPrototypeOf = __webpack_require__("Bhuq");
+
+var _Object$setPrototypeOf = __webpack_require__("TRZx");
+
+function _getPrototypeOf(o) {
+  module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {
+    return o.__proto__ || _Object$getPrototypeOf(o);
+  };
+  return _getPrototypeOf(o);
+}
+
+module.exports = _getPrototypeOf;
+
+/***/ }),
+
 /***/ "/h46":
 /***/ (function(module, exports, __webpack_require__) {

@@ -9,6 +36,60 @@ __webpack_require__("cHUd")('Map');

 /***/ }),

+/***/ "8iia":
+/***/ (function(module, exports, __webpack_require__) {
+
+// https://github.com/DavidBruant/Map-Set.prototype.toJSON
+var classof = __webpack_require__("QMMT");
+var from = __webpack_require__("RRc/");
+module.exports = function (NAME) {
+  return function toJSON() {
+    if (classof(this) != NAME) throw TypeError(NAME + "#toJSON isn't generic");
+    return from(this);
+  };
+};
+
+
+/***/ }),
+
+/***/ "ApPD":
+/***/ (function(module, exports, __webpack_require__) {
+
+// 19.1.2.9 Object.getPrototypeOf(O)
+var toObject = __webpack_require__("JB68");
+var $getPrototypeOf = __webpack_require__("U+KD");
+
+__webpack_require__("zn7N")('getPrototypeOf', function () {
+  return function getPrototypeOf(it) {
+    return $getPrototypeOf(toObject(it));
+  };
+});
+
+
+/***/ }),
+
+/***/ "Bhuq":
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__("+plK");
+
+/***/ }),
+
+/***/ "K47E":
+/***/ (function(module, exports) {
+
+function _assertThisInitialized(self) {
+  if (self === void 0) {
+    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+  }
+
+  return self;
+}
+
+module.exports = _assertThisInitialized;
+
+/***/ }),
+
 /***/ "LX0d":
 /***/ (function(module, exports, __webpack_require__) {

@@ -16,6 +97,32 @@ module.exports = __webpack_require__("UDep");

 /***/ }),

+/***/ "N9n2":
+/***/ (function(module, exports, __webpack_require__) {
+
+var _Object$create = __webpack_require__("SqZg");
+
+var setPrototypeOf = __webpack_require__("vjea");
+
+function _inherits(subClass, superClass) {
+  if (typeof superClass !== "function" && superClass !== null) {
+    throw new TypeError("Super expression must either be null or a function");
+  }
+
+  subClass.prototype = _Object$create(superClass && superClass.prototype, {
+    constructor: {
+      value: subClass,
+      writable: true,
+      configurable: true
+    }
+  });
+  if (superClass) setPrototypeOf(subClass, superClass);
+}
+
+module.exports = _inherits;
+
+/***/ }),
+
 /***/ "ObF3":
 /***/ (function(module, __webpack_exports__, __webpack_require__) {

@@ -43,6 +150,20 @@ aLink.getInitialProps = function () {

 /***/ }),

+/***/ "RRc/":
+/***/ (function(module, exports, __webpack_require__) {
+
+var forOf = __webpack_require__("oioR");
+
+module.exports = function (iter, ITERATOR) {
+  var result = [];
+  forOf(iter, false, result.push, result, ITERATOR);
+  return result;
+};
+
+
+/***/ }),
+
 /***/ "UDep":
 /***/ (function(module, exports, __webpack_require__) {

@@ -71,6 +192,158 @@ module.exports = __webpack_require__("WEpk").Map;

 /***/ }),

+/***/ "Wu5q":
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+var dP = __webpack_require__("2faE").f;
+var create = __webpack_require__("oVml");
+var redefineAll = __webpack_require__("XJU/");
+var ctx = __webpack_require__("2GTP");
+var anInstance = __webpack_require__("EXMj");
+var forOf = __webpack_require__("oioR");
+var $iterDefine = __webpack_require__("MPFp");
+var step = __webpack_require__("UO39");
+var setSpecies = __webpack_require__("TJWN");
+var DESCRIPTORS = __webpack_require__("jmDH");
+var fastKey = __webpack_require__("6/1s").fastKey;
+var validate = __webpack_require__("n3ko");
+var SIZE = DESCRIPTORS ? '_s' : 'size';
+
+var getEntry = function (that, key) {
+  // fast case
+  var index = fastKey(key);
+  var entry;
+  if (index !== 'F') return that._i[index];
+  // frozen object case
+  for (entry = that._f; entry; entry = entry.n) {
+    if (entry.k == key) return entry;
+  }
+};
+
+module.exports = {
+  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
+    var C = wrapper(function (that, iterable) {
+      anInstance(that, C, NAME, '_i');
+      that._t = NAME;         // collection type
+      that._i = create(null); // index
+      that._f = undefined;    // first entry
+      that._l = undefined;    // last entry
+      that[SIZE] = 0;         // size
+      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
+    });
+    redefineAll(C.prototype, {
+      // 23.1.3.1 Map.prototype.clear()
+      // 23.2.3.2 Set.prototype.clear()
+      clear: function clear() {
+        for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {
+          entry.r = true;
+          if (entry.p) entry.p = entry.p.n = undefined;
+          delete data[entry.i];
+        }
+        that._f = that._l = undefined;
+        that[SIZE] = 0;
+      },
+      // 23.1.3.3 Map.prototype.delete(key)
+      // 23.2.3.4 Set.prototype.delete(value)
+      'delete': function (key) {
+        var that = validate(this, NAME);
+        var entry = getEntry(that, key);
+        if (entry) {
+          var next = entry.n;
+          var prev = entry.p;
+          delete that._i[entry.i];
+          entry.r = true;
+          if (prev) prev.n = next;
+          if (next) next.p = prev;
+          if (that._f == entry) that._f = next;
+          if (that._l == entry) that._l = prev;
+          that[SIZE]--;
+        } return !!entry;
+      },
+      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
+      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
+      forEach: function forEach(callbackfn /* , that = undefined */) {
+        validate(this, NAME);
+        var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
+        var entry;
+        while (entry = entry ? entry.n : this._f) {
+          f(entry.v, entry.k, this);
+          // revert to the last existing entry
+          while (entry && entry.r) entry = entry.p;
+        }
+      },
+      // 23.1.3.7 Map.prototype.has(key)
+      // 23.2.3.7 Set.prototype.has(value)
+      has: function has(key) {
+        return !!getEntry(validate(this, NAME), key);
+      }
+    });
+    if (DESCRIPTORS) dP(C.prototype, 'size', {
+      get: function () {
+        return validate(this, NAME)[SIZE];
+      }
+    });
+    return C;
+  },
+  def: function (that, key, value) {
+    var entry = getEntry(that, key);
+    var prev, index;
+    // change existing entry
+    if (entry) {
+      entry.v = value;
+    // create new entry
+    } else {
+      that._l = entry = {
+        i: index = fastKey(key, true), // <- index
+        k: key,                        // <- key
+        v: value,                      // <- value
+        p: prev = that._l,             // <- previous entry
+        n: undefined,                  // <- next entry
+        r: false                       // <- removed
+      };
+      if (!that._f) that._f = entry;
+      if (prev) prev.n = entry;
+      that[SIZE]++;
+      // add to index
+      if (index !== 'F') that._i[index] = entry;
+    } return that;
+  },
+  getEntry: getEntry,
+  setStrong: function (C, NAME, IS_MAP) {
+    // add .keys, .values, .entries, [@@iterator]
+    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
+    $iterDefine(C, NAME, function (iterated, kind) {
+      this._t = validate(iterated, NAME); // target
+      this._k = kind;                     // kind
+      this._l = undefined;                // previous
+    }, function () {
+      var that = this;
+      var kind = that._k;
+      var entry = that._l;
+      // revert to the last existing entry
+      while (entry && entry.r) entry = entry.p;
+      // get next entry
+      if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {
+        // or finish the iteration
+        that._t = undefined;
+        return step(1);
+      }
+      // return step by kind
+      if (kind == 'keys') return step(0, entry.k);
+      if (kind == 'values') return step(0, entry.v);
+      return step(0, [entry.k, entry.v]);
+    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);
+
+    // add [@@species], 23.1.2.2, 23.2.2.2
+    setSpecies(NAME);
+  }
+};
+
+
+/***/ }),
+
 /***/ "XLbu":
 /***/ (function(module, exports, __webpack_require__) {

@@ -90,6 +363,25 @@ module.exports = __webpack_require__("cTJO")

 /***/ }),

+/***/ "ZDA2":
+/***/ (function(module, exports, __webpack_require__) {
+
+var _typeof = __webpack_require__("iZP3");
+
+var assertThisInitialized = __webpack_require__("K47E");
+
+function _possibleConstructorReturn(self, call) {
+  if (call && (_typeof(call) === "object" || typeof call === "function")) {
+    return call;
+  }
+
+  return assertThisInitialized(self);
+}
+
+module.exports = _possibleConstructorReturn;
+
+/***/ }),
+
 /***/ "cTJO":
 /***/ (function(module, exports, __webpack_require__) {

@@ -115,7 +407,7 @@ exports["default"] = void 0;

 var _map = _interopRequireDefault(__webpack_require__("LX0d"));

-var _url = __webpack_require__("CxY0");
+var _url = __webpack_require__("QmWs");

 var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
```
</details>
<details>
<summary>Diff for <strong>routerDirect.js</strong></summary>

```diff
@@ -40,4 +40,4 @@ routerDirect.getInitialProps = function () {

 /***/ })

-},[["LtRI",0,2,1,3,4]]]);
\ No newline at end of file
+},[["LtRI",0,2,1,3,4,5]]]);
\ No newline at end of file
```
</details>
<details>
<summary>Diff for <strong>withRouter.js</strong></summary>

```diff
@@ -38,4 +38,4 @@ useWithRouter.getInitialProps = function () {

 /***/ })

-},[["eThv",0,2,1,3,4]]]);
\ No newline at end of file
+},[["eThv",0,2,1,3,4,5]]]);
\ No newline at end of file
```
</details>
<details>
<summary>Diff for <strong>_error.module.js</strong></summary>

```diff
@@ -264,13 +264,11 @@ var amp_1 = __webpack_require__("/0+H");
 function defaultHead() {
   var inAmpMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
   var head = [react_1.default.createElement("meta", {
-    key: "charSet",
     charSet: "utf-8"
   })];

   if (!inAmpMode) {
     head.push(react_1.default.createElement("meta", {
-      key: "viewport",
       name: "viewport",
       content: "width=device-width,minimum-scale=1,initial-scale=1"
     }));
@@ -314,22 +312,28 @@ function unique() {
   var metaTypes = new _Set();
   var metaCategories = {};
   return h => {
-    if (h.key && typeof h.key !== 'number' && h.key.indexOf('.$') === 0) {
-      if (keys.has(h.key)) return false;
-      keys.add(h.key);
-      return true;
-    } // If custom meta tag has been added the key will be prepended with `.$`, we can
-    // check for this and dedupe in favor of the custom one, so the default
-    // is not rendered as well
+    var unique = true;

+    if (h.key && typeof h.key !== 'number' && h.key.indexOf('$') > 0) {
+      var key = h.key.slice(h.key.indexOf('$') + 1);
+
+      if (keys.has(key)) {
+        unique = false;
+      } else {
+        keys.add(key);
+      }
+    } // eslint-disable-next-line default-case

-    if (keys.has(".$".concat(h.key))) return false; // eslint-disable-next-line default-case

     switch (h.type) {
       case 'title':
       case 'base':
-        if (tags.has(h.type)) return false;
-        tags.add(h.type);
+        if (tags.has(h.type)) {
+          unique = false;
+        } else {
+          tags.add(h.type);
+        }
+
         break;

       case 'meta':
@@ -338,21 +342,28 @@ function unique() {
           if (!h.props.hasOwnProperty(metatype)) continue;

           if (metatype === 'charSet') {
-            if (metaTypes.has(metatype)) return false;
-            metaTypes.add(metatype);
+            if (metaTypes.has(metatype)) {
+              unique = false;
+            } else {
+              metaTypes.add(metatype);
+            }
           } else {
             var category = h.props[metatype];
             var categories = metaCategories[metatype] || new _Set();
-            if (categories.has(category)) return false;
-            categories.add(category);
-            metaCategories[metatype] = categories;
+
+            if (categories.has(category)) {
+              unique = false;
+            } else {
+              categories.add(category);
+              metaCategories[metatype] = categories;
+            }
           }
         }

         break;
     }

-    return true;
+    return unique;
   };
 }
 /**
```
</details>
<details>
<summary>Diff for <strong>link.module.js</strong></summary>

```diff
@@ -285,7 +285,7 @@ exports.default = void 0;

 var _map = _interopRequireDefault(__webpack_require__("LX0d"));

-var _url = __webpack_require__("CxY0");
+var _url = __webpack_require__("QmWs");

 var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
```
</details>
<details>
<summary>Diff for <strong>_buildManifest.js</strong></summary>

```diff
@@ -1 +1 @@
-self.__BUILD_MANIFEST = (function(a,b){return {"/_error":[b],"/link":[a,b],"/routerDirect":[a],"/withRouter":[a]}}("static\u002Fchunks\u002F16b1a72255206b7853bf6603dc58ec83de39b142.6fb4c6268c1df57f4f06.js","static\u002Fchunks\u002F314e4c089430eb8cdc865a8a097be397fffdf2f3.dabd6bf1b89781ecd750.js"));self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB()
\ No newline at end of file
+self.__BUILD_MANIFEST = (function(a){return {"/link":[a],"/routerDirect":[a],"/withRouter":[a]}}("static\u002Fchunks\u002F16b1a72255206b7853bf6603dc58ec83de39b142.f6776b2d34d142c30035.js"));self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB()
\ No newline at end of file
```
</details>
<details>
<summary>Diff for <strong>_buildManifest.module.js</strong></summary>

```diff
@@ -1 +1 @@
-self.__BUILD_MANIFEST = (function(a){return {"/link":[a],"/routerDirect":[a],"/withRouter":[a]}}("static\u002Fchunks\u002F16b1a72255206b7853bf6603dc58ec83de39b142.a5772f7a97c2ba2b35f6.module.js"));self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB()
\ No newline at end of file
+self.__BUILD_MANIFEST = (function(a){return {"/link":[a],"/routerDirect":[a],"/withRouter":[a]}}("static\u002Fchunks\u002F16b1a72255206b7853bf6603dc58ec83de39b142.0a08ab837d26fd554fd7.module.js"));self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB()
\ No newline at end of file
```
</details>
<details>
<summary>Diff for <strong>index.html</strong></summary>

```diff
@@ -12,14 +12,14 @@
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/runtime/webpack-7928590be3ef2e55b835.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/runtime/main-50d288115f08329c2ffd.module.js"
+        <link rel="preload" href="/_next/static/runtime/main-ccf973e725749d41616b.module.js"
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.dda3a797bb804537ed85.module.js"
-        as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6ad24cd530d796126b06.module.js"
         as="script" crossorigin="anonymous" />
+        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.ffb2e73e2bc5788ac7ee.module.js"
+        as="script" crossorigin="anonymous" />

@@ -31,7 +31,7 @@

-
+

-
-

@@ -54,12 +54,14 @@
         async="" crossorigin="anonymous" type="module"></script>

-
-

+
+

-
+

-
-
-
-
-
-
-
-

```
</details>
<details>
<summary>Diff for <strong>withRouter.html</strong></summary>

```diff
@@ -14,13 +14,13 @@
         as="script" crossorigin="anonymous" />
         <link rel="preload" href="/_next/static/chunks/framework.9c9aa574c484a7d0240e.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.dda3a797bb804537ed85.module.js"
+        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6ad24cd530d796126b06.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/16b1a72255206b7853bf6603dc58ec83de39b142.a5772f7a97c2ba2b35f6.module.js"
+        <link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.ffb2e73e2bc5788ac7ee.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/chunks/4952ddcd88e7185e66c9cf40e2d848b7e27f1574.6ad24cd530d796126b06.module.js"
+        <link rel="preload" href="/_next/static/chunks/16b1a72255206b7853bf6603dc58ec83de39b142.0a08ab837d26fd554fd7.module.js"
         as="script" crossorigin="anonymous" />
-        <link rel="preload" href="/_next/static/runtime/main-50d288115f08329c2ffd.module.js"
+        <link rel="preload" href="/_next/static/runtime/main-ccf973e725749d41616b.module.js"
         as="script" crossorigin="anonymous" />

@@ -34,7 +34,7 @@

-
+

-
-
-
-
-
+
-
-

```

Serverless Mode (Increase detected ⚠)

General Overall decrease ✓

|  | zeit/next.js canary | zeit/next.js refs/tags/v9.1.5-canary.14 | Change |
| - | - | - | - |
| buildDuration | 14.1s | 13.4s | -683ms |
| nodeModulesSize | 49.7 MB | 46.8 MB | -2.9 MB |

Client Bundles (main, webpack, commons) Overall increase ⚠

|  | zeit/next.js canary | zeit/next.js refs/tags/v9.1.5-canary.14 | Change |
| - | - | - | - |
| main-HASH.js | 14.8 kB | 18.3 kB | ⚠ +3.43 kB |
| main-HASH.js gzip | 5.11 kB | 6.44 kB | ⚠ +1.33 kB |
| webpack-HASH.js | 1.53 kB | 1.53 kB | ✓ |
| webpack-HASH.js gzip | 746 B | 746 B | ✓ |
| 16b1a7225520..0f1a45b52.js | 19.9 kB | N/A | N/A |
| 16b1a7225520..5b52.js gzip | 7.34 kB | N/A | N/A |
| 314e4c089430..de6eb480f.js | 7.9 kB | N/A | N/A |
| 314e4c089430..480f.js gzip | 3.31 kB | N/A | N/A |
| commons.HASH.js | 10.4 kB | 10.4 kB | ⚠ +14 B |
| commons.HASH.js gzip | 3.91 kB | 3.91 kB | ⚠ +5 B |
| de003c3a9d30..39988e4af.js | 33.1 kB | N/A | N/A |
| de003c3a9d30..e4af.js gzip | 12.3 kB | N/A | N/A |
| framework.HASH.js | 125 kB | 126 kB | ⚠ +122 B |
| framework.HASH.js gzip | 39.4 kB | 39.5 kB | ⚠ +66 B |
| 16b1a7225520..10012f496.js | N/A | 20 kB | N/A |
| 16b1a7225520..f496.js gzip | N/A | 7.42 kB | N/A |
| 4952ddcd88e7..49d7903c2.js | N/A | 9.61 kB | N/A |
| 4952ddcd88e7..03c2.js gzip | N/A | 3.77 kB | N/A |
| de003c3a9d30..a5a0ede39.js | N/A | 21.2 kB | N/A |
| de003c3a9d30..de39.js gzip | N/A | 8.19 kB | N/A |
| Overall change | 213 kB | 207 kB | ⚠ +3.56 kB |

Client Bundles (main, webpack, commons) Modern Overall increase ⚠

|  | zeit/next.js canary | zeit/next.js refs/tags/v9.1.5-canary.14 | Change |
| - | - | - | - |
| main-HASH.module.js | 14.1 kB | 14.2 kB | ⚠ +167 B |
| main-HASH.module.js gzip | 5.29 kB | 5.36 kB | ⚠ +75 B |
| webpack-HASH.module.js | 1.53 kB | 1.53 kB | ✓ |
| webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
| 16b1a7225520..99.module.js | 16.1 kB | N/A | N/A |
| 16b1a7225520..dule.js gzip | 6.22 kB | N/A | N/A |
| 4952ddcd88e7..cc.module.js | 11.9 kB | 11.9 kB | -64 B |
| 4952ddcd88e7..dule.js gzip | 4.43 kB | 4.42 kB | -12 B |
| de003c3a9d30..36.module.js | 22.2 kB | N/A | N/A |
| de003c3a9d30..dule.js gzip | 8.71 kB | N/A | N/A |
| framework.HASH.module.js | 125 kB | 126 kB | ⚠ +18 B |
| framework.HA..dule.js gzip | 39.4 kB | 39.4 kB | ⚠ +56 B |
| 16b1a7225520..e5.module.js | N/A | 21.2 kB | N/A |
| 16b1a7225520..dule.js gzip | N/A | 8.18 kB | N/A |
| de003c3a9d30..80.module.js | N/A | 15 kB | N/A |
| de003c3a9d30..dule.js gzip | N/A | 6.15 kB | N/A |
| Overall change | 191 kB | 189 kB | ⚠ +121 B |

Legacy Client Bundles (polyfills) Overall increase ⚠

|  | zeit/next.js canary | zeit/next.js refs/tags/v9.1.5-canary.14 | Change |
| - | - | - | - |
| polyfills-HASH.js | 9.11 kB | 15.3 kB | ⚠ +6.21 kB |
| polyfills-HASH.js gzip | 3.11 kB | 4.76 kB | ⚠ +1.65 kB |
| Overall change | 9.11 kB | 15.3 kB | ⚠ +6.21 kB |

Client Pages Overall decrease ✓

|  | zeit/next.js canary | zeit/next.js refs/tags/v9.1.5-canary.14 | Change |
| - | - | - | - |
| _app.js | 7.71 kB | 2.93 kB | -4.78 kB |
| _app.js gzip | 3.22 kB | 1.33 kB | -1.9 kB |
| _error.js | 14.9 kB | 13.2 kB | -1.72 kB |
| _error.js gzip | 5.57 kB | 5.11 kB | -462 B |
| hooks.js | 1.92 kB | 1.92 kB | ⚠ +4 B |
| hooks.js gzip | 941 B | 943 B | ⚠ +2 B |
| index.js | 318 B | 318 B | ✓ |
| index.js gzip | 222 B | 222 B | ✓ |
| link.js | 4.05 kB | 6.78 kB | ⚠ +2.72 kB |
| link.js gzip | 1.81 kB | 2.89 kB | ⚠ +1.08 kB |
| routerDirect.js | 411 B | 413 B | ⚠ +2 B |
| routerDirect.js gzip | 283 B | 285 B | ⚠ +2 B |
| withRouter.js | 421 B | 423 B | ⚠ +2 B |
| withRouter.js gzip | 282 B | 284 B | ⚠ +2 B |
| Overall change | 29.7 kB | 26 kB | -3.77 kB |

Client Pages Modern Overall decrease ✓

|  | zeit/next.js canary | zeit/next.js refs/tags/v9.1.5-canary.14 | Change |
| - | - | - | - |
| _app.module.js | 1.54 kB | 1.53 kB | -9 B |
| _app.module.js gzip | 759 B | 745 B | -14 B |
| _error.module.js | 10.5 kB | 10.3 kB | -179 B |
| _error.module.js gzip | 4.26 kB | 4.24 kB | -21 B |
| hooks.module.js | 677 B | 651 B | -26 B |
| hooks.module.js gzip | 384 B | 371 B | -13 B |
| index.module.js | 292 B | 276 B | -16 B |
| index.module.js gzip | 223 B | 212 B | -11 B |
| link.module.js | 5.49 kB | 5.45 kB | -44 B |
| link.module.js gzip | 2.47 kB | 2.46 kB | -6 B |
| routerDirect.module.js | 399 B | 386 B | -13 B |
| routerDirect..dule.js gzip | 285 B | 275 B | -10 B |
| withRouter.module.js | 409 B | 396 B | -13 B |
| withRouter.m..dule.js gzip | 282 B | 274 B | -8 B |
| Overall change | 19.3 kB | 19 kB | -300 B |

Client Build Manifests Overall decrease ✓

|  | zeit/next.js canary | zeit/next.js refs/tags/v9.1.5-canary.14 | Change |
| - | - | - | - |
| _buildManifest.js | 353 B | 244 B | -109 B |
| _buildManifest.js gzip | 259 B | 200 B | -59 B |
| _buildManifest.module.js | 251 B | 251 B | ✓ |
| _buildManife..dule.js gzip | 205 B | 209 B | ⚠ +4 B |
| Overall change | 604 B | 495 B | -109 B |

Serverless bundles Overall increase ⚠

|  | zeit/next.js canary | zeit/next.js refs/tags/v9.1.5-canary.14 | Change |
| - | - | - | - |
| _error.js | 241 kB | 256 kB | ⚠ +14.8 kB |
| _error.js gzip | 64.5 kB | 67.9 kB | ⚠ +3.41 kB |
| hooks.html | 4.04 kB | 4.19 kB | ⚠ +154 B |
| hooks.html gzip | 1.05 kB | 1.07 kB | ⚠ +20 B |
| index.js | 242 kB | 256 kB | ⚠ +14.8 kB |
| index.js gzip | 64.6 kB | 68 kB | ⚠ +3.45 kB |
| link.js | 274 kB | 289 kB | ⚠ +15 kB |
| link.js gzip | 73.6 kB | 77.2 kB | ⚠ +3.58 kB |
| routerDirect.js | 267 kB | 282 kB | ⚠ +15 kB |
| routerDirect.js gzip | 71.6 kB | 75.2 kB | ⚠ +3.58 kB |
| withRouter.js | 267 kB | 282 kB | ⚠ +15 kB |
| withRouter.js gzip | 71.7 kB | 75.3 kB | ⚠ +3.59 kB |
| Overall change | 1.29 MB | 1.37 MB | ⚠ +74.6 kB |