Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix app-document-import-order test for webpack 5 #15224

Merged

Conversation

timneutkens
Copy link
Member

Fixes the failing app-document-import-order test mentioned here: #15185 (comment)

@ijjk

This comment has been minimized.

@ijjk
Copy link
Member

ijjk commented Jul 16, 2020

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
buildDuration 12s 11.1s -883ms
nodeModulesSize 66.5 MB 66.5 MB ⚠️ +391 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
/ failed reqs 0 0
/ total time (seconds) 2.157 2.12 -0.04
/ avg req/sec 1159.23 1179.51 +20.28
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.408 1.486 ⚠️ +0.08
/error-in-render avg req/sec 1775.75 1682.64 ⚠️ -93.11
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
main-HASH.js gzip 6.72 kB 6.72 kB
webpack-HASH.js gzip 751 B 751 B
19b7e98f51cc..6b36.js gzip 9.74 kB 9.74 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
19b7e98f51cc..dule.js gzip N/A 6.14 kB N/A
Overall change 56.4 kB 62.5 kB ⚠️ +6.14 kB
Client Bundles (main, webpack, commons) Modern Overall decrease ✓
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
main-HASH.module.js gzip 5.8 kB 5.8 kB
webpack-HASH..dule.js gzip 751 B 751 B
19b7e98f51cc..dule.js gzip 6.14 kB N/A N/A
framework.HA..dule.js gzip 39.1 kB N/A N/A
Overall change 51.8 kB 6.55 kB -45.3 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
polyfills-HASH.js gzip 26.4 kB 26.4 kB
Overall change 26.4 kB 26.4 kB
Client Build Manifests
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
_buildManifest.js gzip 267 B 267 B
_buildManife..dule.js gzip 273 B 273 B
Overall change 540 B 540 B
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
index.html gzip 954 B 936 B -18 B
link.html gzip 960 B 943 B -17 B
withRouter.html gzip 945 B 927 B -18 B
Overall change 2.86 kB 2.81 kB -53 B

Diffs

Diff for framework.HASH.module.js
deleted
Diff for index.html
@@ -16,18 +16,6 @@
       as="script"
       crossorigin="anonymous"
     />
-    <link
-      rel="preload"
-      href="/_next/static/chunks/framework.c2766659ac6e6a63ca79.module.js"
-      as="script"
-      crossorigin="anonymous"
-    />
-    <link
-      rel="preload"
-      href="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.811b5004511e489d7629.module.js"
-      as="script"
-      crossorigin="anonymous"
-    />
     <link
       rel="preload"
       href="/_next/static/pages/_app-3258afa083f2677172c4.module.js"
@@ -110,12 +98,6 @@
       crossorigin="anonymous"
       nomodule=""
     ></script>
-    <script
-      src="/_next/static/chunks/framework.c2766659ac6e6a63ca79.module.js"
-      async=""
-      crossorigin="anonymous"
-      type="module"
-    ></script>
     <script
       src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.8ad209e2165faf626451.js"
       async=""
@@ -123,10 +105,10 @@
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.811b5004511e489d7629.module.js"
+      src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.811b5004511e489d7629.js"
       async=""
       crossorigin="anonymous"
-      type="module"
+      nomodule=""
     ></script>
     <script
       src="/_next/static/pages/_app-a1a8c0c7c52d299d3aef.js"
Diff for link.html
@@ -16,18 +16,6 @@
       as="script"
       crossorigin="anonymous"
     />
-    <link
-      rel="preload"
-      href="/_next/static/chunks/framework.c2766659ac6e6a63ca79.module.js"
-      as="script"
-      crossorigin="anonymous"
-    />
-    <link
-      rel="preload"
-      href="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.811b5004511e489d7629.module.js"
-      as="script"
-      crossorigin="anonymous"
-    />
     <link
       rel="preload"
       href="/_next/static/pages/_app-3258afa083f2677172c4.module.js"
@@ -115,12 +103,6 @@
       crossorigin="anonymous"
       nomodule=""
     ></script>
-    <script
-      src="/_next/static/chunks/framework.c2766659ac6e6a63ca79.module.js"
-      async=""
-      crossorigin="anonymous"
-      type="module"
-    ></script>
     <script
       src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.8ad209e2165faf626451.js"
       async=""
@@ -128,10 +110,10 @@
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.811b5004511e489d7629.module.js"
+      src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.811b5004511e489d7629.js"
       async=""
       crossorigin="anonymous"
-      type="module"
+      nomodule=""
     ></script>
     <script
       src="/_next/static/pages/_app-a1a8c0c7c52d299d3aef.js"
Diff for withRouter.html
@@ -16,18 +16,6 @@
       as="script"
       crossorigin="anonymous"
     />
-    <link
-      rel="preload"
-      href="/_next/static/chunks/framework.c2766659ac6e6a63ca79.module.js"
-      as="script"
-      crossorigin="anonymous"
-    />
-    <link
-      rel="preload"
-      href="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.811b5004511e489d7629.module.js"
-      as="script"
-      crossorigin="anonymous"
-    />
     <link
       rel="preload"
       href="/_next/static/pages/_app-3258afa083f2677172c4.module.js"
@@ -110,12 +98,6 @@
       crossorigin="anonymous"
       nomodule=""
     ></script>
-    <script
-      src="/_next/static/chunks/framework.c2766659ac6e6a63ca79.module.js"
-      async=""
-      crossorigin="anonymous"
-      type="module"
-    ></script>
     <script
       src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.8ad209e2165faf626451.js"
       async=""
@@ -123,10 +105,10 @@
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.811b5004511e489d7629.module.js"
+      src="/_next/static/chunks/19b7e98f51cc0d86c45d01159bbbfb942bfe49b8.811b5004511e489d7629.js"
       async=""
       crossorigin="anonymous"
-      type="module"
+      nomodule=""
     ></script>
     <script
       src="/_next/static/pages/_app-a1a8c0c7c52d299d3aef.js"

Serverless Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
buildDuration 14.1s 12.6s -1.5s
nodeModulesSize 66.5 MB 66.5 MB ⚠️ +391 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
main-HASH.js gzip 6.72 kB 6.72 kB
webpack-HASH.js gzip 751 B 751 B
19b7e98f51cc..6b36.js gzip 9.74 kB 9.74 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
19b7e98f51cc..1674.js gzip N/A 6.14 kB N/A
Overall change 56.4 kB 62.5 kB ⚠️ +6.14 kB
Client Bundles (main, webpack, commons) Modern Overall decrease ✓
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
main-HASH.module.js gzip 5.8 kB 5.8 kB
webpack-HASH..dule.js gzip 751 B 751 B
19b7e98f51cc..dule.js gzip 6.14 kB N/A N/A
framework.HA..dule.js gzip 39.1 kB N/A N/A
Overall change 51.8 kB 6.55 kB -45.3 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
polyfills-HASH.js gzip 26.4 kB 26.4 kB
Overall change 26.4 kB 26.4 kB
Client Build Manifests
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
_buildManifest.js gzip 267 B 267 B
_buildManife..dule.js gzip 273 B 273 B
Overall change 540 B 540 B
Serverless bundles Overall decrease ✓
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
_error.js 882 kB 881 kB -382 B
404.html 4.17 kB 3.74 kB -424 B
hooks.html 3.79 kB 3.36 kB -424 B
index.js 882 kB 882 kB -382 B
link.js 923 kB 923 kB -382 B
routerDirect.js 917 kB 917 kB -382 B
withRouter.js 917 kB 917 kB -382 B
Overall change 4.53 MB 4.53 MB -2.76 kB
Commit: a34a0c3

@ijjk

This comment has been minimized.

@ijjk
Copy link
Member

ijjk commented Jul 16, 2020

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall decrease ✓
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
buildDuration 14.9s 15.2s ⚠️ +294ms
nodeModulesSize 66.5 MB 66.5 MB -128 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
/ failed reqs 0 0
/ total time (seconds) 2.448 2.424 -0.02
/ avg req/sec 1021.27 1031.29 +10.02
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.586 1.618 ⚠️ +0.03
/error-in-render avg req/sec 1576.22 1545.39 ⚠️ -30.83
Client Bundles (main, webpack, commons) Overall decrease ✓
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
main-HASH.js gzip 6.72 kB N/A N/A
webpack-HASH.js gzip 751 B N/A N/A
19b7e98f51cc..6b36.js gzip 9.74 kB 9.74 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
Overall change 56.4 kB 48.9 kB -7.47 kB
Client Bundles (main, webpack, commons) Modern Overall decrease ✓
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
main-HASH.module.js gzip 5.8 kB N/A N/A
webpack-HASH..dule.js gzip 751 B N/A N/A
19b7e98f51cc..dule.js gzip 6.14 kB 6.14 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
Overall change 51.8 kB 45.3 kB -6.55 kB
Legacy Client Bundles (polyfills) Overall decrease ✓
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
polyfills-HASH.js gzip 30.8 kB N/A N/A
Overall change 30.8 kB 0 B -30.8 kB
Client Pages Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
_app-bc44eb9..5025.js gzip N/A 1.28 kB N/A
_error-15113..9c3c.js gzip N/A 3.41 kB N/A
hooks-197403..bd30.js gzip N/A 888 B N/A
index-e3fb20..1af6.js gzip N/A 227 B N/A
link-12e96c6..e348.js gzip N/A 1.29 kB N/A
routerDirect..ca3b.js gzip N/A 284 B N/A
withRouter-3..3f3c.js gzip N/A 283 B N/A
Overall change 0 B 7.66 kB ⚠️ +7.66 kB
Client Pages Modern Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
_app-3e7d9a5..dule.js gzip N/A 626 B N/A
_error-0de94..dule.js gzip N/A 2.24 kB N/A
hooks-14826c..dule.js gzip N/A 387 B N/A
index-621f32..dule.js gzip N/A 226 B N/A
link-cd80b28..dule.js gzip N/A 1.25 kB N/A
routerDirect..dule.js gzip N/A 285 B N/A
withRouter-f..dule.js gzip N/A 282 B N/A
Overall change 0 B 5.29 kB ⚠️ +5.29 kB
Client Build Manifests Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
_buildManifest.js gzip 267 B 274 B ⚠️ +7 B
_buildManife..dule.js gzip 273 B 280 B ⚠️ +7 B
Overall change 540 B 554 B ⚠️ +14 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
index.html gzip 954 B 957 B ⚠️ +3 B
link.html gzip 961 B 960 B -1 B
withRouter.html gzip 946 B 949 B ⚠️ +3 B
Overall change 2.86 kB 2.87 kB ⚠️ +5 B

Diffs

Diff for _buildManifest.js
@@ -1,11 +1,17 @@
 self.__BUILD_MANIFEST = {
-  "/": ["static\u002Fpages\u002Findex-f35cd1774d910f5523ed.js"],
-  "/_error": ["static\u002Fpages\u002F_error-f39e6723c6acde17325a.js"],
-  "/hooks": ["static\u002Fpages\u002Fhooks-9e216cd51bf04b309e08.js"],
-  "/link": ["static\u002Fpages\u002Flink-384139ace1609fd05ce0.js"],
+  "/": ["static\u002Fchunks\u002Fpages\u002Findex-982730d5084ebfa00181.js"],
+  "/_error": [
+    "static\u002Fchunks\u002Fpages\u002F_error-815f5b10e66acf27d08c.js"
+  ],
+  "/hooks": [
+    "static\u002Fchunks\u002Fpages\u002Fhooks-579c1545af13f321dca1.js"
+  ],
+  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-2b9690114ce4d225eab5.js"],
   "/routerDirect": [
-    "static\u002Fpages\u002FrouterDirect-b95d3f54c75949a43da6.js"
+    "static\u002Fchunks\u002Fpages\u002FrouterDirect-e2cac9aefcf5f1b5f87b.js"
   ],
-  "/withRouter": ["static\u002Fpages\u002FwithRouter-3e85450022aeb0cab2be.js"]
+  "/withRouter": [
+    "static\u002Fchunks\u002Fpages\u002FwithRouter-f34617c0d7a1a37a8259.js"
+  ]
 };
 self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB();
Diff for _buildManifest.module.js
@@ -1,13 +1,21 @@
 self.__BUILD_MANIFEST = {
-  "/": ["static\u002Fpages\u002Findex-da343bca3b67f1bcf42d.module.js"],
-  "/_error": ["static\u002Fpages\u002F_error-b3c4c3f8dbb1417657e6.module.js"],
-  "/hooks": ["static\u002Fpages\u002Fhooks-dc8f274035a2839a1e61.module.js"],
-  "/link": ["static\u002Fpages\u002Flink-481c9ef0fea508bf4d17.module.js"],
+  "/": [
+    "static\u002Fchunks\u002Fpages\u002Findex-c3f94e3eaa153f2a9295.module.js"
+  ],
+  "/_error": [
+    "static\u002Fchunks\u002Fpages\u002F_error-476b6ee3f1414ca8154d.module.js"
+  ],
+  "/hooks": [
+    "static\u002Fchunks\u002Fpages\u002Fhooks-4312a81b682ff4ded34e.module.js"
+  ],
+  "/link": [
+    "static\u002Fchunks\u002Fpages\u002Flink-490154f5c026bc31233e.module.js"
+  ],
   "/routerDirect": [
-    "static\u002Fpages\u002FrouterDirect-c62f258dff7fece0a732.module.js"
+    "static\u002Fchunks\u002Fpages\u002FrouterDirect-d54a616bbd51bed7404a.module.js"
   ],
   "/withRouter": [
-    "static\u002Fpages\u002FwithRouter-6fd38b55e6cdc818c01b.module.js"
+    "static\u002Fchunks\u002Fpages\u002FwithRouter-141edc4d2d2c027e4ad6.module.js"
   ]
 };
 self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB();
Diff for _app-0d27a90..12.module.js
@@ -0,0 +1,150 @@
+(window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
+  [3],
+  {
+    /***/ 0: /***/ function(module, exports, __webpack_require__) {
+      __webpack_require__("e9+W");
+      module.exports = __webpack_require__("nOHt");
+
+      /***/
+    },
+
+    /***/ B5Ud: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _interopRequireDefault = __webpack_require__("TqRt");
+
+      exports.__esModule = true;
+      exports.Container = Container;
+      exports.createUrl = createUrl;
+      exports.default = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _utils = __webpack_require__("g/15");
+
+      exports.AppInitialProps = _utils.AppInitialProps;
+      exports.NextWebVitalsMetric = _utils.NextWebVitalsMetric;
+      /**
+       * `App` component is used for initialize of pages. It allows for overwriting and full control of the `page` initialization.
+       * This allows for keeping state between navigation, custom error handling, injecting additional data.
+       */
+
+      async function appGetInitialProps(_ref) {
+        var { Component, ctx } = _ref;
+        var pageProps = await (0, _utils.loadGetInitialProps)(Component, ctx);
+        return {
+          pageProps
+        };
+      }
+
+      class App extends _react.default.Component {
+        // Kept here for backwards compatibility.
+        // When someone ended App they could call `super.componentDidCatch`.
+        // @deprecated This method is no longer needed. Errors are caught at the top level
+        componentDidCatch(error, _errorInfo) {
+          throw error;
+        }
+
+        render() {
+          var { router, Component, pageProps, __N_SSG, __N_SSP } = this.props;
+          return /*#__PURE__*/ _react.default.createElement(
+            Component,
+            Object.assign(
+              {},
+              pageProps, // we don't add the legacy URL prop if it's using non-legacy
+              // methods like getStaticProps and getServerSideProps
+              !(__N_SSG || __N_SSP)
+                ? {
+                    url: createUrl(router)
+                  }
+                : {}
+            )
+          );
+        }
+      }
+
+      exports.default = App;
+      App.origGetInitialProps = appGetInitialProps;
+      App.getInitialProps = appGetInitialProps;
+      var warnContainer;
+      var warnUrl;
+
+      if (false) {
+      } // @deprecated noop for now until removal
+
+      function Container(p) {
+        if (false) {
+        }
+        return p.children;
+      }
+
+      function createUrl(router) {
+        // This is to make sure we don't references the router object at call time
+        var { pathname, asPath, query } = router;
+        return {
+          get query() {
+            if (false) {
+            }
+            return query;
+          },
+
+          get pathname() {
+            if (false) {
+            }
+            return pathname;
+          },
+
+          get asPath() {
+            if (false) {
+            }
+            return asPath;
+          },
+
+          back: () => {
+            if (false) {
+            }
+            router.back();
+          },
+          push: (url, as) => {
+            if (false) {
+            }
+            return router.push(url, as);
+          },
+          pushTo: (href, as) => {
+            if (false) {
+            }
+            var pushRoute = as ? href : "";
+            var pushUrl = as || href;
+            return router.push(pushRoute, pushUrl);
+          },
+          replace: (url, as) => {
+            if (false) {
+            }
+            return router.replace(url, as);
+          },
+          replaceTo: (href, as) => {
+            if (false) {
+            }
+            var replaceRoute = as ? href : "";
+            var replaceUrl = as || href;
+            return router.replace(replaceRoute, replaceUrl);
+          }
+        };
+      }
+
+      /***/
+    },
+
+    /***/ "e9+W": /***/ function(module, exports, __webpack_require__) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/_app",
+        function() {
+          return __webpack_require__("B5Ud");
+        }
+      ]);
+
+      /***/
+    }
+  },
+  [[0, 0, 1, 2]]
+]);
Diff for _app-c73daaa..9fff7c9ac.js
@@ -0,0 +1,321 @@
+_N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
+  [3],
+  {
+    /***/ 0: /***/ function(module, exports, __webpack_require__) {
+      __webpack_require__("e9+W");
+      module.exports = __webpack_require__("nOHt");
+
+      /***/
+    },
+
+    /***/ "7W2i": /***/ function(module, exports, __webpack_require__) {
+      var setPrototypeOf = __webpack_require__("SksO");
+
+      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;
+
+      /***/
+    },
+
+    /***/ B5Ud: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _regeneratorRuntime = __webpack_require__("o0o1");
+
+      var _classCallCheck = __webpack_require__("lwsE");
+
+      var _createClass = __webpack_require__("W8MJ");
+
+      var _inherits = __webpack_require__("7W2i");
+
+      var _possibleConstructorReturn = __webpack_require__("a1gu");
+
+      var _getPrototypeOf = __webpack_require__("Nsbk");
+
+      var _asyncToGenerator = __webpack_require__("yXPU");
+
+      function _createSuper(Derived) {
+        var hasNativeReflectConstruct = _isNativeReflectConstruct();
+        return function _createSuperInternal() {
+          var Super = _getPrototypeOf(Derived),
+            result;
+          if (hasNativeReflectConstruct) {
+            var NewTarget = _getPrototypeOf(this).constructor;
+            result = Reflect.construct(Super, arguments, NewTarget);
+          } else {
+            result = Super.apply(this, arguments);
+          }
+          return _possibleConstructorReturn(this, result);
+        };
+      }
+
+      function _isNativeReflectConstruct() {
+        if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+        if (Reflect.construct.sham) return false;
+        if (typeof Proxy === "function") return true;
+        try {
+          Date.prototype.toString.call(
+            Reflect.construct(Date, [], function() {})
+          );
+          return true;
+        } catch (e) {
+          return false;
+        }
+      }
+
+      var _interopRequireDefault = __webpack_require__("TqRt");
+
+      exports.__esModule = true;
+      exports.Container = Container;
+      exports.createUrl = createUrl;
+      exports["default"] = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _utils = __webpack_require__("g/15");
+
+      exports.AppInitialProps = _utils.AppInitialProps;
+      exports.NextWebVitalsMetric = _utils.NextWebVitalsMetric;
+      /**
+       * `App` component is used for initialize of pages. It allows for overwriting and full control of the `page` initialization.
+       * This allows for keeping state between navigation, custom error handling, injecting additional data.
+       */
+
+      function appGetInitialProps(_x) {
+        return _appGetInitialProps.apply(this, arguments);
+      }
+
+      function _appGetInitialProps() {
+        _appGetInitialProps = _asyncToGenerator(
+          /*#__PURE__*/ _regeneratorRuntime.mark(function _callee(_ref) {
+            var Component, ctx, pageProps;
+            return _regeneratorRuntime.wrap(function _callee$(_context) {
+              while (1) {
+                switch ((_context.prev = _context.next)) {
+                  case 0:
+                    (Component = _ref.Component), (ctx = _ref.ctx);
+                    _context.next = 3;
+                    return (0, _utils.loadGetInitialProps)(Component, ctx);
+
+                  case 3:
+                    pageProps = _context.sent;
+                    return _context.abrupt("return", {
+                      pageProps: pageProps
+                    });
+
+                  case 5:
+                  case "end":
+                    return _context.stop();
+                }
+              }
+            }, _callee);
+          })
+        );
+        return _appGetInitialProps.apply(this, arguments);
+      }
+
+      var App = /*#__PURE__*/ (function(_react$default$Compon) {
+        _inherits(App, _react$default$Compon);
+
+        var _super = _createSuper(App);
+
+        function App() {
+          _classCallCheck(this, App);
+
+          return _super.apply(this, arguments);
+        }
+
+        _createClass(App, [
+          {
+            key: "componentDidCatch",
+            // Kept here for backwards compatibility.
+            // When someone ended App they could call `super.componentDidCatch`.
+            // @deprecated This method is no longer needed. Errors are caught at the top level
+            value: function componentDidCatch(error, _errorInfo) {
+              throw error;
+            }
+          },
+          {
+            key: "render",
+            value: function render() {
+              var _this$props = this.props,
+                router = _this$props.router,
+                Component = _this$props.Component,
+                pageProps = _this$props.pageProps,
+                __N_SSG = _this$props.__N_SSG,
+                __N_SSP = _this$props.__N_SSP;
+              return /*#__PURE__*/ _react["default"].createElement(
+                Component,
+                Object.assign(
+                  {},
+                  pageProps, // we don't add the legacy URL prop if it's using non-legacy
+                  // methods like getStaticProps and getServerSideProps
+                  !(__N_SSG || __N_SSP)
+                    ? {
+                        url: createUrl(router)
+                      }
+                    : {}
+                )
+              );
+            }
+          }
+        ]);
+
+        return App;
+      })(_react["default"].Component);
+
+      exports["default"] = App;
+      App.origGetInitialProps = appGetInitialProps;
+      App.getInitialProps = appGetInitialProps;
+      var warnContainer;
+      var warnUrl;
+
+      if (false) {
+      } // @deprecated noop for now until removal
+
+      function Container(p) {
+        if (false) {
+        }
+        return p.children;
+      }
+
+      function createUrl(router) {
+        // This is to make sure we don't references the router object at call time
+        var pathname = router.pathname,
+          asPath = router.asPath,
+          query = router.query;
+        return {
+          get query() {
+            if (false) {
+            }
+            return query;
+          },
+
+          get pathname() {
+            if (false) {
+            }
+            return pathname;
+          },
+
+          get asPath() {
+            if (false) {
+            }
+            return asPath;
+          },
+
+          back: function back() {
+            if (false) {
+            }
+            router.back();
+          },
+          push: function push(url, as) {
+            if (false) {
+            }
+            return router.push(url, as);
+          },
+          pushTo: function pushTo(href, as) {
+            if (false) {
+            }
+            var pushRoute = as ? href : "";
+            var pushUrl = as || href;
+            return router.push(pushRoute, pushUrl);
+          },
+          replace: function replace(url, as) {
+            if (false) {
+            }
+            return router.replace(url, as);
+          },
+          replaceTo: function replaceTo(href, as) {
+            if (false) {
+            }
+            var replaceRoute = as ? href : "";
+            var replaceUrl = as || href;
+            return router.replace(replaceRoute, replaceUrl);
+          }
+        };
+      }
+
+      /***/
+    },
+
+    /***/ Nsbk: /***/ function(module, exports) {
+      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;
+
+      /***/
+    },
+
+    /***/ PJYZ: /***/ 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;
+
+      /***/
+    },
+
+    /***/ a1gu: /***/ function(module, exports, __webpack_require__) {
+      var _typeof = __webpack_require__("cDf5");
+
+      var assertThisInitialized = __webpack_require__("PJYZ");
+
+      function _possibleConstructorReturn(self, call) {
+        if (
+          call &&
+          (_typeof(call) === "object" || typeof call === "function")
+        ) {
+          return call;
+        }
+
+        return assertThisInitialized(self);
+      }
+
+      module.exports = _possibleConstructorReturn;
+
+      /***/
+    },
+
+    /***/ "e9+W": /***/ function(module, exports, __webpack_require__) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/_app",
+        function() {
+          return __webpack_require__("B5Ud");
+        }
+      ]);
+
+      /***/
+    }
+  },
+  [[0, 0, 1, 2]]
+]);
Diff for _error-476b6..4d.module.js
@@ -0,0 +1,585 @@
+(window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
+  [4],
+  {
+    /***/ "/0+H": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.isInAmpMode = isInAmpMode;
+      exports.useAmp = useAmp;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _ampContext = __webpack_require__("lwAK");
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      function isInAmpMode() {
+        var { ampFirst = false, hybrid = false, hasQuery = false } =
+          arguments.length > 0 && arguments[0] !== undefined
+            ? arguments[0]
+            : {};
+        return ampFirst || (hybrid && hasQuery);
+      }
+
+      function useAmp() {
+        // Don't assign the context value to a variable to save bytes
+        return isInAmpMode(
+          _react.default.useContext(_ampContext.AmpStateContext)
+        );
+      }
+
+      /***/
+    },
+
+    /***/ "/a9y": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _interopRequireDefault = __webpack_require__("TqRt");
+
+      exports.__esModule = true;
+      exports.default = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _head = _interopRequireDefault(__webpack_require__("8Kt/"));
+
+      var statusCodes = {
+        400: "Bad Request",
+        404: "This page could not be found",
+        405: "Method Not Allowed",
+        500: "Internal Server Error"
+      };
+
+      function _getInitialProps(_ref) {
+        var { res, err } = _ref;
+        var statusCode =
+          res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
+        return {
+          statusCode
+        };
+      }
+      /**
+       * `Error` component used for handling errors.
+       */
+
+      class Error extends _react.default.Component {
+        render() {
+          var { statusCode } = this.props;
+          var title =
+            this.props.title ||
+            statusCodes[statusCode] ||
+            "An unexpected error has occurred";
+          return /*#__PURE__*/ _react.default.createElement(
+            "div",
+            {
+              style: styles.error
+            },
+            /*#__PURE__*/ _react.default.createElement(
+              _head.default,
+              null,
+              /*#__PURE__*/ _react.default.createElement(
+                "title",
+                null,
+                statusCode,
+                ": ",
+                title
+              )
+            ),
+            /*#__PURE__*/ _react.default.createElement(
+              "div",
+              null,
+              /*#__PURE__*/ _react.default.createElement("style", {
+                dangerouslySetInnerHTML: {
+                  __html: "body { margin: 0 }"
+                }
+              }),
+              statusCode
+                ? /*#__PURE__*/ _react.default.createElement(
+                    "h1",
+                    {
+                      style: styles.h1
+                    },
+                    statusCode
+                  )
+                : null,
+              /*#__PURE__*/ _react.default.createElement(
+                "div",
+                {
+                  style: styles.desc
+                },
+                /*#__PURE__*/ _react.default.createElement(
+                  "h2",
+                  {
+                    style: styles.h2
+                  },
+                  title,
+                  "."
+                )
+              )
+            )
+          );
+        }
+      }
+
+      exports.default = Error;
+      Error.displayName = "ErrorPage";
+      Error.getInitialProps = _getInitialProps;
+      Error.origGetInitialProps = _getInitialProps;
+      var styles = {
+        error: {
+          color: "#000",
+          background: "#fff",
+          fontFamily:
+            '-apple-system, BlinkMacSystemFont, Roboto, "Segoe UI", "Fira Sans", Avenir, "Helvetica Neue", "Lucida Grande", sans-serif',
+          height: "100vh",
+          textAlign: "center",
+          display: "flex",
+          flexDirection: "column",
+          alignItems: "center",
+          justifyContent: "center"
+        },
+        desc: {
+          display: "inline-block",
+          textAlign: "left",
+          lineHeight: "49px",
+          height: "49px",
+          verticalAlign: "middle"
+        },
+        h1: {
+          display: "inline-block",
+          borderRight: "1px solid rgba(0, 0, 0,.3)",
+          margin: 0,
+          marginRight: "20px",
+          padding: "10px 23px 10px 0",
+          fontSize: "24px",
+          fontWeight: 500,
+          verticalAlign: "top"
+        },
+        h2: {
+          fontSize: "14px",
+          fontWeight: "normal",
+          lineHeight: "inherit",
+          margin: 0,
+          padding: 0
+        }
+      };
+
+      /***/
+    },
+
+    /***/ "04ac": /***/ function(module, exports, __webpack_require__) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/_error",
+        function() {
+          return __webpack_require__("/a9y");
+        }
+      ]);
+
+      /***/
+    },
+
+    /***/ "8Kt/": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.defaultHead = defaultHead;
+      exports.default = void 0;
+
+      var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
+
+      var _sideEffect = _interopRequireDefault(__webpack_require__("Xuae"));
+
+      var _ampContext = __webpack_require__("lwAK");
+
+      var _headManagerContext = __webpack_require__("FYa8");
+
+      var _amp = __webpack_require__("/0+H");
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      function _getRequireWildcardCache() {
+        if (typeof WeakMap !== "function") return null;
+        var cache = new WeakMap();
+
+        _getRequireWildcardCache = function _getRequireWildcardCache() {
+          return cache;
+        };
+
+        return cache;
+      }
+
+      function _interopRequireWildcard(obj) {
+        if (obj && obj.__esModule) {
+          return obj;
+        }
+
+        if (
+          obj === null ||
+          (typeof obj !== "object" && typeof obj !== "function")
+        ) {
+          return {
+            default: obj
+          };
+        }
+
+        var cache = _getRequireWildcardCache();
+
+        if (cache && cache.has(obj)) {
+          return cache.get(obj);
+        }
+
+        var newObj = {};
+        var hasPropertyDescriptor =
+          Object.defineProperty && Object.getOwnPropertyDescriptor;
+
+        for (var key in obj) {
+          if (Object.prototype.hasOwnProperty.call(obj, key)) {
+            var desc = hasPropertyDescriptor
+              ? Object.getOwnPropertyDescriptor(obj, key)
+              : null;
+
+            if (desc && (desc.get || desc.set)) {
+              Object.defineProperty(newObj, key, desc);
+            } else {
+              newObj[key] = obj[key];
+            }
+          }
+        }
+
+        newObj.default = obj;
+
+        if (cache) {
+          cache.set(obj, newObj);
+        }
+
+        return newObj;
+      }
+
+      function defaultHead() {
+        var inAmpMode =
+          arguments.length > 0 && arguments[0] !== undefined
+            ? arguments[0]
+            : false;
+        var head = [
+          /*#__PURE__*/ _react.default.createElement("meta", {
+            charSet: "utf-8"
+          })
+        ];
+
+        if (!inAmpMode) {
+          head.push(
+            /*#__PURE__*/ _react.default.createElement("meta", {
+              name: "viewport",
+              content: "width=device-width"
+            })
+          );
+        }
+
+        return head;
+      }
+
+      function onlyReactElement(list, child) {
+        // React children can be "string" or "number" in this case we ignore them for backwards compat
+        if (typeof child === "string" || typeof child === "number") {
+          return list;
+        } // Adds support for React.Fragment
+
+        if (child.type === _react.default.Fragment) {
+          return list.concat(
+            _react.default.Children.toArray(child.props.children).reduce(
+              (fragmentList, fragmentChild) => {
+                if (
+                  typeof fragmentChild === "string" ||
+                  typeof fragmentChild === "number"
+                ) {
+                  return fragmentList;
+                }
+
+                return fragmentList.concat(fragmentChild);
+              },
+              []
+            )
+          );
+        }
+
+        return list.concat(child);
+      }
+
+      var METATYPES = ["name", "httpEquiv", "charSet", "itemProp"];
+      /*
+returns a function for filtering head child elements
+which shouldn't be duplicated, like <title/>
+Also adds support for deduplicated `key` properties
+*/
+
+      function unique() {
+        var keys = new Set();
+        var tags = new Set();
+        var metaTypes = new Set();
+        var metaCategories = {};
+        return h => {
+          var isUnique = 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)) {
+              isUnique = false;
+            } else {
+              keys.add(key);
+            }
+          } // eslint-disable-next-line default-case
+
+          switch (h.type) {
+            case "title":
+            case "base":
+              if (tags.has(h.type)) {
+                isUnique = false;
+              } else {
+                tags.add(h.type);
+              }
+
+              break;
+
+            case "meta":
+              for (var i = 0, len = METATYPES.length; i < len; i++) {
+                var metatype = METATYPES[i];
+                if (!h.props.hasOwnProperty(metatype)) continue;
+
+                if (metatype === "charSet") {
+                  if (metaTypes.has(metatype)) {
+                    isUnique = false;
+                  } else {
+                    metaTypes.add(metatype);
+                  }
+                } else {
+                  var category = h.props[metatype];
+                  var categories = metaCategories[metatype] || new Set();
+
+                  if (categories.has(category)) {
+                    isUnique = false;
+                  } else {
+                    categories.add(category);
+                    metaCategories[metatype] = categories;
+                  }
+                }
+              }
+
+              break;
+          }
+
+          return isUnique;
+        };
+      }
+      /**
+       *
+       * @param headElements List of multiple <Head> instances
+       */
+
+      function reduceComponents(headElements, props) {
+        return headElements
+          .reduce((list, headElement) => {
+            var headElementChildren = _react.default.Children.toArray(
+              headElement.props.children
+            );
+
+            return list.concat(headElementChildren);
+          }, [])
+          .reduce(onlyReactElement, [])
+          .reverse()
+          .concat(defaultHead(props.inAmpMode))
+          .filter(unique())
+          .reverse()
+          .map((c, i) => {
+            var key = c.key || i;
+            return _react.default.cloneElement(c, {
+              key
+            });
+          });
+      }
+      /**
+       * This component injects elements to `<head>` of your page.
+       * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
+       */
+
+      function Head(_ref) {
+        var { children } = _ref;
+        var ampState = (0, _react.useContext)(_ampContext.AmpStateContext);
+        var headManager = (0, _react.useContext)(
+          _headManagerContext.HeadManagerContext
+        );
+        return /*#__PURE__*/ _react.default.createElement(
+          _sideEffect.default,
+          {
+            reduceComponentsToState: reduceComponents,
+            headManager: headManager,
+            inAmpMode: (0, _amp.isInAmpMode)(ampState)
+          },
+          children
+        );
+      } // TODO: Remove in the next major release
+
+      Head.rewind = () => {};
+
+      var _default = Head;
+      exports.default = _default;
+
+      /***/
+    },
+
+    /***/ FYa8: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.HeadManagerContext = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      var HeadManagerContext = _react.default.createContext({});
+
+      exports.HeadManagerContext = HeadManagerContext;
+
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ Qetd: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+      var assign = Object.assign.bind(Object);
+      module.exports = assign;
+      module.exports.default = module.exports;
+      //# sourceMappingURL=object-assign.js.map
+
+      /***/
+    },
+
+    /***/ TqRt: /***/ function(module, exports) {
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      module.exports = _interopRequireDefault;
+
+      /***/
+    },
+
+    /***/ Xuae: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.default = void 0;
+
+      var _react = __webpack_require__("q1tI");
+
+      var isServer = false;
+
+      class _default extends _react.Component {
+        constructor(props) {
+          super(props);
+          this._hasHeadManager = void 0;
+
+          this.emitChange = () => {
+            if (this._hasHeadManager) {
+              this.props.headManager.updateHead(
+                this.props.reduceComponentsToState(
+                  [...this.props.headManager.mountedInstances],
+                  this.props
+                )
+              );
+            }
+          };
+
+          this._hasHeadManager =
+            this.props.headManager && this.props.headManager.mountedInstances;
+
+          if (isServer && this._hasHeadManager) {
+            this.props.headManager.mountedInstances.add(this);
+            this.emitChange();
+          }
+        }
+
+        componentDidMount() {
+          if (this._hasHeadManager) {
+            this.props.headManager.mountedInstances.add(this);
+          }
+
+          this.emitChange();
+        }
+
+        componentDidUpdate() {
+          this.emitChange();
+        }
+
+        componentWillUnmount() {
+          if (this._hasHeadManager) {
+            this.props.headManager.mountedInstances.delete(this);
+          }
+
+          this.emitChange();
+        }
+
+        render() {
+          return null;
+        }
+      }
+
+      exports.default = _default;
+
+      /***/
+    },
+
+    /***/ lwAK: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.AmpStateContext = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      var AmpStateContext = _react.default.createContext({});
+
+      exports.AmpStateContext = AmpStateContext;
+
+      if (false) {
+      }
+
+      /***/
+    }
+  },
+  [["04ac", 0, 1]]
+]);
Diff for _error-815f5..acf27d08c.js
@@ -0,0 +1,971 @@
+_N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
+  [4],
+  {
+    /***/ "/0+H": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.isInAmpMode = isInAmpMode;
+      exports.useAmp = useAmp;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _ampContext = __webpack_require__("lwAK");
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      function isInAmpMode() {
+        var _ref =
+            arguments.length > 0 && arguments[0] !== undefined
+              ? arguments[0]
+              : {},
+          _ref$ampFirst = _ref.ampFirst,
+          ampFirst = _ref$ampFirst === void 0 ? false : _ref$ampFirst,
+          _ref$hybrid = _ref.hybrid,
+          hybrid = _ref$hybrid === void 0 ? false : _ref$hybrid,
+          _ref$hasQuery = _ref.hasQuery,
+          hasQuery = _ref$hasQuery === void 0 ? false : _ref$hasQuery;
+
+        return ampFirst || (hybrid && hasQuery);
+      }
+
+      function useAmp() {
+        // Don't assign the context value to a variable to save bytes
+        return isInAmpMode(
+          _react["default"].useContext(_ampContext.AmpStateContext)
+        );
+      }
+
+      /***/
+    },
+
+    /***/ "/a9y": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _classCallCheck = __webpack_require__("lwsE");
+
+      var _createClass = __webpack_require__("W8MJ");
+
+      var _inherits = __webpack_require__("7W2i");
+
+      var _possibleConstructorReturn = __webpack_require__("a1gu");
+
+      var _getPrototypeOf = __webpack_require__("Nsbk");
+
+      function _createSuper(Derived) {
+        var hasNativeReflectConstruct = _isNativeReflectConstruct();
+        return function _createSuperInternal() {
+          var Super = _getPrototypeOf(Derived),
+            result;
+          if (hasNativeReflectConstruct) {
+            var NewTarget = _getPrototypeOf(this).constructor;
+            result = Reflect.construct(Super, arguments, NewTarget);
+          } else {
+            result = Super.apply(this, arguments);
+          }
+          return _possibleConstructorReturn(this, result);
+        };
+      }
+
+      function _isNativeReflectConstruct() {
+        if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+        if (Reflect.construct.sham) return false;
+        if (typeof Proxy === "function") return true;
+        try {
+          Date.prototype.toString.call(
+            Reflect.construct(Date, [], function() {})
+          );
+          return true;
+        } catch (e) {
+          return false;
+        }
+      }
+
+      var _interopRequireDefault = __webpack_require__("TqRt");
+
+      exports.__esModule = true;
+      exports["default"] = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _head = _interopRequireDefault(__webpack_require__("8Kt/"));
+
+      var statusCodes = {
+        400: "Bad Request",
+        404: "This page could not be found",
+        405: "Method Not Allowed",
+        500: "Internal Server Error"
+      };
+
+      function _getInitialProps(_ref) {
+        var res = _ref.res,
+          err = _ref.err;
+        var statusCode =
+          res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
+        return {
+          statusCode: statusCode
+        };
+      }
+      /**
+       * `Error` component used for handling errors.
+       */
+
+      var Error = /*#__PURE__*/ (function(_react$default$Compon) {
+        _inherits(Error, _react$default$Compon);
+
+        var _super = _createSuper(Error);
+
+        function Error() {
+          _classCallCheck(this, Error);
+
+          return _super.apply(this, arguments);
+        }
+
+        _createClass(Error, [
+          {
+            key: "render",
+            value: function render() {
+              var statusCode = this.props.statusCode;
+              var title =
+                this.props.title ||
+                statusCodes[statusCode] ||
+                "An unexpected error has occurred";
+              return /*#__PURE__*/ _react["default"].createElement(
+                "div",
+                {
+                  style: styles.error
+                },
+                /*#__PURE__*/ _react["default"].createElement(
+                  _head["default"],
+                  null,
+                  /*#__PURE__*/ _react["default"].createElement(
+                    "title",
+                    null,
+                    statusCode,
+                    ": ",
+                    title
+                  )
+                ),
+                /*#__PURE__*/ _react["default"].createElement(
+                  "div",
+                  null,
+                  /*#__PURE__*/ _react["default"].createElement("style", {
+                    dangerouslySetInnerHTML: {
+                      __html: "body { margin: 0 }"
+                    }
+                  }),
+                  statusCode
+                    ? /*#__PURE__*/ _react["default"].createElement(
+                        "h1",
+                        {
+                          style: styles.h1
+                        },
+                        statusCode
+                      )
+                    : null,
+                  /*#__PURE__*/ _react["default"].createElement(
+                    "div",
+                    {
+                      style: styles.desc
+                    },
+                    /*#__PURE__*/ _react["default"].createElement(
+                      "h2",
+                      {
+                        style: styles.h2
+                      },
+                      title,
+                      "."
+                    )
+                  )
+                )
+              );
+            }
+          }
+        ]);
+
+        return Error;
+      })(_react["default"].Component);
+
+      exports["default"] = Error;
+      Error.displayName = "ErrorPage";
+      Error.getInitialProps = _getInitialProps;
+      Error.origGetInitialProps = _getInitialProps;
+      var styles = {
+        error: {
+          color: "#000",
+          background: "#fff",
+          fontFamily:
+            '-apple-system, BlinkMacSystemFont, Roboto, "Segoe UI", "Fira Sans", Avenir, "Helvetica Neue", "Lucida Grande", sans-serif',
+          height: "100vh",
+          textAlign: "center",
+          display: "flex",
+          flexDirection: "column",
+          alignItems: "center",
+          justifyContent: "center"
+        },
+        desc: {
+          display: "inline-block",
+          textAlign: "left",
+          lineHeight: "49px",
+          height: "49px",
+          verticalAlign: "middle"
+        },
+        h1: {
+          display: "inline-block",
+          borderRight: "1px solid rgba(0, 0, 0,.3)",
+          margin: 0,
+          marginRight: "20px",
+          padding: "10px 23px 10px 0",
+          fontSize: "24px",
+          fontWeight: 500,
+          verticalAlign: "top"
+        },
+        h2: {
+          fontSize: "14px",
+          fontWeight: "normal",
+          lineHeight: "inherit",
+          margin: 0,
+          padding: 0
+        }
+      };
+
+      /***/
+    },
+
+    /***/ "04ac": /***/ function(module, exports, __webpack_require__) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/_error",
+        function() {
+          return __webpack_require__("/a9y");
+        }
+      ]);
+
+      /***/
+    },
+
+    /***/ "7W2i": /***/ function(module, exports, __webpack_require__) {
+      var setPrototypeOf = __webpack_require__("SksO");
+
+      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;
+
+      /***/
+    },
+
+    /***/ "8Kt/": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.defaultHead = defaultHead;
+      exports["default"] = void 0;
+
+      var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
+
+      var _sideEffect = _interopRequireDefault(__webpack_require__("Xuae"));
+
+      var _ampContext = __webpack_require__("lwAK");
+
+      var _headManagerContext = __webpack_require__("FYa8");
+
+      var _amp = __webpack_require__("/0+H");
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      function _getRequireWildcardCache() {
+        if (typeof WeakMap !== "function") return null;
+        var cache = new WeakMap();
+
+        _getRequireWildcardCache = function _getRequireWildcardCache() {
+          return cache;
+        };
+
+        return cache;
+      }
+
+      function _interopRequireWildcard(obj) {
+        if (obj && obj.__esModule) {
+          return obj;
+        }
+
+        if (
+          obj === null ||
+          (typeof obj !== "object" && typeof obj !== "function")
+        ) {
+          return {
+            default: obj
+          };
+        }
+
+        var cache = _getRequireWildcardCache();
+
+        if (cache && cache.has(obj)) {
+          return cache.get(obj);
+        }
+
+        var newObj = {};
+        var hasPropertyDescriptor =
+          Object.defineProperty && Object.getOwnPropertyDescriptor;
+
+        for (var key in obj) {
+          if (Object.prototype.hasOwnProperty.call(obj, key)) {
+            var desc = hasPropertyDescriptor
+              ? Object.getOwnPropertyDescriptor(obj, key)
+              : null;
+
+            if (desc && (desc.get || desc.set)) {
+              Object.defineProperty(newObj, key, desc);
+            } else {
+              newObj[key] = obj[key];
+            }
+          }
+        }
+
+        newObj["default"] = obj;
+
+        if (cache) {
+          cache.set(obj, newObj);
+        }
+
+        return newObj;
+      }
+
+      function defaultHead() {
+        var inAmpMode =
+          arguments.length > 0 && arguments[0] !== undefined
+            ? arguments[0]
+            : false;
+        var head = [
+          /*#__PURE__*/ _react["default"].createElement("meta", {
+            charSet: "utf-8"
+          })
+        ];
+
+        if (!inAmpMode) {
+          head.push(
+            /*#__PURE__*/ _react["default"].createElement("meta", {
+              name: "viewport",
+              content: "width=device-width"
+            })
+          );
+        }
+
+        return head;
+      }
+
+      function onlyReactElement(list, child) {
+        // React children can be "string" or "number" in this case we ignore them for backwards compat
+        if (typeof child === "string" || typeof child === "number") {
+          return list;
+        } // Adds support for React.Fragment
+
+        if (child.type === _react["default"].Fragment) {
+          return list.concat(
+            _react["default"].Children.toArray(child.props.children).reduce(
+              function(fragmentList, fragmentChild) {
+                if (
+                  typeof fragmentChild === "string" ||
+                  typeof fragmentChild === "number"
+                ) {
+                  return fragmentList;
+                }
+
+                return fragmentList.concat(fragmentChild);
+              },
+              []
+            )
+          );
+        }
+
+        return list.concat(child);
+      }
+
+      var METATYPES = ["name", "httpEquiv", "charSet", "itemProp"];
+      /*
+returns a function for filtering head child elements
+which shouldn't be duplicated, like <title/>
+Also adds support for deduplicated `key` properties
+*/
+
+      function unique() {
+        var keys = new Set();
+        var tags = new Set();
+        var metaTypes = new Set();
+        var metaCategories = {};
+        return function(h) {
+          var isUnique = 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)) {
+              isUnique = false;
+            } else {
+              keys.add(key);
+            }
+          } // eslint-disable-next-line default-case
+
+          switch (h.type) {
+            case "title":
+            case "base":
+              if (tags.has(h.type)) {
+                isUnique = false;
+              } else {
+                tags.add(h.type);
+              }
+
+              break;
+
+            case "meta":
+              for (var i = 0, len = METATYPES.length; i < len; i++) {
+                var metatype = METATYPES[i];
+                if (!h.props.hasOwnProperty(metatype)) continue;
+
+                if (metatype === "charSet") {
+                  if (metaTypes.has(metatype)) {
+                    isUnique = false;
+                  } else {
+                    metaTypes.add(metatype);
+                  }
+                } else {
+                  var category = h.props[metatype];
+                  var categories = metaCategories[metatype] || new Set();
+
+                  if (categories.has(category)) {
+                    isUnique = false;
+                  } else {
+                    categories.add(category);
+                    metaCategories[metatype] = categories;
+                  }
+                }
+              }
+
+              break;
+          }
+
+          return isUnique;
+        };
+      }
+      /**
+       *
+       * @param headElements List of multiple <Head> instances
+       */
+
+      function reduceComponents(headElements, props) {
+        return headElements
+          .reduce(function(list, headElement) {
+            var headElementChildren = _react["default"].Children.toArray(
+              headElement.props.children
+            );
+
+            return list.concat(headElementChildren);
+          }, [])
+          .reduce(onlyReactElement, [])
+          .reverse()
+          .concat(defaultHead(props.inAmpMode))
+          .filter(unique())
+          .reverse()
+          .map(function(c, i) {
+            var key = c.key || i;
+            return _react["default"].cloneElement(c, {
+              key: key
+            });
+          });
+      }
+      /**
+       * This component injects elements to `<head>` of your page.
+       * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
+       */
+
+      function Head(_ref) {
+        var children = _ref.children;
+        var ampState = (0, _react.useContext)(_ampContext.AmpStateContext);
+        var headManager = (0, _react.useContext)(
+          _headManagerContext.HeadManagerContext
+        );
+        return /*#__PURE__*/ _react["default"].createElement(
+          _sideEffect["default"],
+          {
+            reduceComponentsToState: reduceComponents,
+            headManager: headManager,
+            inAmpMode: (0, _amp.isInAmpMode)(ampState)
+          },
+          children
+        );
+      } // TODO: Remove in the next major release
+
+      Head.rewind = function() {};
+
+      var _default = Head;
+      exports["default"] = _default;
+
+      /***/
+    },
+
+    /***/ Bnag: /***/ function(module, exports) {
+      function _nonIterableSpread() {
+        throw new TypeError(
+          "Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
+        );
+      }
+
+      module.exports = _nonIterableSpread;
+
+      /***/
+    },
+
+    /***/ EbDI: /***/ function(module, exports) {
+      function _iterableToArray(iter) {
+        if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter))
+          return Array.from(iter);
+      }
+
+      module.exports = _iterableToArray;
+
+      /***/
+    },
+
+    /***/ FYa8: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.HeadManagerContext = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      var HeadManagerContext = _react["default"].createContext({});
+
+      exports.HeadManagerContext = HeadManagerContext;
+
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ Ijbi: /***/ function(module, exports, __webpack_require__) {
+      var arrayLikeToArray = __webpack_require__("WkPL");
+
+      function _arrayWithoutHoles(arr) {
+        if (Array.isArray(arr)) return arrayLikeToArray(arr);
+      }
+
+      module.exports = _arrayWithoutHoles;
+
+      /***/
+    },
+
+    /***/ Nsbk: /***/ function(module, exports) {
+      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;
+
+      /***/
+    },
+
+    /***/ PJYZ: /***/ 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;
+
+      /***/
+    },
+
+    /***/ Qetd: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+      var assign = Object.assign.bind(Object);
+      module.exports = assign;
+      module.exports.default = module.exports;
+      //# sourceMappingURL=object-assign.js.map
+
+      /***/
+    },
+
+    /***/ RIqP: /***/ function(module, exports, __webpack_require__) {
+      var arrayWithoutHoles = __webpack_require__("Ijbi");
+
+      var iterableToArray = __webpack_require__("EbDI");
+
+      var unsupportedIterableToArray = __webpack_require__("ZhPi");
+
+      var nonIterableSpread = __webpack_require__("Bnag");
+
+      function _toConsumableArray(arr) {
+        return (
+          arrayWithoutHoles(arr) ||
+          iterableToArray(arr) ||
+          unsupportedIterableToArray(arr) ||
+          nonIterableSpread()
+        );
+      }
+
+      module.exports = _toConsumableArray;
+
+      /***/
+    },
+
+    /***/ SksO: /***/ function(module, exports) {
+      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;
+
+      /***/
+    },
+
+    /***/ TqRt: /***/ function(module, exports) {
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      module.exports = _interopRequireDefault;
+
+      /***/
+    },
+
+    /***/ W8MJ: /***/ function(module, exports) {
+      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;
+          Object.defineProperty(target, descriptor.key, descriptor);
+        }
+      }
+
+      function _createClass(Constructor, protoProps, staticProps) {
+        if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+        if (staticProps) _defineProperties(Constructor, staticProps);
+        return Constructor;
+      }
+
+      module.exports = _createClass;
+
+      /***/
+    },
+
+    /***/ WkPL: /***/ function(module, exports) {
+      function _arrayLikeToArray(arr, len) {
+        if (len == null || len > arr.length) len = arr.length;
+
+        for (var i = 0, arr2 = new Array(len); i < len; i++) {
+          arr2[i] = arr[i];
+        }
+
+        return arr2;
+      }
+
+      module.exports = _arrayLikeToArray;
+
+      /***/
+    },
+
+    /***/ Xuae: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _toConsumableArray = __webpack_require__("RIqP");
+
+      var _classCallCheck = __webpack_require__("lwsE");
+
+      var _createClass = __webpack_require__("W8MJ");
+
+      var _assertThisInitialized = __webpack_require__("PJYZ");
+
+      var _inherits = __webpack_require__("7W2i");
+
+      var _possibleConstructorReturn = __webpack_require__("a1gu");
+
+      var _getPrototypeOf = __webpack_require__("Nsbk");
+
+      function _createSuper(Derived) {
+        var hasNativeReflectConstruct = _isNativeReflectConstruct();
+        return function _createSuperInternal() {
+          var Super = _getPrototypeOf(Derived),
+            result;
+          if (hasNativeReflectConstruct) {
+            var NewTarget = _getPrototypeOf(this).constructor;
+            result = Reflect.construct(Super, arguments, NewTarget);
+          } else {
+            result = Super.apply(this, arguments);
+          }
+          return _possibleConstructorReturn(this, result);
+        };
+      }
+
+      function _isNativeReflectConstruct() {
+        if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+        if (Reflect.construct.sham) return false;
+        if (typeof Proxy === "function") return true;
+        try {
+          Date.prototype.toString.call(
+            Reflect.construct(Date, [], function() {})
+          );
+          return true;
+        } catch (e) {
+          return false;
+        }
+      }
+
+      exports.__esModule = true;
+      exports["default"] = void 0;
+
+      var _react = __webpack_require__("q1tI");
+
+      var isServer = false;
+
+      var _default = /*#__PURE__*/ (function(_react$Component) {
+        _inherits(_default, _react$Component);
+
+        var _super = _createSuper(_default);
+
+        function _default(props) {
+          var _this;
+
+          _classCallCheck(this, _default);
+
+          _this = _super.call(this, props);
+          _this._hasHeadManager = void 0;
+
+          _this.emitChange = function() {
+            if (_this._hasHeadManager) {
+              _this.props.headManager.updateHead(
+                _this.props.reduceComponentsToState(
+                  _toConsumableArray(_this.props.headManager.mountedInstances),
+                  _this.props
+                )
+              );
+            }
+          };
+
+          _this._hasHeadManager =
+            _this.props.headManager && _this.props.headManager.mountedInstances;
+
+          if (isServer && _this._hasHeadManager) {
+            _this.props.headManager.mountedInstances.add(
+              _assertThisInitialized(_this)
+            );
+
+            _this.emitChange();
+          }
+
+          return _this;
+        }
+
+        _createClass(_default, [
+          {
+            key: "componentDidMount",
+            value: function componentDidMount() {
+              if (this._hasHeadManager) {
+                this.props.headManager.mountedInstances.add(this);
+              }
+
+              this.emitChange();
+            }
+          },
+          {
+            key: "componentDidUpdate",
+            value: function componentDidUpdate() {
+              this.emitChange();
+            }
+          },
+          {
+            key: "componentWillUnmount",
+            value: function componentWillUnmount() {
+              if (this._hasHeadManager) {
+                this.props.headManager.mountedInstances["delete"](this);
+              }
+
+              this.emitChange();
+            }
+          },
+          {
+            key: "render",
+            value: function render() {
+              return null;
+            }
+          }
+        ]);
+
+        return _default;
+      })(_react.Component);
+
+      exports["default"] = _default;
+
+      /***/
+    },
+
+    /***/ ZhPi: /***/ function(module, exports, __webpack_require__) {
+      var arrayLikeToArray = __webpack_require__("WkPL");
+
+      function _unsupportedIterableToArray(o, minLen) {
+        if (!o) return;
+        if (typeof o === "string") return arrayLikeToArray(o, minLen);
+        var n = Object.prototype.toString.call(o).slice(8, -1);
+        if (n === "Object" && o.constructor) n = o.constructor.name;
+        if (n === "Map" || n === "Set") return Array.from(o);
+        if (
+          n === "Arguments" ||
+          /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
+        )
+          return arrayLikeToArray(o, minLen);
+      }
+
+      module.exports = _unsupportedIterableToArray;
+
+      /***/
+    },
+
+    /***/ a1gu: /***/ function(module, exports, __webpack_require__) {
+      var _typeof = __webpack_require__("cDf5");
+
+      var assertThisInitialized = __webpack_require__("PJYZ");
+
+      function _possibleConstructorReturn(self, call) {
+        if (
+          call &&
+          (_typeof(call) === "object" || typeof call === "function")
+        ) {
+          return call;
+        }
+
+        return assertThisInitialized(self);
+      }
+
+      module.exports = _possibleConstructorReturn;
+
+      /***/
+    },
+
+    /***/ cDf5: /***/ function(module, exports) {
+      function _typeof(obj) {
+        "@babel/helpers - typeof";
+
+        if (
+          typeof Symbol === "function" &&
+          typeof Symbol.iterator === "symbol"
+        ) {
+          module.exports = _typeof = function _typeof(obj) {
+            return typeof obj;
+          };
+        } else {
+          module.exports = _typeof = function _typeof(obj) {
+            return obj &&
+              typeof Symbol === "function" &&
+              obj.constructor === Symbol &&
+              obj !== Symbol.prototype
+              ? "symbol"
+              : typeof obj;
+          };
+        }
+
+        return _typeof(obj);
+      }
+
+      module.exports = _typeof;
+
+      /***/
+    },
+
+    /***/ lwAK: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.AmpStateContext = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      var AmpStateContext = _react["default"].createContext({});
+
+      exports.AmpStateContext = AmpStateContext;
+
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ lwsE: /***/ function(module, exports) {
+      function _classCallCheck(instance, Constructor) {
+        if (!(instance instanceof Constructor)) {
+          throw new TypeError("Cannot call a class as a function");
+        }
+      }
+
+      module.exports = _classCallCheck;
+
+      /***/
+    }
+  },
+  [["04ac", 0, 1]]
+]);
Diff for hooks-4312a8..4e.module.js
@@ -0,0 +1,82 @@
+(window["webpackJsonp_N
Post job cleanup.
[command]/usr/bin/git version
git version 2.27.0
[command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
[command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :
[command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
http.https://github.com/.extraheader
[command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
[command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :
Cleaning up orphan processes
Commit: 126e47350e5c4d9f0572c804673e88ea937eef78

@ijjk
Copy link
Member

ijjk commented Jul 16, 2020

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall decrease ✓
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
buildDuration 10.6s 11.1s ⚠️ +513ms
nodeModulesSize 66.5 MB 66.5 MB -1.29 kB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
/ failed reqs 0 0
/ total time (seconds) 1.754 2.032 ⚠️ +0.28
/ avg req/sec 1425.05 1230.48 ⚠️ -194.57
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.281 1.311 ⚠️ +0.03
/error-in-render avg req/sec 1950.88 1906.28 ⚠️ -44.6
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
main-HASH.js gzip 6.72 kB 6.72 kB
webpack-HASH.js gzip 751 B 751 B
19b7e98f51cc..6b36.js gzip 9.74 kB 9.74 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
polyfills-HASH.js gzip N/A 30.8 kB N/A
Overall change 56.4 kB 87.2 kB ⚠️ +30.8 kB
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
main-HASH.module.js gzip 5.8 kB 5.79 kB -1 B
webpack-HASH..dule.js gzip 751 B 751 B
19b7e98f51cc..dule.js gzip 6.14 kB 6.14 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
polyfills-05..dule.js gzip N/A 30.8 kB N/A
Overall change 51.8 kB 82.7 kB ⚠️ +30.8 kB
Legacy Client Bundles (polyfills) Overall decrease ✓
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
polyfills-HASH.js gzip 30.8 kB N/A N/A
Overall change 30.8 kB 0 B -30.8 kB
Client Pages Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
_app-8f5f611..1f7b.js gzip N/A 1.28 kB N/A
_error-8e69b..8695.js gzip N/A 3.41 kB N/A
hooks-f7f3d0..7465.js gzip N/A 887 B N/A
index-08fb3f..c0e9.js gzip N/A 227 B N/A
link-ddd176e..5566.js gzip N/A 1.29 kB N/A
routerDirect..8aa1.js gzip N/A 284 B N/A
withRouter-f..e777.js gzip N/A 284 B N/A
Overall change 0 B 7.66 kB ⚠️ +7.66 kB
Client Pages Modern Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
_app-669dbe5..dule.js gzip N/A 626 B N/A
_error-663e6..dule.js gzip N/A 2.24 kB N/A
hooks-805c40..dule.js gzip N/A 387 B N/A
index-6ba5a4..dule.js gzip N/A 226 B N/A
link-69bc264..dule.js gzip N/A 1.25 kB N/A
routerDirect..dule.js gzip N/A 284 B N/A
withRouter-d..dule.js gzip N/A 282 B N/A
Overall change 0 B 5.29 kB ⚠️ +5.29 kB
Client Build Manifests Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
_buildManifest.js gzip 267 B 275 B ⚠️ +8 B
_buildManife..dule.js gzip 273 B 281 B ⚠️ +8 B
Overall change 540 B 556 B ⚠️ +16 B
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
index.html gzip 954 B 947 B -7 B
link.html gzip 961 B 953 B -8 B
withRouter.html gzip 946 B 940 B -6 B
Overall change 2.86 kB 2.84 kB -21 B

Diffs

Diff for _buildManifest.js
@@ -1,11 +1,17 @@
 self.__BUILD_MANIFEST = {
-  "/": ["static\u002Fpages\u002Findex-f35cd1774d910f5523ed.js"],
-  "/_error": ["static\u002Fpages\u002F_error-f39e6723c6acde17325a.js"],
-  "/hooks": ["static\u002Fpages\u002Fhooks-9e216cd51bf04b309e08.js"],
-  "/link": ["static\u002Fpages\u002Flink-384139ace1609fd05ce0.js"],
+  "/": ["static\u002Fchunks\u002Fpages\u002Findex-283eed3c1520dcc26e8d.js"],
+  "/_error": [
+    "static\u002Fchunks\u002Fpages\u002F_error-4a37fa8cee3d5cd40293.js"
+  ],
+  "/hooks": [
+    "static\u002Fchunks\u002Fpages\u002Fhooks-8001dc76075832ee8949.js"
+  ],
+  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-47d000d5b33907ab0cd4.js"],
   "/routerDirect": [
-    "static\u002Fpages\u002FrouterDirect-b95d3f54c75949a43da6.js"
+    "static\u002Fchunks\u002Fpages\u002FrouterDirect-2e9bfd441bd88cd3382e.js"
   ],
-  "/withRouter": ["static\u002Fpages\u002FwithRouter-3e85450022aeb0cab2be.js"]
+  "/withRouter": [
+    "static\u002Fchunks\u002Fpages\u002FwithRouter-9af1d72bd996729e701e.js"
+  ]
 };
 self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB();
Diff for _buildManifest.module.js
@@ -1,13 +1,21 @@
 self.__BUILD_MANIFEST = {
-  "/": ["static\u002Fpages\u002Findex-da343bca3b67f1bcf42d.module.js"],
-  "/_error": ["static\u002Fpages\u002F_error-b3c4c3f8dbb1417657e6.module.js"],
-  "/hooks": ["static\u002Fpages\u002Fhooks-dc8f274035a2839a1e61.module.js"],
-  "/link": ["static\u002Fpages\u002Flink-481c9ef0fea508bf4d17.module.js"],
+  "/": [
+    "static\u002Fchunks\u002Fpages\u002Findex-dc79232991b9d18c3260.module.js"
+  ],
+  "/_error": [
+    "static\u002Fchunks\u002Fpages\u002F_error-ce975ebbbf8cd0d465c1.module.js"
+  ],
+  "/hooks": [
+    "static\u002Fchunks\u002Fpages\u002Fhooks-56fa58a6f0993d7d36d7.module.js"
+  ],
+  "/link": [
+    "static\u002Fchunks\u002Fpages\u002Flink-3c6dc1a0ec3e820dcde5.module.js"
+  ],
   "/routerDirect": [
-    "static\u002Fpages\u002FrouterDirect-c62f258dff7fece0a732.module.js"
+    "static\u002Fchunks\u002Fpages\u002FrouterDirect-368af3dfef3c9cd99dc3.module.js"
   ],
   "/withRouter": [
-    "static\u002Fpages\u002FwithRouter-6fd38b55e6cdc818c01b.module.js"
+    "static\u002Fchunks\u002Fpages\u002FwithRouter-654e4c0aa8f6a4177d77.module.js"
   ]
 };
 self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB();
Diff for _app-7512045..d9376e2ca.js
@@ -0,0 +1,321 @@
+_N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
+  [4],
+  {
+    /***/ 0: /***/ function(module, exports, __webpack_require__) {
+      __webpack_require__("e9+W");
+      module.exports = __webpack_require__("nOHt");
+
+      /***/
+    },
+
+    /***/ "7W2i": /***/ function(module, exports, __webpack_require__) {
+      var setPrototypeOf = __webpack_require__("SksO");
+
+      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;
+
+      /***/
+    },
+
+    /***/ B5Ud: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _regeneratorRuntime = __webpack_require__("o0o1");
+
+      var _classCallCheck = __webpack_require__("lwsE");
+
+      var _createClass = __webpack_require__("W8MJ");
+
+      var _inherits = __webpack_require__("7W2i");
+
+      var _possibleConstructorReturn = __webpack_require__("a1gu");
+
+      var _getPrototypeOf = __webpack_require__("Nsbk");
+
+      var _asyncToGenerator = __webpack_require__("yXPU");
+
+      function _createSuper(Derived) {
+        var hasNativeReflectConstruct = _isNativeReflectConstruct();
+        return function _createSuperInternal() {
+          var Super = _getPrototypeOf(Derived),
+            result;
+          if (hasNativeReflectConstruct) {
+            var NewTarget = _getPrototypeOf(this).constructor;
+            result = Reflect.construct(Super, arguments, NewTarget);
+          } else {
+            result = Super.apply(this, arguments);
+          }
+          return _possibleConstructorReturn(this, result);
+        };
+      }
+
+      function _isNativeReflectConstruct() {
+        if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+        if (Reflect.construct.sham) return false;
+        if (typeof Proxy === "function") return true;
+        try {
+          Date.prototype.toString.call(
+            Reflect.construct(Date, [], function() {})
+          );
+          return true;
+        } catch (e) {
+          return false;
+        }
+      }
+
+      var _interopRequireDefault = __webpack_require__("TqRt");
+
+      exports.__esModule = true;
+      exports.Container = Container;
+      exports.createUrl = createUrl;
+      exports["default"] = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _utils = __webpack_require__("g/15");
+
+      exports.AppInitialProps = _utils.AppInitialProps;
+      exports.NextWebVitalsMetric = _utils.NextWebVitalsMetric;
+      /**
+       * `App` component is used for initialize of pages. It allows for overwriting and full control of the `page` initialization.
+       * This allows for keeping state between navigation, custom error handling, injecting additional data.
+       */
+
+      function appGetInitialProps(_x) {
+        return _appGetInitialProps.apply(this, arguments);
+      }
+
+      function _appGetInitialProps() {
+        _appGetInitialProps = _asyncToGenerator(
+          /*#__PURE__*/ _regeneratorRuntime.mark(function _callee(_ref) {
+            var Component, ctx, pageProps;
+            return _regeneratorRuntime.wrap(function _callee$(_context) {
+              while (1) {
+                switch ((_context.prev = _context.next)) {
+                  case 0:
+                    (Component = _ref.Component), (ctx = _ref.ctx);
+                    _context.next = 3;
+                    return (0, _utils.loadGetInitialProps)(Component, ctx);
+
+                  case 3:
+                    pageProps = _context.sent;
+                    return _context.abrupt("return", {
+                      pageProps: pageProps
+                    });
+
+                  case 5:
+                  case "end":
+                    return _context.stop();
+                }
+              }
+            }, _callee);
+          })
+        );
+        return _appGetInitialProps.apply(this, arguments);
+      }
+
+      var App = /*#__PURE__*/ (function(_react$default$Compon) {
+        _inherits(App, _react$default$Compon);
+
+        var _super = _createSuper(App);
+
+        function App() {
+          _classCallCheck(this, App);
+
+          return _super.apply(this, arguments);
+        }
+
+        _createClass(App, [
+          {
+            key: "componentDidCatch",
+            // Kept here for backwards compatibility.
+            // When someone ended App they could call `super.componentDidCatch`.
+            // @deprecated This method is no longer needed. Errors are caught at the top level
+            value: function componentDidCatch(error, _errorInfo) {
+              throw error;
+            }
+          },
+          {
+            key: "render",
+            value: function render() {
+              var _this$props = this.props,
+                router = _this$props.router,
+                Component = _this$props.Component,
+                pageProps = _this$props.pageProps,
+                __N_SSG = _this$props.__N_SSG,
+                __N_SSP = _this$props.__N_SSP;
+              return /*#__PURE__*/ _react["default"].createElement(
+                Component,
+                Object.assign(
+                  {},
+                  pageProps, // we don't add the legacy URL prop if it's using non-legacy
+                  // methods like getStaticProps and getServerSideProps
+                  !(__N_SSG || __N_SSP)
+                    ? {
+                        url: createUrl(router)
+                      }
+                    : {}
+                )
+              );
+            }
+          }
+        ]);
+
+        return App;
+      })(_react["default"].Component);
+
+      exports["default"] = App;
+      App.origGetInitialProps = appGetInitialProps;
+      App.getInitialProps = appGetInitialProps;
+      var warnContainer;
+      var warnUrl;
+
+      if (false) {
+      } // @deprecated noop for now until removal
+
+      function Container(p) {
+        if (false) {
+        }
+        return p.children;
+      }
+
+      function createUrl(router) {
+        // This is to make sure we don't references the router object at call time
+        var pathname = router.pathname,
+          asPath = router.asPath,
+          query = router.query;
+        return {
+          get query() {
+            if (false) {
+            }
+            return query;
+          },
+
+          get pathname() {
+            if (false) {
+            }
+            return pathname;
+          },
+
+          get asPath() {
+            if (false) {
+            }
+            return asPath;
+          },
+
+          back: function back() {
+            if (false) {
+            }
+            router.back();
+          },
+          push: function push(url, as) {
+            if (false) {
+            }
+            return router.push(url, as);
+          },
+          pushTo: function pushTo(href, as) {
+            if (false) {
+            }
+            var pushRoute = as ? href : "";
+            var pushUrl = as || href;
+            return router.push(pushRoute, pushUrl);
+          },
+          replace: function replace(url, as) {
+            if (false) {
+            }
+            return router.replace(url, as);
+          },
+          replaceTo: function replaceTo(href, as) {
+            if (false) {
+            }
+            var replaceRoute = as ? href : "";
+            var replaceUrl = as || href;
+            return router.replace(replaceRoute, replaceUrl);
+          }
+        };
+      }
+
+      /***/
+    },
+
+    /***/ Nsbk: /***/ function(module, exports) {
+      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;
+
+      /***/
+    },
+
+    /***/ PJYZ: /***/ 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;
+
+      /***/
+    },
+
+    /***/ a1gu: /***/ function(module, exports, __webpack_require__) {
+      var _typeof = __webpack_require__("cDf5");
+
+      var assertThisInitialized = __webpack_require__("PJYZ");
+
+      function _possibleConstructorReturn(self, call) {
+        if (
+          call &&
+          (_typeof(call) === "object" || typeof call === "function")
+        ) {
+          return call;
+        }
+
+        return assertThisInitialized(self);
+      }
+
+      module.exports = _possibleConstructorReturn;
+
+      /***/
+    },
+
+    /***/ "e9+W": /***/ function(module, exports, __webpack_require__) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/_app",
+        function() {
+          return __webpack_require__("B5Ud");
+        }
+      ]);
+
+      /***/
+    }
+  },
+  [[0, 0, 1, 2]]
+]);
Diff for _app-9a0d200..cd.module.js
@@ -0,0 +1,150 @@
+(window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
+  [4],
+  {
+    /***/ 0: /***/ function(module, exports, __webpack_require__) {
+      __webpack_require__("e9+W");
+      module.exports = __webpack_require__("nOHt");
+
+      /***/
+    },
+
+    /***/ B5Ud: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _interopRequireDefault = __webpack_require__("TqRt");
+
+      exports.__esModule = true;
+      exports.Container = Container;
+      exports.createUrl = createUrl;
+      exports.default = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _utils = __webpack_require__("g/15");
+
+      exports.AppInitialProps = _utils.AppInitialProps;
+      exports.NextWebVitalsMetric = _utils.NextWebVitalsMetric;
+      /**
+       * `App` component is used for initialize of pages. It allows for overwriting and full control of the `page` initialization.
+       * This allows for keeping state between navigation, custom error handling, injecting additional data.
+       */
+
+      async function appGetInitialProps(_ref) {
+        var { Component, ctx } = _ref;
+        var pageProps = await (0, _utils.loadGetInitialProps)(Component, ctx);
+        return {
+          pageProps
+        };
+      }
+
+      class App extends _react.default.Component {
+        // Kept here for backwards compatibility.
+        // When someone ended App they could call `super.componentDidCatch`.
+        // @deprecated This method is no longer needed. Errors are caught at the top level
+        componentDidCatch(error, _errorInfo) {
+          throw error;
+        }
+
+        render() {
+          var { router, Component, pageProps, __N_SSG, __N_SSP } = this.props;
+          return /*#__PURE__*/ _react.default.createElement(
+            Component,
+            Object.assign(
+              {},
+              pageProps, // we don't add the legacy URL prop if it's using non-legacy
+              // methods like getStaticProps and getServerSideProps
+              !(__N_SSG || __N_SSP)
+                ? {
+                    url: createUrl(router)
+                  }
+                : {}
+            )
+          );
+        }
+      }
+
+      exports.default = App;
+      App.origGetInitialProps = appGetInitialProps;
+      App.getInitialProps = appGetInitialProps;
+      var warnContainer;
+      var warnUrl;
+
+      if (false) {
+      } // @deprecated noop for now until removal
+
+      function Container(p) {
+        if (false) {
+        }
+        return p.children;
+      }
+
+      function createUrl(router) {
+        // This is to make sure we don't references the router object at call time
+        var { pathname, asPath, query } = router;
+        return {
+          get query() {
+            if (false) {
+            }
+            return query;
+          },
+
+          get pathname() {
+            if (false) {
+            }
+            return pathname;
+          },
+
+          get asPath() {
+            if (false) {
+            }
+            return asPath;
+          },
+
+          back: () => {
+            if (false) {
+            }
+            router.back();
+          },
+          push: (url, as) => {
+            if (false) {
+            }
+            return router.push(url, as);
+          },
+          pushTo: (href, as) => {
+            if (false) {
+            }
+            var pushRoute = as ? href : "";
+            var pushUrl = as || href;
+            return router.push(pushRoute, pushUrl);
+          },
+          replace: (url, as) => {
+            if (false) {
+            }
+            return router.replace(url, as);
+          },
+          replaceTo: (href, as) => {
+            if (false) {
+            }
+            var replaceRoute = as ? href : "";
+            var replaceUrl = as || href;
+            return router.replace(replaceRoute, replaceUrl);
+          }
+        };
+      }
+
+      /***/
+    },
+
+    /***/ "e9+W": /***/ function(module, exports, __webpack_require__) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/_app",
+        function() {
+          return __webpack_require__("B5Ud");
+        }
+      ]);
+
+      /***/
+    }
+  },
+  [[0, 0, 1, 2]]
+]);
Diff for _error-4a37f..d5cd40293.js
@@ -0,0 +1,971 @@
+_N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
+  [5],
+  {
+    /***/ "/0+H": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.isInAmpMode = isInAmpMode;
+      exports.useAmp = useAmp;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _ampContext = __webpack_require__("lwAK");
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      function isInAmpMode() {
+        var _ref =
+            arguments.length > 0 && arguments[0] !== undefined
+              ? arguments[0]
+              : {},
+          _ref$ampFirst = _ref.ampFirst,
+          ampFirst = _ref$ampFirst === void 0 ? false : _ref$ampFirst,
+          _ref$hybrid = _ref.hybrid,
+          hybrid = _ref$hybrid === void 0 ? false : _ref$hybrid,
+          _ref$hasQuery = _ref.hasQuery,
+          hasQuery = _ref$hasQuery === void 0 ? false : _ref$hasQuery;
+
+        return ampFirst || (hybrid && hasQuery);
+      }
+
+      function useAmp() {
+        // Don't assign the context value to a variable to save bytes
+        return isInAmpMode(
+          _react["default"].useContext(_ampContext.AmpStateContext)
+        );
+      }
+
+      /***/
+    },
+
+    /***/ "/a9y": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _classCallCheck = __webpack_require__("lwsE");
+
+      var _createClass = __webpack_require__("W8MJ");
+
+      var _inherits = __webpack_require__("7W2i");
+
+      var _possibleConstructorReturn = __webpack_require__("a1gu");
+
+      var _getPrototypeOf = __webpack_require__("Nsbk");
+
+      function _createSuper(Derived) {
+        var hasNativeReflectConstruct = _isNativeReflectConstruct();
+        return function _createSuperInternal() {
+          var Super = _getPrototypeOf(Derived),
+            result;
+          if (hasNativeReflectConstruct) {
+            var NewTarget = _getPrototypeOf(this).constructor;
+            result = Reflect.construct(Super, arguments, NewTarget);
+          } else {
+            result = Super.apply(this, arguments);
+          }
+          return _possibleConstructorReturn(this, result);
+        };
+      }
+
+      function _isNativeReflectConstruct() {
+        if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+        if (Reflect.construct.sham) return false;
+        if (typeof Proxy === "function") return true;
+        try {
+          Date.prototype.toString.call(
+            Reflect.construct(Date, [], function() {})
+          );
+          return true;
+        } catch (e) {
+          return false;
+        }
+      }
+
+      var _interopRequireDefault = __webpack_require__("TqRt");
+
+      exports.__esModule = true;
+      exports["default"] = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _head = _interopRequireDefault(__webpack_require__("8Kt/"));
+
+      var statusCodes = {
+        400: "Bad Request",
+        404: "This page could not be found",
+        405: "Method Not Allowed",
+        500: "Internal Server Error"
+      };
+
+      function _getInitialProps(_ref) {
+        var res = _ref.res,
+          err = _ref.err;
+        var statusCode =
+          res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
+        return {
+          statusCode: statusCode
+        };
+      }
+      /**
+       * `Error` component used for handling errors.
+       */
+
+      var Error = /*#__PURE__*/ (function(_react$default$Compon) {
+        _inherits(Error, _react$default$Compon);
+
+        var _super = _createSuper(Error);
+
+        function Error() {
+          _classCallCheck(this, Error);
+
+          return _super.apply(this, arguments);
+        }
+
+        _createClass(Error, [
+          {
+            key: "render",
+            value: function render() {
+              var statusCode = this.props.statusCode;
+              var title =
+                this.props.title ||
+                statusCodes[statusCode] ||
+                "An unexpected error has occurred";
+              return /*#__PURE__*/ _react["default"].createElement(
+                "div",
+                {
+                  style: styles.error
+                },
+                /*#__PURE__*/ _react["default"].createElement(
+                  _head["default"],
+                  null,
+                  /*#__PURE__*/ _react["default"].createElement(
+                    "title",
+                    null,
+                    statusCode,
+                    ": ",
+                    title
+                  )
+                ),
+                /*#__PURE__*/ _react["default"].createElement(
+                  "div",
+                  null,
+                  /*#__PURE__*/ _react["default"].createElement("style", {
+                    dangerouslySetInnerHTML: {
+                      __html: "body { margin: 0 }"
+                    }
+                  }),
+                  statusCode
+                    ? /*#__PURE__*/ _react["default"].createElement(
+                        "h1",
+                        {
+                          style: styles.h1
+                        },
+                        statusCode
+                      )
+                    : null,
+                  /*#__PURE__*/ _react["default"].createElement(
+                    "div",
+                    {
+                      style: styles.desc
+                    },
+                    /*#__PURE__*/ _react["default"].createElement(
+                      "h2",
+                      {
+                        style: styles.h2
+                      },
+                      title,
+                      "."
+                    )
+                  )
+                )
+              );
+            }
+          }
+        ]);
+
+        return Error;
+      })(_react["default"].Component);
+
+      exports["default"] = Error;
+      Error.displayName = "ErrorPage";
+      Error.getInitialProps = _getInitialProps;
+      Error.origGetInitialProps = _getInitialProps;
+      var styles = {
+        error: {
+          color: "#000",
+          background: "#fff",
+          fontFamily:
+            '-apple-system, BlinkMacSystemFont, Roboto, "Segoe UI", "Fira Sans", Avenir, "Helvetica Neue", "Lucida Grande", sans-serif',
+          height: "100vh",
+          textAlign: "center",
+          display: "flex",
+          flexDirection: "column",
+          alignItems: "center",
+          justifyContent: "center"
+        },
+        desc: {
+          display: "inline-block",
+          textAlign: "left",
+          lineHeight: "49px",
+          height: "49px",
+          verticalAlign: "middle"
+        },
+        h1: {
+          display: "inline-block",
+          borderRight: "1px solid rgba(0, 0, 0,.3)",
+          margin: 0,
+          marginRight: "20px",
+          padding: "10px 23px 10px 0",
+          fontSize: "24px",
+          fontWeight: 500,
+          verticalAlign: "top"
+        },
+        h2: {
+          fontSize: "14px",
+          fontWeight: "normal",
+          lineHeight: "inherit",
+          margin: 0,
+          padding: 0
+        }
+      };
+
+      /***/
+    },
+
+    /***/ "04ac": /***/ function(module, exports, __webpack_require__) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/_error",
+        function() {
+          return __webpack_require__("/a9y");
+        }
+      ]);
+
+      /***/
+    },
+
+    /***/ "7W2i": /***/ function(module, exports, __webpack_require__) {
+      var setPrototypeOf = __webpack_require__("SksO");
+
+      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;
+
+      /***/
+    },
+
+    /***/ "8Kt/": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.defaultHead = defaultHead;
+      exports["default"] = void 0;
+
+      var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
+
+      var _sideEffect = _interopRequireDefault(__webpack_require__("Xuae"));
+
+      var _ampContext = __webpack_require__("lwAK");
+
+      var _headManagerContext = __webpack_require__("FYa8");
+
+      var _amp = __webpack_require__("/0+H");
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      function _getRequireWildcardCache() {
+        if (typeof WeakMap !== "function") return null;
+        var cache = new WeakMap();
+
+        _getRequireWildcardCache = function _getRequireWildcardCache() {
+          return cache;
+        };
+
+        return cache;
+      }
+
+      function _interopRequireWildcard(obj) {
+        if (obj && obj.__esModule) {
+          return obj;
+        }
+
+        if (
+          obj === null ||
+          (typeof obj !== "object" && typeof obj !== "function")
+        ) {
+          return {
+            default: obj
+          };
+        }
+
+        var cache = _getRequireWildcardCache();
+
+        if (cache && cache.has(obj)) {
+          return cache.get(obj);
+        }
+
+        var newObj = {};
+        var hasPropertyDescriptor =
+          Object.defineProperty && Object.getOwnPropertyDescriptor;
+
+        for (var key in obj) {
+          if (Object.prototype.hasOwnProperty.call(obj, key)) {
+            var desc = hasPropertyDescriptor
+              ? Object.getOwnPropertyDescriptor(obj, key)
+              : null;
+
+            if (desc && (desc.get || desc.set)) {
+              Object.defineProperty(newObj, key, desc);
+            } else {
+              newObj[key] = obj[key];
+            }
+          }
+        }
+
+        newObj["default"] = obj;
+
+        if (cache) {
+          cache.set(obj, newObj);
+        }
+
+        return newObj;
+      }
+
+      function defaultHead() {
+        var inAmpMode =
+          arguments.length > 0 && arguments[0] !== undefined
+            ? arguments[0]
+            : false;
+        var head = [
+          /*#__PURE__*/ _react["default"].createElement("meta", {
+            charSet: "utf-8"
+          })
+        ];
+
+        if (!inAmpMode) {
+          head.push(
+            /*#__PURE__*/ _react["default"].createElement("meta", {
+              name: "viewport",
+              content: "width=device-width"
+            })
+          );
+        }
+
+        return head;
+      }
+
+      function onlyReactElement(list, child) {
+        // React children can be "string" or "number" in this case we ignore them for backwards compat
+        if (typeof child === "string" || typeof child === "number") {
+          return list;
+        } // Adds support for React.Fragment
+
+        if (child.type === _react["default"].Fragment) {
+          return list.concat(
+            _react["default"].Children.toArray(child.props.children).reduce(
+              function(fragmentList, fragmentChild) {
+                if (
+                  typeof fragmentChild === "string" ||
+                  typeof fragmentChild === "number"
+                ) {
+                  return fragmentList;
+                }
+
+                return fragmentList.concat(fragmentChild);
+              },
+              []
+            )
+          );
+        }
+
+        return list.concat(child);
+      }
+
+      var METATYPES = ["name", "httpEquiv", "charSet", "itemProp"];
+      /*
+returns a function for filtering head child elements
+which shouldn't be duplicated, like <title/>
+Also adds support for deduplicated `key` properties
+*/
+
+      function unique() {
+        var keys = new Set();
+        var tags = new Set();
+        var metaTypes = new Set();
+        var metaCategories = {};
+        return function(h) {
+          var isUnique = 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)) {
+              isUnique = false;
+            } else {
+              keys.add(key);
+            }
+          } // eslint-disable-next-line default-case
+
+          switch (h.type) {
+            case "title":
+            case "base":
+              if (tags.has(h.type)) {
+                isUnique = false;
+              } else {
+                tags.add(h.type);
+              }
+
+              break;
+
+            case "meta":
+              for (var i = 0, len = METATYPES.length; i < len; i++) {
+                var metatype = METATYPES[i];
+                if (!h.props.hasOwnProperty(metatype)) continue;
+
+                if (metatype === "charSet") {
+                  if (metaTypes.has(metatype)) {
+                    isUnique = false;
+                  } else {
+                    metaTypes.add(metatype);
+                  }
+                } else {
+                  var category = h.props[metatype];
+                  var categories = metaCategories[metatype] || new Set();
+
+                  if (categories.has(category)) {
+                    isUnique = false;
+                  } else {
+                    categories.add(category);
+                    metaCategories[metatype] = categories;
+                  }
+                }
+              }
+
+              break;
+          }
+
+          return isUnique;
+        };
+      }
+      /**
+       *
+       * @param headElements List of multiple <Head> instances
+       */
+
+      function reduceComponents(headElements, props) {
+        return headElements
+          .reduce(function(list, headElement) {
+            var headElementChildren = _react["default"].Children.toArray(
+              headElement.props.children
+            );
+
+            return list.concat(headElementChildren);
+          }, [])
+          .reduce(onlyReactElement, [])
+          .reverse()
+          .concat(defaultHead(props.inAmpMode))
+          .filter(unique())
+          .reverse()
+          .map(function(c, i) {
+            var key = c.key || i;
+            return _react["default"].cloneElement(c, {
+              key: key
+            });
+          });
+      }
+      /**
+       * This component injects elements to `<head>` of your page.
+       * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
+       */
+
+      function Head(_ref) {
+        var children = _ref.children;
+        var ampState = (0, _react.useContext)(_ampContext.AmpStateContext);
+        var headManager = (0, _react.useContext)(
+          _headManagerContext.HeadManagerContext
+        );
+        return /*#__PURE__*/ _react["default"].createElement(
+          _sideEffect["default"],
+          {
+            reduceComponentsToState: reduceComponents,
+            headManager: headManager,
+            inAmpMode: (0, _amp.isInAmpMode)(ampState)
+          },
+          children
+        );
+      } // TODO: Remove in the next major release
+
+      Head.rewind = function() {};
+
+      var _default = Head;
+      exports["default"] = _default;
+
+      /***/
+    },
+
+    /***/ Bnag: /***/ function(module, exports) {
+      function _nonIterableSpread() {
+        throw new TypeError(
+          "Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
+        );
+      }
+
+      module.exports = _nonIterableSpread;
+
+      /***/
+    },
+
+    /***/ EbDI: /***/ function(module, exports) {
+      function _iterableToArray(iter) {
+        if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter))
+          return Array.from(iter);
+      }
+
+      module.exports = _iterableToArray;
+
+      /***/
+    },
+
+    /***/ FYa8: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.HeadManagerContext = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      var HeadManagerContext = _react["default"].createContext({});
+
+      exports.HeadManagerContext = HeadManagerContext;
+
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ Ijbi: /***/ function(module, exports, __webpack_require__) {
+      var arrayLikeToArray = __webpack_require__("WkPL");
+
+      function _arrayWithoutHoles(arr) {
+        if (Array.isArray(arr)) return arrayLikeToArray(arr);
+      }
+
+      module.exports = _arrayWithoutHoles;
+
+      /***/
+    },
+
+    /***/ Nsbk: /***/ function(module, exports) {
+      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;
+
+      /***/
+    },
+
+    /***/ PJYZ: /***/ 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;
+
+      /***/
+    },
+
+    /***/ Qetd: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+      var assign = Object.assign.bind(Object);
+      module.exports = assign;
+      module.exports.default = module.exports;
+      //# sourceMappingURL=object-assign.js.map
+
+      /***/
+    },
+
+    /***/ RIqP: /***/ function(module, exports, __webpack_require__) {
+      var arrayWithoutHoles = __webpack_require__("Ijbi");
+
+      var iterableToArray = __webpack_require__("EbDI");
+
+      var unsupportedIterableToArray = __webpack_require__("ZhPi");
+
+      var nonIterableSpread = __webpack_require__("Bnag");
+
+      function _toConsumableArray(arr) {
+        return (
+          arrayWithoutHoles(arr) ||
+          iterableToArray(arr) ||
+          unsupportedIterableToArray(arr) ||
+          nonIterableSpread()
+        );
+      }
+
+      module.exports = _toConsumableArray;
+
+      /***/
+    },
+
+    /***/ SksO: /***/ function(module, exports) {
+      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;
+
+      /***/
+    },
+
+    /***/ TqRt: /***/ function(module, exports) {
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      module.exports = _interopRequireDefault;
+
+      /***/
+    },
+
+    /***/ W8MJ: /***/ function(module, exports) {
+      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;
+          Object.defineProperty(target, descriptor.key, descriptor);
+        }
+      }
+
+      function _createClass(Constructor, protoProps, staticProps) {
+        if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+        if (staticProps) _defineProperties(Constructor, staticProps);
+        return Constructor;
+      }
+
+      module.exports = _createClass;
+
+      /***/
+    },
+
+    /***/ WkPL: /***/ function(module, exports) {
+      function _arrayLikeToArray(arr, len) {
+        if (len == null || len > arr.length) len = arr.length;
+
+        for (var i = 0, arr2 = new Array(len); i < len; i++) {
+          arr2[i] = arr[i];
+        }
+
+        return arr2;
+      }
+
+      module.exports = _arrayLikeToArray;
+
+      /***/
+    },
+
+    /***/ Xuae: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _toConsumableArray = __webpack_require__("RIqP");
+
+      var _classCallCheck = __webpack_require__("lwsE");
+
+      var _createClass = __webpack_require__("W8MJ");
+
+      var _assertThisInitialized = __webpack_require__("PJYZ");
+
+      var _inherits = __webpack_require__("7W2i");
+
+      var _possibleConstructorReturn = __webpack_require__("a1gu");
+
+      var _getPrototypeOf = __webpack_require__("Nsbk");
+
+      function _createSuper(Derived) {
+        var hasNativeReflectConstruct = _isNativeReflectConstruct();
+        return function _createSuperInternal() {
+          var Super = _getPrototypeOf(Derived),
+            result;
+          if (hasNativeReflectConstruct) {
+            var NewTarget = _getPrototypeOf(this).constructor;
+            result = Reflect.construct(Super, arguments, NewTarget);
+          } else {
+            result = Super.apply(this, arguments);
+          }
+          return _possibleConstructorReturn(this, result);
+        };
+      }
+
+      function _isNativeReflectConstruct() {
+        if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+        if (Reflect.construct.sham) return false;
+        if (typeof Proxy === "function") return true;
+        try {
+          Date.prototype.toString.call(
+            Reflect.construct(Date, [], function() {})
+          );
+          return true;
+        } catch (e) {
+          return false;
+        }
+      }
+
+      exports.__esModule = true;
+      exports["default"] = void 0;
+
+      var _react = __webpack_require__("q1tI");
+
+      var isServer = false;
+
+      var _default = /*#__PURE__*/ (function(_react$Component) {
+        _inherits(_default, _react$Component);
+
+        var _super = _createSuper(_default);
+
+        function _default(props) {
+          var _this;
+
+          _classCallCheck(this, _default);
+
+          _this = _super.call(this, props);
+          _this._hasHeadManager = void 0;
+
+          _this.emitChange = function() {
+            if (_this._hasHeadManager) {
+              _this.props.headManager.updateHead(
+                _this.props.reduceComponentsToState(
+                  _toConsumableArray(_this.props.headManager.mountedInstances),
+                  _this.props
+                )
+              );
+            }
+          };
+
+          _this._hasHeadManager =
+            _this.props.headManager && _this.props.headManager.mountedInstances;
+
+          if (isServer && _this._hasHeadManager) {
+            _this.props.headManager.mountedInstances.add(
+              _assertThisInitialized(_this)
+            );
+
+            _this.emitChange();
+          }
+
+          return _this;
+        }
+
+        _createClass(_default, [
+          {
+            key: "componentDidMount",
+            value: function componentDidMount() {
+              if (this._hasHeadManager) {
+                this.props.headManager.mountedInstances.add(this);
+              }
+
+              this.emitChange();
+            }
+          },
+          {
+            key: "componentDidUpdate",
+            value: function componentDidUpdate() {
+              this.emitChange();
+            }
+          },
+          {
+            key: "componentWillUnmount",
+            value: function componentWillUnmount() {
+              if (this._hasHeadManager) {
+                this.props.headManager.mountedInstances["delete"](this);
+              }
+
+              this.emitChange();
+            }
+          },
+          {
+            key: "render",
+            value: function render() {
+              return null;
+            }
+          }
+        ]);
+
+        return _default;
+      })(_react.Component);
+
+      exports["default"] = _default;
+
+      /***/
+    },
+
+    /***/ ZhPi: /***/ function(module, exports, __webpack_require__) {
+      var arrayLikeToArray = __webpack_require__("WkPL");
+
+      function _unsupportedIterableToArray(o, minLen) {
+        if (!o) return;
+        if (typeof o === "string") return arrayLikeToArray(o, minLen);
+        var n = Object.prototype.toString.call(o).slice(8, -1);
+        if (n === "Object" && o.constructor) n = o.constructor.name;
+        if (n === "Map" || n === "Set") return Array.from(o);
+        if (
+          n === "Arguments" ||
+          /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
+        )
+          return arrayLikeToArray(o, minLen);
+      }
+
+      module.exports = _unsupportedIterableToArray;
+
+      /***/
+    },
+
+    /***/ a1gu: /***/ function(module, exports, __webpack_require__) {
+      var _typeof = __webpack_require__("cDf5");
+
+      var assertThisInitialized = __webpack_require__("PJYZ");
+
+      function _possibleConstructorReturn(self, call) {
+        if (
+          call &&
+          (_typeof(call) === "object" || typeof call === "function")
+        ) {
+          return call;
+        }
+
+        return assertThisInitialized(self);
+      }
+
+      module.exports = _possibleConstructorReturn;
+
+      /***/
+    },
+
+    /***/ cDf5: /***/ function(module, exports) {
+      function _typeof(obj) {
+        "@babel/helpers - typeof";
+
+        if (
+          typeof Symbol === "function" &&
+          typeof Symbol.iterator === "symbol"
+        ) {
+          module.exports = _typeof = function _typeof(obj) {
+            return typeof obj;
+          };
+        } else {
+          module.exports = _typeof = function _typeof(obj) {
+            return obj &&
+              typeof Symbol === "function" &&
+              obj.constructor === Symbol &&
+              obj !== Symbol.prototype
+              ? "symbol"
+              : typeof obj;
+          };
+        }
+
+        return _typeof(obj);
+      }
+
+      module.exports = _typeof;
+
+      /***/
+    },
+
+    /***/ lwAK: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.AmpStateContext = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      var AmpStateContext = _react["default"].createContext({});
+
+      exports.AmpStateContext = AmpStateContext;
+
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ lwsE: /***/ function(module, exports) {
+      function _classCallCheck(instance, Constructor) {
+        if (!(instance instanceof Constructor)) {
+          throw new TypeError("Cannot call a class as a function");
+        }
+      }
+
+      module.exports = _classCallCheck;
+
+      /***/
+    }
+  },
+  [["04ac", 0, 1]]
+]);
Diff for _error-ce975..c1.module.js
@@ -0,0 +1,585 @@
+(window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
+  [5],
+  {
+    /***/ "/0+H": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.isInAmpMode = isInAmpMode;
+      exports.useAmp = useAmp;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _ampContext = __webpack_require__("lwAK");
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      function isInAmpMode() {
+        var { ampFirst = false, hybrid = false, hasQuery = false } =
+          arguments.length > 0 && arguments[0] !== undefined
+            ? arguments[0]
+            : {};
+        return ampFirst || (hybrid && hasQuery);
+      }
+
+      function useAmp() {
+        // Don't assign the context value to a variable to save bytes
+        return isInAmpMode(
+          _react.default.useContext(_ampContext.AmpStateContext)
+        );
+      }
+
+      /***/
+    },
+
+    /***/ "/a9y": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _interopRequireDefault = __webpack_require__("TqRt");
+
+      exports.__esModule = true;
+      exports.default = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _head = _interopRequireDefault(__webpack_require__("8Kt/"));
+
+      var statusCodes = {
+        400: "Bad Request",
+        404: "This page could not be found",
+        405: "Method Not Allowed",
+        500: "Internal Server Error"
+      };
+
+      function _getInitialProps(_ref) {
+        var { res, err } = _ref;
+        var statusCode =
+          res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
+        return {
+          statusCode
+        };
+      }
+      /**
+       * `Error` component used for handling errors.
+       */
+
+      class Error extends _react.default.Component {
+        render() {
+          var { statusCode } = this.props;
+          var title =
+            this.props.title ||
+            statusCodes[statusCode] ||
+            "An unexpected error has occurred";
+          return /*#__PURE__*/ _react.default.createElement(
+            "div",
+            {
+              style: styles.error
+            },
+            /*#__PURE__*/ _react.default.createElement(
+              _head.default,
+              null,
+              /*#__PURE__*/ _react.default.createElement(
+                "title",
+                null,
+                statusCode,
+                ": ",
+                title
+              )
+            ),
+            /*#__PURE__*/ _react.default.createElement(
+              "div",
+              null,
+              /*#__PURE__*/ _react.default.createElement("style", {
+                dangerouslySetInnerHTML: {
+                  __html: "body { margin: 0 }"
+                }
+              }),
+              statusCode
+                ? /*#__PURE__*/ _react.default.createElement(
+                    "h1",
+                    {
+                      style: styles.h1
+                    },
+                    statusCode
+                  )
+                : null,
+              /*#__PURE__*/ _react.default.createElement(
+                "div",
+                {
+                  style: styles.desc
+                },
+                /*#__PURE__*/ _react.default.createElement(
+                  "h2",
+                  {
+                    style: styles.h2
+                  },
+                  title,
+                  "."
+                )
+              )
+            )
+          );
+        }
+      }
+
+      exports.default = Error;
+      Error.displayName = "ErrorPage";
+      Error.getInitialProps = _getInitialProps;
+      Error.origGetInitialProps = _getInitialProps;
+      var styles = {
+        error: {
+          color: "#000",
+          background: "#fff",
+          fontFamily:
+            '-apple-system, BlinkMacSystemFont, Roboto, "Segoe UI", "Fira Sans", Avenir, "Helvetica Neue", "Lucida Grande", sans-serif',
+          height: "100vh",
+          textAlign: "center",
+          display: "flex",
+          flexDirection: "column",
+          alignItems: "center",
+          justifyContent: "center"
+        },
+        desc: {
+          display: "inline-block",
+          textAlign: "left",
+          lineHeight: "49px",
+          height: "49px",
+          verticalAlign: "middle"
+        },
+        h1: {
+          display: "inline-block",
+          borderRight: "1px solid rgba(0, 0, 0,.3)",
+          margin: 0,
+          marginRight: "20px",
+          padding: "10px 23px 10px 0",
+          fontSize: "24px",
+          fontWeight: 500,
+          verticalAlign: "top"
+        },
+        h2: {
+          fontSize: "14px",
+          fontWeight: "normal",
+          lineHeight: "inherit",
+          margin: 0,
+          padding: 0
+        }
+      };
+
+      /***/
+    },
+
+    /***/ "04ac": /***/ function(module, exports, __webpack_require__) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/_error",
+        function() {
+          return __webpack_require__("/a9y");
+        }
+      ]);
+
+      /***/
+    },
+
+    /***/ "8Kt/": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.defaultHead = defaultHead;
+      exports.default = void 0;
+
+      var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
+
+      var _sideEffect = _interopRequireDefault(__webpack_require__("Xuae"));
+
+      var _ampContext = __webpack_require__("lwAK");
+
+      var _headManagerContext = __webpack_require__("FYa8");
+
+      var _amp = __webpack_require__("/0+H");
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      function _getRequireWildcardCache() {
+        if (typeof WeakMap !== "function") return null;
+        var cache = new WeakMap();
+
+        _getRequireWildcardCache = function _getRequireWildcardCache() {
+          return cache;
+        };
+
+        return cache;
+      }
+
+      function _interopRequireWildcard(obj) {
+        if (obj && obj.__esModule) {
+          return obj;
+        }
+
+        if (
+          obj === null ||
+          (typeof obj !== "object" && typeof obj !== "function")
+        ) {
+          return {
+            default: obj
+          };
+        }
+
+        var cache = _getRequireWildcardCache();
+
+        if (cache && cache.has(obj)) {
+          return cache.get(obj);
+        }
+
+        var newObj = {};
+        var hasPropertyDescriptor =
+          Object.defineProperty && Object.getOwnPropertyDescriptor;
+
+        for (var key in obj) {
+          if (Object.prototype.hasOwnProperty.call(obj, key)) {
+            var desc = hasPropertyDescriptor
+              ? Object.getOwnPropertyDescriptor(obj, key)
+              : null;
+
+            if (desc && (desc.get || desc.set)) {
+              Object.defineProperty(newObj, key, desc);
+            } else {
+              newObj[key] = obj[key];
+            }
+          }
+        }
+
+        newObj.default = obj;
+
+        if (cache) {
+          cache.set(obj, newObj);
+        }
+
+        return newObj;
+      }
+
+      function defaultHead() {
+        var inAmpMode =
+          arguments.length > 0 && arguments[0] !== undefined
+            ? arguments[0]
+            : false;
+        var head = [
+          /*#__PURE__*/ _react.default.createElement("meta", {
+            charSet: "utf-8"
+          })
+        ];
+
+        if (!inAmpMode) {
+          head.push(
+            /*#__PURE__*/ _react.default.createElement("meta", {
+              name: "viewport",
+              content: "width=device-width"
+            })
+          );
+        }
+
+        return head;
+      }
+
+      function onlyReactElement(list, child) {
+        // React children can be "string" or "number" in this case we ignore them for backwards compat
+        if (typeof child === "string" || typeof child === "number") {
+          return list;
+        } // Adds support for React.Fragment
+
+        if (child.type === _react.default.Fragment) {
+          return list.concat(
+            _react.default.Children.toArray(child.props.children).reduce(
+              (fragmentList, fragmentChild) => {
+                if (
+                  typeof fragmentChild === "string" ||
+                  typeof fragmentChild === "number"
+                ) {
+                  return fragmentList;
+                }
+
+                return fragmentList.concat(fragmentChild);
+              },
+              []
+            )
+          );
+        }
+
+        return list.concat(child);
+      }
+
+      var METATYPES = ["name", "httpEquiv", "charSet", "itemProp"];
+      /*
+returns a function for filtering head child elements
+which shouldn't be duplicated, like <title/>
+Also adds support for deduplicated `key` properties
+*/
+
+      function unique() {
+        var keys = new Set();
+        var tags = new Set();
+        var metaTypes = new Set();
+        var metaCategories = {};
+        return h => {
+          var isUnique = 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)) {
+              isUnique = false;
+            } else {
+              keys.add(key);
+            }
+          } // eslint-disable-next-line default-case
+
+          switch (h.type) {
+            case "title":
+            case "base":
+              if (tags.has(h.type)) {
+                isUnique = false;
+              } else {
+                tags.add(h.type);
+              }
+
+              break;
+
+            case "meta":
+              for (var i = 0, len = METATYPES.length; i < len; i++) {
+                var metatype = METATYPES[i];
+                if (!h.props.hasOwnProperty(metatype)) continue;
+
+                if (metatype === "charSet") {
+                  if (metaTypes.has(metatype)) {
+                    isUnique = false;
+                  } else {
+                    metaTypes.add(metatype);
+                  }
+                } else {
+                  var category = h.props[metatype];
+                  var categories = metaCategories[metatype] || new Set();
+
+                  if (categories.has(category)) {
+                    isUnique = false;
+                  } else {
+                    categories.add(category);
+                    metaCategories[metatype] = categories;
+                  }
+                }
+              }
+
+              break;
+          }
+
+          return isUnique;
+        };
+      }
+      /**
+       *
+       * @param headElements List of multiple <Head> instances
+       */
+
+      function reduceComponents(headElements, props) {
+        return headElements
+          .reduce((list, headElement) => {
+            var headElementChildren = _react.default.Children.toArray(
+              headElement.props.children
+            );
+
+            return list.concat(headElementChildren);
+          }, [])
+          .reduce(onlyReactElement, [])
+          .reverse()
+          .concat(defaultHead(props.inAmpMode))
+          .filter(unique())
+          .reverse()
+          .map((c, i) => {
+            var key = c.key || i;
+            return _react.default.cloneElement(c, {
+              key
+            });
+          });
+      }
+      /**
+       * This component injects elements to `<head>` of your page.
+       * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
+       */
+
+      function Head(_ref) {
+        var { children } = _ref;
+        var ampState = (0, _react.useContext)(_ampContext.AmpStateContext);
+        var headManager = (0, _react.useContext)(
+          _headManagerContext.HeadManagerContext
+        );
+        return /*#__PURE__*/ _react.default.createElement(
+          _sideEffect.default,
+          {
+            reduceComponentsToState: reduceComponents,
+            headManager: headManager,
+            inAmpMode: (0, _amp.isInAmpMode)(ampState)
+          },
+          children
+        );
+      } // TODO: Remove in the next major release
+
+      Head.rewind = () => {};
+
+      var _default = Head;
+      exports.default = _default;
+
+      /***/
+    },
+
+    /***/ FYa8: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.HeadManagerContext = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      var HeadManagerContext = _react.default.createContext({});
+
+      exports.HeadManagerContext = HeadManagerContext;
+
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ Qetd: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+      var assign = Object.assign.bind(Object);
+      module.exports = assign;
+      module.exports.default = module.exports;
+      //# sourceMappingURL=object-assign.js.map
+
+      /***/
+    },
+
+    /***/ TqRt: /***/ function(module, exports) {
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      module.exports = _interopRequireDefault;
+
+      /***/
+    },
+
+    /***/ Xuae: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.default = void 0;
+
+      var _react = __webpack_require__("q1tI");
+
+      var isServer = false;
+
+      class _default extends _react.Component {
+        constructor(props) {
+          super(props);
+          this._hasHeadManager = void 0;
+
+          this.emitChange = () => {
+            if (this._hasHeadManager) {
+              this.props.headManager.updateHead(
+                this.props.reduceComponentsToState(
+                  [...this.props.headManager.mountedInstances],
+                  this.props
+                )
+              );
+            }
+          };
+
+          this._hasHeadManager =
+            this.props.headManager && this.props.headManager.mountedInstances;
+
+          if (isServer && this._hasHeadManager) {
+            this.props.headManager.mountedInstances.add(this);
+            this.emitChange();
+          }
+        }
+
+        componentDidMount() {
+          if (this._hasHeadManager) {
+            this.props.headManager.mountedInstances.add(this);
+          }
+
+          this.emitChange();
+        }
+
+        componentDidUpdate() {
+          this.emitChange();
+        }
+
+        componentWillUnmount() {
+          if (this._hasHeadManager) {
+            this.props.headManager.mountedInstances.delete(this);
+          }
+
+          this.emitChange();
+        }
+
+        render() {
+          return null;
+        }
+      }
+
+      exports.default = _default;
+
+      /***/
+    },
+
+    /***/ lwAK: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.AmpStateContext = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      var AmpStateContext = _react.default.createContext({});
+
+      exports.AmpStateContext = AmpStateContext;
+
+      if (false) {
+      }
+
+      /***/
+    }
+  },
+  [["04ac", 0, 1]]
+]);

@ijjk

This comment has been minimized.

@ijjk
Copy link
Member

ijjk commented Jul 16, 2020

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall decrease ✓
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
buildDuration 14.3s 14.7s ⚠️ +443ms
nodeModulesSize 66.5 MB 66.5 MB -1.29 kB
Page Load Tests Overall increase ✓
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
/ failed reqs 0 0
/ total time (seconds) 2.215 1.972 -0.24
/ avg req/sec 1128.59 1267.62 +139.03
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.164 1.156 -0.01
/error-in-render avg req/sec 2148.63 2163.26 +14.63
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
main-HASH.js gzip 6.72 kB 6.72 kB
webpack-HASH.js gzip 751 B 751 B
19b7e98f51cc..e4c5.js gzip 9.72 kB 9.72 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
polyfills-HASH.js gzip N/A 30.8 kB N/A
Overall change 56.3 kB 87.2 kB ⚠️ +30.8 kB
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
main-HASH.module.js gzip 5.8 kB 5.79 kB -1 B
webpack-HASH..dule.js gzip 751 B 751 B
19b7e98f51cc..dule.js gzip 6.12 kB 6.12 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
polyfills-05..dule.js gzip N/A 30.8 kB N/A
Overall change 51.8 kB 82.6 kB ⚠️ +30.8 kB
Legacy Client Bundles (polyfills) Overall decrease ✓
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
polyfills-HASH.js gzip 30.8 kB N/A N/A
Overall change 30.8 kB 0 B -30.8 kB
Client Pages Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
_app-8f5f611..1f7b.js gzip N/A 1.28 kB N/A
_error-8e69b..8695.js gzip N/A 3.41 kB N/A
hooks-f7f3d0..7465.js gzip N/A 887 B N/A
index-08fb3f..c0e9.js gzip N/A 227 B N/A
link-ddd176e..5566.js gzip N/A 1.29 kB N/A
routerDirect..8aa1.js gzip N/A 284 B N/A
withRouter-f..e777.js gzip N/A 284 B N/A
Overall change 0 B 7.66 kB ⚠️ +7.66 kB
Client Pages Modern Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
_app-669dbe5..dule.js gzip N/A 626 B N/A
_error-663e6..dule.js gzip N/A 2.24 kB N/A
hooks-805c40..dule.js gzip N/A 387 B N/A
index-6ba5a4..dule.js gzip N/A 226 B N/A
link-69bc264..dule.js gzip N/A 1.25 kB N/A
routerDirect..dule.js gzip N/A 284 B N/A
withRouter-d..dule.js gzip N/A 282 B N/A
Overall change 0 B 5.29 kB ⚠️ +5.29 kB
Client Build Manifests Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
_buildManifest.js gzip 267 B 275 B ⚠️ +8 B
_buildManife..dule.js gzip 273 B 281 B ⚠️ +8 B
Overall change 540 B 556 B ⚠️ +16 B
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
index.html gzip 954 B 946 B -8 B
link.html gzip 961 B 953 B -8 B
withRouter.html gzip 947 B 939 B -8 B
Overall change 2.86 kB 2.84 kB -24 B

Diffs

Diff for _buildManifest.js
@@ -1,11 +1,17 @@
 self.__BUILD_MANIFEST = {
-  "/": ["static\u002Fpages\u002Findex-f35cd1774d910f5523ed.js"],
-  "/_error": ["static\u002Fpages\u002F_error-f39e6723c6acde17325a.js"],
-  "/hooks": ["static\u002Fpages\u002Fhooks-9e216cd51bf04b309e08.js"],
-  "/link": ["static\u002Fpages\u002Flink-384139ace1609fd05ce0.js"],
+  "/": ["static\u002Fchunks\u002Fpages\u002Findex-283eed3c1520dcc26e8d.js"],
+  "/_error": [
+    "static\u002Fchunks\u002Fpages\u002F_error-4a37fa8cee3d5cd40293.js"
+  ],
+  "/hooks": [
+    "static\u002Fchunks\u002Fpages\u002Fhooks-8001dc76075832ee8949.js"
+  ],
+  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-47d000d5b33907ab0cd4.js"],
   "/routerDirect": [
-    "static\u002Fpages\u002FrouterDirect-b95d3f54c75949a43da6.js"
+    "static\u002Fchunks\u002Fpages\u002FrouterDirect-2e9bfd441bd88cd3382e.js"
   ],
-  "/withRouter": ["static\u002Fpages\u002FwithRouter-3e85450022aeb0cab2be.js"]
+  "/withRouter": [
+    "static\u002Fchunks\u002Fpages\u002FwithRouter-9af1d72bd996729e701e.js"
+  ]
 };
 self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB();
Diff for _buildManifest.module.js
@@ -1,13 +1,21 @@
 self.__BUILD_MANIFEST = {
-  "/": ["static\u002Fpages\u002Findex-da343bca3b67f1bcf42d.module.js"],
-  "/_error": ["static\u002Fpages\u002F_error-b3c4c3f8dbb1417657e6.module.js"],
-  "/hooks": ["static\u002Fpages\u002Fhooks-dc8f274035a2839a1e61.module.js"],
-  "/link": ["static\u002Fpages\u002Flink-481c9ef0fea508bf4d17.module.js"],
+  "/": [
+    "static\u002Fchunks\u002Fpages\u002Findex-dc79232991b9d18c3260.module.js"
+  ],
+  "/_error": [
+    "static\u002Fchunks\u002Fpages\u002F_error-ce975ebbbf8cd0d465c1.module.js"
+  ],
+  "/hooks": [
+    "static\u002Fchunks\u002Fpages\u002Fhooks-56fa58a6f0993d7d36d7.module.js"
+  ],
+  "/link": [
+    "static\u002Fchunks\u002Fpages\u002Flink-3c6dc1a0ec3e820dcde5.module.js"
+  ],
   "/routerDirect": [
-    "static\u002Fpages\u002FrouterDirect-c62f258dff7fece0a732.module.js"
+    "static\u002Fchunks\u002Fpages\u002FrouterDirect-368af3dfef3c9cd99dc3.module.js"
   ],
   "/withRouter": [
-    "static\u002Fpages\u002FwithRouter-6fd38b55e6cdc818c01b.module.js"
+    "static\u002Fchunks\u002Fpages\u002FwithRouter-654e4c0aa8f6a4177d77.module.js"
   ]
 };
 self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB();
Diff for _app-7512045..d9376e2ca.js
@@ -0,0 +1,321 @@
+_N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
+  [4],
+  {
+    /***/ 0: /***/ function(module, exports, __webpack_require__) {
+      __webpack_require__("e9+W");
+      module.exports = __webpack_require__("nOHt");
+
+      /***/
+    },
+
+    /***/ "7W2i": /***/ function(module, exports, __webpack_require__) {
+      var setPrototypeOf = __webpack_require__("SksO");
+
+      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;
+
+      /***/
+    },
+
+    /***/ B5Ud: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _regeneratorRuntime = __webpack_require__("o0o1");
+
+      var _classCallCheck = __webpack_require__("lwsE");
+
+      var _createClass = __webpack_require__("W8MJ");
+
+      var _inherits = __webpack_require__("7W2i");
+
+      var _possibleConstructorReturn = __webpack_require__("a1gu");
+
+      var _getPrototypeOf = __webpack_require__("Nsbk");
+
+      var _asyncToGenerator = __webpack_require__("yXPU");
+
+      function _createSuper(Derived) {
+        var hasNativeReflectConstruct = _isNativeReflectConstruct();
+        return function _createSuperInternal() {
+          var Super = _getPrototypeOf(Derived),
+            result;
+          if (hasNativeReflectConstruct) {
+            var NewTarget = _getPrototypeOf(this).constructor;
+            result = Reflect.construct(Super, arguments, NewTarget);
+          } else {
+            result = Super.apply(this, arguments);
+          }
+          return _possibleConstructorReturn(this, result);
+        };
+      }
+
+      function _isNativeReflectConstruct() {
+        if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+        if (Reflect.construct.sham) return false;
+        if (typeof Proxy === "function") return true;
+        try {
+          Date.prototype.toString.call(
+            Reflect.construct(Date, [], function() {})
+          );
+          return true;
+        } catch (e) {
+          return false;
+        }
+      }
+
+      var _interopRequireDefault = __webpack_require__("TqRt");
+
+      exports.__esModule = true;
+      exports.Container = Container;
+      exports.createUrl = createUrl;
+      exports["default"] = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _utils = __webpack_require__("g/15");
+
+      exports.AppInitialProps = _utils.AppInitialProps;
+      exports.NextWebVitalsMetric = _utils.NextWebVitalsMetric;
+      /**
+       * `App` component is used for initialize of pages. It allows for overwriting and full control of the `page` initialization.
+       * This allows for keeping state between navigation, custom error handling, injecting additional data.
+       */
+
+      function appGetInitialProps(_x) {
+        return _appGetInitialProps.apply(this, arguments);
+      }
+
+      function _appGetInitialProps() {
+        _appGetInitialProps = _asyncToGenerator(
+          /*#__PURE__*/ _regeneratorRuntime.mark(function _callee(_ref) {
+            var Component, ctx, pageProps;
+            return _regeneratorRuntime.wrap(function _callee$(_context) {
+              while (1) {
+                switch ((_context.prev = _context.next)) {
+                  case 0:
+                    (Component = _ref.Component), (ctx = _ref.ctx);
+                    _context.next = 3;
+                    return (0, _utils.loadGetInitialProps)(Component, ctx);
+
+                  case 3:
+                    pageProps = _context.sent;
+                    return _context.abrupt("return", {
+                      pageProps: pageProps
+                    });
+
+                  case 5:
+                  case "end":
+                    return _context.stop();
+                }
+              }
+            }, _callee);
+          })
+        );
+        return _appGetInitialProps.apply(this, arguments);
+      }
+
+      var App = /*#__PURE__*/ (function(_react$default$Compon) {
+        _inherits(App, _react$default$Compon);
+
+        var _super = _createSuper(App);
+
+        function App() {
+          _classCallCheck(this, App);
+
+          return _super.apply(this, arguments);
+        }
+
+        _createClass(App, [
+          {
+            key: "componentDidCatch",
+            // Kept here for backwards compatibility.
+            // When someone ended App they could call `super.componentDidCatch`.
+            // @deprecated This method is no longer needed. Errors are caught at the top level
+            value: function componentDidCatch(error, _errorInfo) {
+              throw error;
+            }
+          },
+          {
+            key: "render",
+            value: function render() {
+              var _this$props = this.props,
+                router = _this$props.router,
+                Component = _this$props.Component,
+                pageProps = _this$props.pageProps,
+                __N_SSG = _this$props.__N_SSG,
+                __N_SSP = _this$props.__N_SSP;
+              return /*#__PURE__*/ _react["default"].createElement(
+                Component,
+                Object.assign(
+                  {},
+                  pageProps, // we don't add the legacy URL prop if it's using non-legacy
+                  // methods like getStaticProps and getServerSideProps
+                  !(__N_SSG || __N_SSP)
+                    ? {
+                        url: createUrl(router)
+                      }
+                    : {}
+                )
+              );
+            }
+          }
+        ]);
+
+        return App;
+      })(_react["default"].Component);
+
+      exports["default"] = App;
+      App.origGetInitialProps = appGetInitialProps;
+      App.getInitialProps = appGetInitialProps;
+      var warnContainer;
+      var warnUrl;
+
+      if (false) {
+      } // @deprecated noop for now until removal
+
+      function Container(p) {
+        if (false) {
+        }
+        return p.children;
+      }
+
+      function createUrl(router) {
+        // This is to make sure we don't references the router object at call time
+        var pathname = router.pathname,
+          asPath = router.asPath,
+          query = router.query;
+        return {
+          get query() {
+            if (false) {
+            }
+            return query;
+          },
+
+          get pathname() {
+            if (false) {
+            }
+            return pathname;
+          },
+
+          get asPath() {
+            if (false) {
+            }
+            return asPath;
+          },
+
+          back: function back() {
+            if (false) {
+            }
+            router.back();
+          },
+          push: function push(url, as) {
+            if (false) {
+            }
+            return router.push(url, as);
+          },
+          pushTo: function pushTo(href, as) {
+            if (false) {
+            }
+            var pushRoute = as ? href : "";
+            var pushUrl = as || href;
+            return router.push(pushRoute, pushUrl);
+          },
+          replace: function replace(url, as) {
+            if (false) {
+            }
+            return router.replace(url, as);
+          },
+          replaceTo: function replaceTo(href, as) {
+            if (false) {
+            }
+            var replaceRoute = as ? href : "";
+            var replaceUrl = as || href;
+            return router.replace(replaceRoute, replaceUrl);
+          }
+        };
+      }
+
+      /***/
+    },
+
+    /***/ Nsbk: /***/ function(module, exports) {
+      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;
+
+      /***/
+    },
+
+    /***/ PJYZ: /***/ 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;
+
+      /***/
+    },
+
+    /***/ a1gu: /***/ function(module, exports, __webpack_require__) {
+      var _typeof = __webpack_require__("cDf5");
+
+      var assertThisInitialized = __webpack_require__("PJYZ");
+
+      function _possibleConstructorReturn(self, call) {
+        if (
+          call &&
+          (_typeof(call) === "object" || typeof call === "function")
+        ) {
+          return call;
+        }
+
+        return assertThisInitialized(self);
+      }
+
+      module.exports = _possibleConstructorReturn;
+
+      /***/
+    },
+
+    /***/ "e9+W": /***/ function(module, exports, __webpack_require__) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/_app",
+        function() {
+          return __webpack_require__("B5Ud");
+        }
+      ]);
+
+      /***/
+    }
+  },
+  [[0, 0, 1, 2]]
+]);
Diff for _app-9a0d200..cd.module.js
@@ -0,0 +1,150 @@
+(window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
+  [4],
+  {
+    /***/ 0: /***/ function(module, exports, __webpack_require__) {
+      __webpack_require__("e9+W");
+      module.exports = __webpack_require__("nOHt");
+
+      /***/
+    },
+
+    /***/ B5Ud: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _interopRequireDefault = __webpack_require__("TqRt");
+
+      exports.__esModule = true;
+      exports.Container = Container;
+      exports.createUrl = createUrl;
+      exports.default = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _utils = __webpack_require__("g/15");
+
+      exports.AppInitialProps = _utils.AppInitialProps;
+      exports.NextWebVitalsMetric = _utils.NextWebVitalsMetric;
+      /**
+       * `App` component is used for initialize of pages. It allows for overwriting and full control of the `page` initialization.
+       * This allows for keeping state between navigation, custom error handling, injecting additional data.
+       */
+
+      async function appGetInitialProps(_ref) {
+        var { Component, ctx } = _ref;
+        var pageProps = await (0, _utils.loadGetInitialProps)(Component, ctx);
+        return {
+          pageProps
+        };
+      }
+
+      class App extends _react.default.Component {
+        // Kept here for backwards compatibility.
+        // When someone ended App they could call `super.componentDidCatch`.
+        // @deprecated This method is no longer needed. Errors are caught at the top level
+        componentDidCatch(error, _errorInfo) {
+          throw error;
+        }
+
+        render() {
+          var { router, Component, pageProps, __N_SSG, __N_SSP } = this.props;
+          return /*#__PURE__*/ _react.default.createElement(
+            Component,
+            Object.assign(
+              {},
+              pageProps, // we don't add the legacy URL prop if it's using non-legacy
+              // methods like getStaticProps and getServerSideProps
+              !(__N_SSG || __N_SSP)
+                ? {
+                    url: createUrl(router)
+                  }
+                : {}
+            )
+          );
+        }
+      }
+
+      exports.default = App;
+      App.origGetInitialProps = appGetInitialProps;
+      App.getInitialProps = appGetInitialProps;
+      var warnContainer;
+      var warnUrl;
+
+      if (false) {
+      } // @deprecated noop for now until removal
+
+      function Container(p) {
+        if (false) {
+        }
+        return p.children;
+      }
+
+      function createUrl(router) {
+        // This is to make sure we don't references the router object at call time
+        var { pathname, asPath, query } = router;
+        return {
+          get query() {
+            if (false) {
+            }
+            return query;
+          },
+
+          get pathname() {
+            if (false) {
+            }
+            return pathname;
+          },
+
+          get asPath() {
+            if (false) {
+            }
+            return asPath;
+          },
+
+          back: () => {
+            if (false) {
+            }
+            router.back();
+          },
+          push: (url, as) => {
+            if (false) {
+            }
+            return router.push(url, as);
+          },
+          pushTo: (href, as) => {
+            if (false) {
+            }
+            var pushRoute = as ? href : "";
+            var pushUrl = as || href;
+            return router.push(pushRoute, pushUrl);
+          },
+          replace: (url, as) => {
+            if (false) {
+            }
+            return router.replace(url, as);
+          },
+          replaceTo: (href, as) => {
+            if (false) {
+            }
+            var replaceRoute = as ? href : "";
+            var replaceUrl = as || href;
+            return router.replace(replaceRoute, replaceUrl);
+          }
+        };
+      }
+
+      /***/
+    },
+
+    /***/ "e9+W": /***/ function(module, exports, __webpack_require__) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/_app",
+        function() {
+          return __webpack_require__("B5Ud");
+        }
+      ]);
+
+      /***/
+    }
+  },
+  [[0, 0, 1, 2]]
+]);
Diff for _error-4a37f..d5cd40293.js
@@ -0,0 +1,971 @@
+_N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
+  [5],
+  {
+    /***/ "/0+H": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.isInAmpMode = isInAmpMode;
+      exports.useAmp = useAmp;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _ampContext = __webpack_require__("lwAK");
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      function isInAmpMode() {
+        var _ref =
+            arguments.length > 0 && arguments[0] !== undefined
+              ? arguments[0]
+              : {},
+          _ref$ampFirst = _ref.ampFirst,
+          ampFirst = _ref$ampFirst === void 0 ? false : _ref$ampFirst,
+          _ref$hybrid = _ref.hybrid,
+          hybrid = _ref$hybrid === void 0 ? false : _ref$hybrid,
+          _ref$hasQuery = _ref.hasQuery,
+          hasQuery = _ref$hasQuery === void 0 ? false : _ref$hasQuery;
+
+        return ampFirst || (hybrid && hasQuery);
+      }
+
+      function useAmp() {
+        // Don't assign the context value to a variable to save bytes
+        return isInAmpMode(
+          _react["default"].useContext(_ampContext.AmpStateContext)
+        );
+      }
+
+      /***/
+    },
+
+    /***/ "/a9y": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _classCallCheck = __webpack_require__("lwsE");
+
+      var _createClass = __webpack_require__("W8MJ");
+
+      var _inherits = __webpack_require__("7W2i");
+
+      var _possibleConstructorReturn = __webpack_require__("a1gu");
+
+      var _getPrototypeOf = __webpack_require__("Nsbk");
+
+      function _createSuper(Derived) {
+        var hasNativeReflectConstruct = _isNativeReflectConstruct();
+        return function _createSuperInternal() {
+          var Super = _getPrototypeOf(Derived),
+            result;
+          if (hasNativeReflectConstruct) {
+            var NewTarget = _getPrototypeOf(this).constructor;
+            result = Reflect.construct(Super, arguments, NewTarget);
+          } else {
+            result = Super.apply(this, arguments);
+          }
+          return _possibleConstructorReturn(this, result);
+        };
+      }
+
+      function _isNativeReflectConstruct() {
+        if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+        if (Reflect.construct.sham) return false;
+        if (typeof Proxy === "function") return true;
+        try {
+          Date.prototype.toString.call(
+            Reflect.construct(Date, [], function() {})
+          );
+          return true;
+        } catch (e) {
+          return false;
+        }
+      }
+
+      var _interopRequireDefault = __webpack_require__("TqRt");
+
+      exports.__esModule = true;
+      exports["default"] = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _head = _interopRequireDefault(__webpack_require__("8Kt/"));
+
+      var statusCodes = {
+        400: "Bad Request",
+        404: "This page could not be found",
+        405: "Method Not Allowed",
+        500: "Internal Server Error"
+      };
+
+      function _getInitialProps(_ref) {
+        var res = _ref.res,
+          err = _ref.err;
+        var statusCode =
+          res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
+        return {
+          statusCode: statusCode
+        };
+      }
+      /**
+       * `Error` component used for handling errors.
+       */
+
+      var Error = /*#__PURE__*/ (function(_react$default$Compon) {
+        _inherits(Error, _react$default$Compon);
+
+        var _super = _createSuper(Error);
+
+        function Error() {
+          _classCallCheck(this, Error);
+
+          return _super.apply(this, arguments);
+        }
+
+        _createClass(Error, [
+          {
+            key: "render",
+            value: function render() {
+              var statusCode = this.props.statusCode;
+              var title =
+                this.props.title ||
+                statusCodes[statusCode] ||
+                "An unexpected error has occurred";
+              return /*#__PURE__*/ _react["default"].createElement(
+                "div",
+                {
+                  style: styles.error
+                },
+                /*#__PURE__*/ _react["default"].createElement(
+                  _head["default"],
+                  null,
+                  /*#__PURE__*/ _react["default"].createElement(
+                    "title",
+                    null,
+                    statusCode,
+                    ": ",
+                    title
+                  )
+                ),
+                /*#__PURE__*/ _react["default"].createElement(
+                  "div",
+                  null,
+                  /*#__PURE__*/ _react["default"].createElement("style", {
+                    dangerouslySetInnerHTML: {
+                      __html: "body { margin: 0 }"
+                    }
+                  }),
+                  statusCode
+                    ? /*#__PURE__*/ _react["default"].createElement(
+                        "h1",
+                        {
+                          style: styles.h1
+                        },
+                        statusCode
+                      )
+                    : null,
+                  /*#__PURE__*/ _react["default"].createElement(
+                    "div",
+                    {
+                      style: styles.desc
+                    },
+                    /*#__PURE__*/ _react["default"].createElement(
+                      "h2",
+                      {
+                        style: styles.h2
+                      },
+                      title,
+                      "."
+                    )
+                  )
+                )
+              );
+            }
+          }
+        ]);
+
+        return Error;
+      })(_react["default"].Component);
+
+      exports["default"] = Error;
+      Error.displayName = "ErrorPage";
+      Error.getInitialProps = _getInitialProps;
+      Error.origGetInitialProps = _getInitialProps;
+      var styles = {
+        error: {
+          color: "#000",
+          background: "#fff",
+          fontFamily:
+            '-apple-system, BlinkMacSystemFont, Roboto, "Segoe UI", "Fira Sans", Avenir, "Helvetica Neue", "Lucida Grande", sans-serif',
+          height: "100vh",
+          textAlign: "center",
+          display: "flex",
+          flexDirection: "column",
+          alignItems: "center",
+          justifyContent: "center"
+        },
+        desc: {
+          display: "inline-block",
+          textAlign: "left",
+          lineHeight: "49px",
+          height: "49px",
+          verticalAlign: "middle"
+        },
+        h1: {
+          display: "inline-block",
+          borderRight: "1px solid rgba(0, 0, 0,.3)",
+          margin: 0,
+          marginRight: "20px",
+          padding: "10px 23px 10px 0",
+          fontSize: "24px",
+          fontWeight: 500,
+          verticalAlign: "top"
+        },
+        h2: {
+          fontSize: "14px",
+          fontWeight: "normal",
+          lineHeight: "inherit",
+          margin: 0,
+          padding: 0
+        }
+      };
+
+      /***/
+    },
+
+    /***/ "04ac": /***/ function(module, exports, __webpack_require__) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/_error",
+        function() {
+          return __webpack_require__("/a9y");
+        }
+      ]);
+
+      /***/
+    },
+
+    /***/ "7W2i": /***/ function(module, exports, __webpack_require__) {
+      var setPrototypeOf = __webpack_require__("SksO");
+
+      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;
+
+      /***/
+    },
+
+    /***/ "8Kt/": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.defaultHead = defaultHead;
+      exports["default"] = void 0;
+
+      var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
+
+      var _sideEffect = _interopRequireDefault(__webpack_require__("Xuae"));
+
+      var _ampContext = __webpack_require__("lwAK");
+
+      var _headManagerContext = __webpack_require__("FYa8");
+
+      var _amp = __webpack_require__("/0+H");
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      function _getRequireWildcardCache() {
+        if (typeof WeakMap !== "function") return null;
+        var cache = new WeakMap();
+
+        _getRequireWildcardCache = function _getRequireWildcardCache() {
+          return cache;
+        };
+
+        return cache;
+      }
+
+      function _interopRequireWildcard(obj) {
+        if (obj && obj.__esModule) {
+          return obj;
+        }
+
+        if (
+          obj === null ||
+          (typeof obj !== "object" && typeof obj !== "function")
+        ) {
+          return {
+            default: obj
+          };
+        }
+
+        var cache = _getRequireWildcardCache();
+
+        if (cache && cache.has(obj)) {
+          return cache.get(obj);
+        }
+
+        var newObj = {};
+        var hasPropertyDescriptor =
+          Object.defineProperty && Object.getOwnPropertyDescriptor;
+
+        for (var key in obj) {
+          if (Object.prototype.hasOwnProperty.call(obj, key)) {
+            var desc = hasPropertyDescriptor
+              ? Object.getOwnPropertyDescriptor(obj, key)
+              : null;
+
+            if (desc && (desc.get || desc.set)) {
+              Object.defineProperty(newObj, key, desc);
+            } else {
+              newObj[key] = obj[key];
+            }
+          }
+        }
+
+        newObj["default"] = obj;
+
+        if (cache) {
+          cache.set(obj, newObj);
+        }
+
+        return newObj;
+      }
+
+      function defaultHead() {
+        var inAmpMode =
+          arguments.length > 0 && arguments[0] !== undefined
+            ? arguments[0]
+            : false;
+        var head = [
+          /*#__PURE__*/ _react["default"].createElement("meta", {
+            charSet: "utf-8"
+          })
+        ];
+
+        if (!inAmpMode) {
+          head.push(
+            /*#__PURE__*/ _react["default"].createElement("meta", {
+              name: "viewport",
+              content: "width=device-width"
+            })
+          );
+        }
+
+        return head;
+      }
+
+      function onlyReactElement(list, child) {
+        // React children can be "string" or "number" in this case we ignore them for backwards compat
+        if (typeof child === "string" || typeof child === "number") {
+          return list;
+        } // Adds support for React.Fragment
+
+        if (child.type === _react["default"].Fragment) {
+          return list.concat(
+            _react["default"].Children.toArray(child.props.children).reduce(
+              function(fragmentList, fragmentChild) {
+                if (
+                  typeof fragmentChild === "string" ||
+                  typeof fragmentChild === "number"
+                ) {
+                  return fragmentList;
+                }
+
+                return fragmentList.concat(fragmentChild);
+              },
+              []
+            )
+          );
+        }
+
+        return list.concat(child);
+      }
+
+      var METATYPES = ["name", "httpEquiv", "charSet", "itemProp"];
+      /*
+returns a function for filtering head child elements
+which shouldn't be duplicated, like <title/>
+Also adds support for deduplicated `key` properties
+*/
+
+      function unique() {
+        var keys = new Set();
+        var tags = new Set();
+        var metaTypes = new Set();
+        var metaCategories = {};
+        return function(h) {
+          var isUnique = 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)) {
+              isUnique = false;
+            } else {
+              keys.add(key);
+            }
+          } // eslint-disable-next-line default-case
+
+          switch (h.type) {
+            case "title":
+            case "base":
+              if (tags.has(h.type)) {
+                isUnique = false;
+              } else {
+                tags.add(h.type);
+              }
+
+              break;
+
+            case "meta":
+              for (var i = 0, len = METATYPES.length; i < len; i++) {
+                var metatype = METATYPES[i];
+                if (!h.props.hasOwnProperty(metatype)) continue;
+
+                if (metatype === "charSet") {
+                  if (metaTypes.has(metatype)) {
+                    isUnique = false;
+                  } else {
+                    metaTypes.add(metatype);
+                  }
+                } else {
+                  var category = h.props[metatype];
+                  var categories = metaCategories[metatype] || new Set();
+
+                  if (categories.has(category)) {
+                    isUnique = false;
+                  } else {
+                    categories.add(category);
+                    metaCategories[metatype] = categories;
+                  }
+                }
+              }
+
+              break;
+          }
+
+          return isUnique;
+        };
+      }
+      /**
+       *
+       * @param headElements List of multiple <Head> instances
+       */
+
+      function reduceComponents(headElements, props) {
+        return headElements
+          .reduce(function(list, headElement) {
+            var headElementChildren = _react["default"].Children.toArray(
+              headElement.props.children
+            );
+
+            return list.concat(headElementChildren);
+          }, [])
+          .reduce(onlyReactElement, [])
+          .reverse()
+          .concat(defaultHead(props.inAmpMode))
+          .filter(unique())
+          .reverse()
+          .map(function(c, i) {
+            var key = c.key || i;
+            return _react["default"].cloneElement(c, {
+              key: key
+            });
+          });
+      }
+      /**
+       * This component injects elements to `<head>` of your page.
+       * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
+       */
+
+      function Head(_ref) {
+        var children = _ref.children;
+        var ampState = (0, _react.useContext)(_ampContext.AmpStateContext);
+        var headManager = (0, _react.useContext)(
+          _headManagerContext.HeadManagerContext
+        );
+        return /*#__PURE__*/ _react["default"].createElement(
+          _sideEffect["default"],
+          {
+            reduceComponentsToState: reduceComponents,
+            headManager: headManager,
+            inAmpMode: (0, _amp.isInAmpMode)(ampState)
+          },
+          children
+        );
+      } // TODO: Remove in the next major release
+
+      Head.rewind = function() {};
+
+      var _default = Head;
+      exports["default"] = _default;
+
+      /***/
+    },
+
+    /***/ Bnag: /***/ function(module, exports) {
+      function _nonIterableSpread() {
+        throw new TypeError(
+          "Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
+        );
+      }
+
+      module.exports = _nonIterableSpread;
+
+      /***/
+    },
+
+    /***/ EbDI: /***/ function(module, exports) {
+      function _iterableToArray(iter) {
+        if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter))
+          return Array.from(iter);
+      }
+
+      module.exports = _iterableToArray;
+
+      /***/
+    },
+
+    /***/ FYa8: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.HeadManagerContext = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      var HeadManagerContext = _react["default"].createContext({});
+
+      exports.HeadManagerContext = HeadManagerContext;
+
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ Ijbi: /***/ function(module, exports, __webpack_require__) {
+      var arrayLikeToArray = __webpack_require__("WkPL");
+
+      function _arrayWithoutHoles(arr) {
+        if (Array.isArray(arr)) return arrayLikeToArray(arr);
+      }
+
+      module.exports = _arrayWithoutHoles;
+
+      /***/
+    },
+
+    /***/ Nsbk: /***/ function(module, exports) {
+      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;
+
+      /***/
+    },
+
+    /***/ PJYZ: /***/ 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;
+
+      /***/
+    },
+
+    /***/ Qetd: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+      var assign = Object.assign.bind(Object);
+      module.exports = assign;
+      module.exports.default = module.exports;
+      //# sourceMappingURL=object-assign.js.map
+
+      /***/
+    },
+
+    /***/ RIqP: /***/ function(module, exports, __webpack_require__) {
+      var arrayWithoutHoles = __webpack_require__("Ijbi");
+
+      var iterableToArray = __webpack_require__("EbDI");
+
+      var unsupportedIterableToArray = __webpack_require__("ZhPi");
+
+      var nonIterableSpread = __webpack_require__("Bnag");
+
+      function _toConsumableArray(arr) {
+        return (
+          arrayWithoutHoles(arr) ||
+          iterableToArray(arr) ||
+          unsupportedIterableToArray(arr) ||
+          nonIterableSpread()
+        );
+      }
+
+      module.exports = _toConsumableArray;
+
+      /***/
+    },
+
+    /***/ SksO: /***/ function(module, exports) {
+      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;
+
+      /***/
+    },
+
+    /***/ TqRt: /***/ function(module, exports) {
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      module.exports = _interopRequireDefault;
+
+      /***/
+    },
+
+    /***/ W8MJ: /***/ function(module, exports) {
+      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;
+          Object.defineProperty(target, descriptor.key, descriptor);
+        }
+      }
+
+      function _createClass(Constructor, protoProps, staticProps) {
+        if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+        if (staticProps) _defineProperties(Constructor, staticProps);
+        return Constructor;
+      }
+
+      module.exports = _createClass;
+
+      /***/
+    },
+
+    /***/ WkPL: /***/ function(module, exports) {
+      function _arrayLikeToArray(arr, len) {
+        if (len == null || len > arr.length) len = arr.length;
+
+        for (var i = 0, arr2 = new Array(len); i < len; i++) {
+          arr2[i] = arr[i];
+        }
+
+        return arr2;
+      }
+
+      module.exports = _arrayLikeToArray;
+
+      /***/
+    },
+
+    /***/ Xuae: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _toConsumableArray = __webpack_require__("RIqP");
+
+      var _classCallCheck = __webpack_require__("lwsE");
+
+      var _createClass = __webpack_require__("W8MJ");
+
+      var _assertThisInitialized = __webpack_require__("PJYZ");
+
+      var _inherits = __webpack_require__("7W2i");
+
+      var _possibleConstructorReturn = __webpack_require__("a1gu");
+
+      var _getPrototypeOf = __webpack_require__("Nsbk");
+
+      function _createSuper(Derived) {
+        var hasNativeReflectConstruct = _isNativeReflectConstruct();
+        return function _createSuperInternal() {
+          var Super = _getPrototypeOf(Derived),
+            result;
+          if (hasNativeReflectConstruct) {
+            var NewTarget = _getPrototypeOf(this).constructor;
+            result = Reflect.construct(Super, arguments, NewTarget);
+          } else {
+            result = Super.apply(this, arguments);
+          }
+          return _possibleConstructorReturn(this, result);
+        };
+      }
+
+      function _isNativeReflectConstruct() {
+        if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+        if (Reflect.construct.sham) return false;
+        if (typeof Proxy === "function") return true;
+        try {
+          Date.prototype.toString.call(
+            Reflect.construct(Date, [], function() {})
+          );
+          return true;
+        } catch (e) {
+          return false;
+        }
+      }
+
+      exports.__esModule = true;
+      exports["default"] = void 0;
+
+      var _react = __webpack_require__("q1tI");
+
+      var isServer = false;
+
+      var _default = /*#__PURE__*/ (function(_react$Component) {
+        _inherits(_default, _react$Component);
+
+        var _super = _createSuper(_default);
+
+        function _default(props) {
+          var _this;
+
+          _classCallCheck(this, _default);
+
+          _this = _super.call(this, props);
+          _this._hasHeadManager = void 0;
+
+          _this.emitChange = function() {
+            if (_this._hasHeadManager) {
+              _this.props.headManager.updateHead(
+                _this.props.reduceComponentsToState(
+                  _toConsumableArray(_this.props.headManager.mountedInstances),
+                  _this.props
+                )
+              );
+            }
+          };
+
+          _this._hasHeadManager =
+            _this.props.headManager && _this.props.headManager.mountedInstances;
+
+          if (isServer && _this._hasHeadManager) {
+            _this.props.headManager.mountedInstances.add(
+              _assertThisInitialized(_this)
+            );
+
+            _this.emitChange();
+          }
+
+          return _this;
+        }
+
+        _createClass(_default, [
+          {
+            key: "componentDidMount",
+            value: function componentDidMount() {
+              if (this._hasHeadManager) {
+                this.props.headManager.mountedInstances.add(this);
+              }
+
+              this.emitChange();
+            }
+          },
+          {
+            key: "componentDidUpdate",
+            value: function componentDidUpdate() {
+              this.emitChange();
+            }
+          },
+          {
+            key: "componentWillUnmount",
+            value: function componentWillUnmount() {
+              if (this._hasHeadManager) {
+                this.props.headManager.mountedInstances["delete"](this);
+              }
+
+              this.emitChange();
+            }
+          },
+          {
+            key: "render",
+            value: function render() {
+              return null;
+            }
+          }
+        ]);
+
+        return _default;
+      })(_react.Component);
+
+      exports["default"] = _default;
+
+      /***/
+    },
+
+    /***/ ZhPi: /***/ function(module, exports, __webpack_require__) {
+      var arrayLikeToArray = __webpack_require__("WkPL");
+
+      function _unsupportedIterableToArray(o, minLen) {
+        if (!o) return;
+        if (typeof o === "string") return arrayLikeToArray(o, minLen);
+        var n = Object.prototype.toString.call(o).slice(8, -1);
+        if (n === "Object" && o.constructor) n = o.constructor.name;
+        if (n === "Map" || n === "Set") return Array.from(o);
+        if (
+          n === "Arguments" ||
+          /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
+        )
+          return arrayLikeToArray(o, minLen);
+      }
+
+      module.exports = _unsupportedIterableToArray;
+
+      /***/
+    },
+
+    /***/ a1gu: /***/ function(module, exports, __webpack_require__) {
+      var _typeof = __webpack_require__("cDf5");
+
+      var assertThisInitialized = __webpack_require__("PJYZ");
+
+      function _possibleConstructorReturn(self, call) {
+        if (
+          call &&
+          (_typeof(call) === "object" || typeof call === "function")
+        ) {
+          return call;
+        }
+
+        return assertThisInitialized(self);
+      }
+
+      module.exports = _possibleConstructorReturn;
+
+      /***/
+    },
+
+    /***/ cDf5: /***/ function(module, exports) {
+      function _typeof(obj) {
+        "@babel/helpers - typeof";
+
+        if (
+          typeof Symbol === "function" &&
+          typeof Symbol.iterator === "symbol"
+        ) {
+          module.exports = _typeof = function _typeof(obj) {
+            return typeof obj;
+          };
+        } else {
+          module.exports = _typeof = function _typeof(obj) {
+            return obj &&
+              typeof Symbol === "function" &&
+              obj.constructor === Symbol &&
+              obj !== Symbol.prototype
+              ? "symbol"
+              : typeof obj;
+          };
+        }
+
+        return _typeof(obj);
+      }
+
+      module.exports = _typeof;
+
+      /***/
+    },
+
+    /***/ lwAK: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.AmpStateContext = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      var AmpStateContext = _react["default"].createContext({});
+
+      exports.AmpStateContext = AmpStateContext;
+
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ lwsE: /***/ function(module, exports) {
+      function _classCallCheck(instance, Constructor) {
+        if (!(instance instanceof Constructor)) {
+          throw new TypeError("Cannot call a class as a function");
+        }
+      }
+
+      module.exports = _classCallCheck;
+
+      /***/
+    }
+  },
+  [["04ac", 0, 1]]
+]);
Diff for _error-ce975..c1.module.js
@@ -0,0 +1,585 @@
+(window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
+  [5],
+  {
+    /***/ "/0+H": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.isInAmpMode = isInAmpMode;
+      exports.useAmp = useAmp;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _ampContext = __webpack_require__("lwAK");
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      function isInAmpMode() {
+        var { ampFirst = false, hybrid = false, hasQuery = false } =
+          arguments.length > 0 && arguments[0] !== undefined
+            ? arguments[0]
+            : {};
+        return ampFirst || (hybrid && hasQuery);
+      }
+
+      function useAmp() {
+        // Don't assign the context value to a variable to save bytes
+        return isInAmpMode(
+          _react.default.useContext(_ampContext.AmpStateContext)
+        );
+      }
+
+      /***/
+    },
+
+    /***/ "/a9y": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _interopRequireDefault = __webpack_require__("TqRt");
+
+      exports.__esModule = true;
+      exports.default = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _head = _interopRequireDefault(__webpack_require__("8Kt/"));
+
+      var statusCodes = {
+        400: "Bad Request",
+        404: "This page could not be found",
+        405: "Method Not Allowed",
+        500: "Internal Server Error"
+      };
+
+      function _getInitialProps(_ref) {
+        var { res, err } = _ref;
+        var statusCode =
+          res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
+        return {
+          statusCode
+        };
+      }
+      /**
+       * `Error` component used for handling errors.
+       */
+
+      class Error extends _react.default.Component {
+        render() {
+          var { statusCode } = this.props;
+          var title =
+            this.props.title ||
+            statusCodes[statusCode] ||
+            "An unexpected error has occurred";
+          return /*#__PURE__*/ _react.default.createElement(
+            "div",
+            {
+              style: styles.error
+            },
+            /*#__PURE__*/ _react.default.createElement(
+              _head.default,
+              null,
+              /*#__PURE__*/ _react.default.createElement(
+                "title",
+                null,
+                statusCode,
+                ": ",
+                title
+              )
+            ),
+            /*#__PURE__*/ _react.default.createElement(
+              "div",
+              null,
+              /*#__PURE__*/ _react.default.createElement("style", {
+                dangerouslySetInnerHTML: {
+                  __html: "body { margin: 0 }"
+                }
+              }),
+              statusCode
+                ? /*#__PURE__*/ _react.default.createElement(
+                    "h1",
+                    {
+                      style: styles.h1
+                    },
+                    statusCode
+                  )
+                : null,
+              /*#__PURE__*/ _react.default.createElement(
+                "div",
+                {
+                  style: styles.desc
+                },
+                /*#__PURE__*/ _react.default.createElement(
+                  "h2",
+                  {
+                    style: styles.h2
+                  },
+                  title,
+                  "."
+                )
+              )
+            )
+          );
+        }
+      }
+
+      exports.default = Error;
+      Error.displayName = "ErrorPage";
+      Error.getInitialProps = _getInitialProps;
+      Error.origGetInitialProps = _getInitialProps;
+      var styles = {
+        error: {
+          color: "#000",
+          background: "#fff",
+          fontFamily:
+            '-apple-system, BlinkMacSystemFont, Roboto, "Segoe UI", "Fira Sans", Avenir, "Helvetica Neue", "Lucida Grande", sans-serif',
+          height: "100vh",
+          textAlign: "center",
+          display: "flex",
+          flexDirection: "column",
+          alignItems: "center",
+          justifyContent: "center"
+        },
+        desc: {
+          display: "inline-block",
+          textAlign: "left",
+          lineHeight: "49px",
+          height: "49px",
+          verticalAlign: "middle"
+        },
+        h1: {
+          display: "inline-block",
+          borderRight: "1px solid rgba(0, 0, 0,.3)",
+          margin: 0,
+          marginRight: "20px",
+          padding: "10px 23px 10px 0",
+          fontSize: "24px",
+          fontWeight: 500,
+          verticalAlign: "top"
+        },
+        h2: {
+          fontSize: "14px",
+          fontWeight: "normal",
+          lineHeight: "inherit",
+          margin: 0,
+          padding: 0
+        }
+      };
+
+      /***/
+    },
+
+    /***/ "04ac": /***/ function(module, exports, __webpack_require__) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/_error",
+        function() {
+          return __webpack_require__("/a9y");
+        }
+      ]);
+
+      /***/
+    },
+
+    /***/ "8Kt/": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.defaultHead = defaultHead;
+      exports.default = void 0;
+
+      var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
+
+      var _sideEffect = _interopRequireDefault(__webpack_require__("Xuae"));
+
+      var _ampContext = __webpack_require__("lwAK");
+
+      var _headManagerContext = __webpack_require__("FYa8");
+
+      var _amp = __webpack_require__("/0+H");
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      function _getRequireWildcardCache() {
+        if (typeof WeakMap !== "function") return null;
+        var cache = new WeakMap();
+
+        _getRequireWildcardCache = function _getRequireWildcardCache() {
+          return cache;
+        };
+
+        return cache;
+      }
+
+      function _interopRequireWildcard(obj) {
+        if (obj && obj.__esModule) {
+          return obj;
+        }
+
+        if (
+          obj === null ||
+          (typeof obj !== "object" && typeof obj !== "function")
+        ) {
+          return {
+            default: obj
+          };
+        }
+
+        var cache = _getRequireWildcardCache();
+
+        if (cache && cache.has(obj)) {
+          return cache.get(obj);
+        }
+
+        var newObj = {};
+        var hasPropertyDescriptor =
+          Object.defineProperty && Object.getOwnPropertyDescriptor;
+
+        for (var key in obj) {
+          if (Object.prototype.hasOwnProperty.call(obj, key)) {
+            var desc = hasPropertyDescriptor
+              ? Object.getOwnPropertyDescriptor(obj, key)
+              : null;
+
+            if (desc && (desc.get || desc.set)) {
+              Object.defineProperty(newObj, key, desc);
+            } else {
+              newObj[key] = obj[key];
+            }
+          }
+        }
+
+        newObj.default = obj;
+
+        if (cache) {
+          cache.set(obj, newObj);
+        }
+
+        return newObj;
+      }
+
+      function defaultHead() {
+        var inAmpMode =
+          arguments.length > 0 && arguments[0] !== undefined
+            ? arguments[0]
+            : false;
+        var head = [
+          /*#__PURE__*/ _react.default.createElement("meta", {
+            charSet: "utf-8"
+          })
+        ];
+
+        if (!inAmpMode) {
+          head.push(
+            /*#__PURE__*/ _react.default.createElement("meta", {
+              name: "viewport",
+              content: "width=device-width"
+            })
+          );
+        }
+
+        return head;
+      }
+
+      function onlyReactElement(list, child) {
+        // React children can be "string" or "number" in this case we ignore them for backwards compat
+        if (typeof child === "string" || typeof child === "number") {
+          return list;
+        } // Adds support for React.Fragment
+
+        if (child.type === _react.default.Fragment) {
+          return list.concat(
+            _react.default.Children.toArray(child.props.children).reduce(
+              (fragmentList, fragmentChild) => {
+                if (
+                  typeof fragmentChild === "string" ||
+                  typeof fragmentChild === "number"
+                ) {
+                  return fragmentList;
+                }
+
+                return fragmentList.concat(fragmentChild);
+              },
+              []
+            )
+          );
+        }
+
+        return list.concat(child);
+      }
+
+      var METATYPES = ["name", "httpEquiv", "charSet", "itemProp"];
+      /*
+returns a function for filtering head child elements
+which shouldn't be duplicated, like <title/>
+Also adds support for deduplicated `key` properties
+*/
+
+      function unique() {
+        var keys = new Set();
+        var tags = new Set();
+        var metaTypes = new Set();
+        var metaCategories = {};
+        return h => {
+          var isUnique = 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)) {
+              isUnique = false;
+            } else {
+              keys.add(key);
+            }
+          } // eslint-disable-next-line default-case
+
+          switch (h.type) {
+            case "title":
+            case "base":
+              if (tags.has(h.type)) {
+                isUnique = false;
+              } else {
+                tags.add(h.type);
+              }
+
+              break;
+
+            case "meta":
+              for (var i = 0, len = METATYPES.length; i < len; i++) {
+                var metatype = METATYPES[i];
+                if (!h.props.hasOwnProperty(metatype)) continue;
+
+                if (metatype === "charSet") {
+                  if (metaTypes.has(metatype)) {
+                    isUnique = false;
+                  } else {
+                    metaTypes.add(metatype);
+                  }
+                } else {
+                  var category = h.props[metatype];
+                  var categories = metaCategories[metatype] || new Set();
+
+                  if (categories.has(category)) {
+                    isUnique = false;
+                  } else {
+                    categories.add(category);
+                    metaCategories[metatype] = categories;
+                  }
+                }
+              }
+
+              break;
+          }
+
+          return isUnique;
+        };
+      }
+      /**
+       *
+       * @param headElements List of multiple <Head> instances
+       */
+
+      function reduceComponents(headElements, props) {
+        return headElements
+          .reduce((list, headElement) => {
+            var headElementChildren = _react.default.Children.toArray(
+              headElement.props.children
+            );
+
+            return list.concat(headElementChildren);
+          }, [])
+          .reduce(onlyReactElement, [])
+          .reverse()
+          .concat(defaultHead(props.inAmpMode))
+          .filter(unique())
+          .reverse()
+          .map((c, i) => {
+            var key = c.key || i;
+            return _react.default.cloneElement(c, {
+              key
+            });
+          });
+      }
+      /**
+       * This component injects elements to `<head>` of your page.
+       * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
+       */
+
+      function Head(_ref) {
+        var { children } = _ref;
+        var ampState = (0, _react.useContext)(_ampContext.AmpStateContext);
+        var headManager = (0, _react.useContext)(
+          _headManagerContext.HeadManagerContext
+        );
+        return /*#__PURE__*/ _react.default.createElement(
+          _sideEffect.default,
+          {
+            reduceComponentsToState: reduceComponents,
+            headManager: headManager,
+            inAmpMode: (0, _amp.isInAmpMode)(ampState)
+          },
+          children
+        );
+      } // TODO: Remove in the next major release
+
+      Head.rewind = () => {};
+
+      var _default = Head;
+      exports.default = _default;
+
+      /***/
+    },
+
+    /***/ FYa8: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.HeadManagerContext = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      var HeadManagerContext = _react.default.createContext({});
+
+      exports.HeadManagerContext = HeadManagerContext;
+
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ Qetd: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+      var assign = Object.assign.bind(Object);
+      module.exports = assign;
+      module.exports.default = module.exports;
+      //# sourceMappingURL=object-assign.js.map
+
+      /***/
+    },
+
+    /***/ TqRt: /***/ function(module, exports) {
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      module.exports = _interopRequireDefault;
+
+      /***/
+    },
+
+    /***/ Xuae: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.default = void 0;
+
+      var _react = __webpack_require__("q1tI");
+
+      var isServer = false;
+
+      class _default extends _react.Component {
+        constructor(props) {
+          super(props);
+          this._hasHeadManager = void 0;
+
+          this.emitChange = () => {
+            if (this._hasHeadManager) {
+              this.props.headManager.updateHead(
+                this.props.reduceComponentsToState(
+                  [...this.props.headManager.mountedInstances],
+                  this.props
+                )
+              );
+            }
+          };
+
+          this._hasHeadManager =
+            this.props.headManager && this.props.headManager.mountedInstances;
+
+          if (isServer && this._hasHeadManager) {
+            this.props.headManager.mountedInstances.add(this);
+            this.emitChange();
+          }
+        }
+
+        componentDidMount() {
+          if (this._hasHeadManager) {
+            this.props.headManager.mountedInstances.add(this);
+          }
+
+          this.emitChange();
+        }
+
+        componentDidUpdate() {
+          this.emitChange();
+        }
+
+        componentWillUnmount() {
+          if (this._hasHeadManager) {
+            this.props.headManager.mountedInstances.delete(this);
+          }
+
+          this.emitChange();
+        }
+
+        render() {
+          return null;
+        }
+      }
+
+      exports.default = _default;
+
+      /***/
+    },
+
+    /***/ lwAK: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.AmpStateContext = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      var AmpStateContext = _react.default.createContext({});
+
+      exports.AmpStateContext = AmpStateContext;
+
+      if (false) {
+      }
+
+      /***/
+    }
+  },
+  [["04ac", 0, 1]]
+]);
Diff for

@ijjk
Copy link
Member

ijjk commented Jul 16, 2020

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall decrease ✓
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
buildDuration 12.4s 12.3s -113ms
nodeModulesSize 66.5 MB 66.5 MB -1.29 kB
Page Load Tests Overall decrease ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
/ failed reqs 0 0
/ total time (seconds) 1.964 2.002 ⚠️ +0.04
/ avg req/sec 1273.03 1248.6 ⚠️ -24.43
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.179 1.253 ⚠️ +0.07
/error-in-render avg req/sec 2119.68 1995.54 ⚠️ -124.14
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
main-HASH.js gzip 6.72 kB 6.72 kB
webpack-HASH.js gzip 751 B 751 B
19b7e98f51cc..e4c5.js gzip 9.72 kB 9.72 kB
framework.HASH.js gzip 39.1 kB 39.1 kB
polyfills-HASH.js gzip N/A 30.8 kB N/A
Overall change 56.3 kB 87.2 kB ⚠️ +30.8 kB
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
main-HASH.module.js gzip 5.8 kB 5.79 kB -1 B
webpack-HASH..dule.js gzip 751 B 751 B
19b7e98f51cc..dule.js gzip 6.12 kB 6.12 kB
framework.HA..dule.js gzip 39.1 kB 39.1 kB
polyfills-05..dule.js gzip N/A 30.8 kB N/A
Overall change 51.8 kB 82.6 kB ⚠️ +30.8 kB
Legacy Client Bundles (polyfills) Overall decrease ✓
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
polyfills-HASH.js gzip 30.8 kB N/A N/A
Overall change 30.8 kB 0 B -30.8 kB
Client Pages Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
_app-8f5f611..1f7b.js gzip N/A 1.28 kB N/A
_error-8e69b..8695.js gzip N/A 3.41 kB N/A
hooks-f7f3d0..7465.js gzip N/A 887 B N/A
index-08fb3f..c0e9.js gzip N/A 227 B N/A
link-ddd176e..5566.js gzip N/A 1.29 kB N/A
routerDirect..8aa1.js gzip N/A 284 B N/A
withRouter-f..e777.js gzip N/A 284 B N/A
Overall change 0 B 7.66 kB ⚠️ +7.66 kB
Client Pages Modern Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
_app-669dbe5..dule.js gzip N/A 626 B N/A
_error-663e6..dule.js gzip N/A 2.24 kB N/A
hooks-805c40..dule.js gzip N/A 387 B N/A
index-6ba5a4..dule.js gzip N/A 226 B N/A
link-69bc264..dule.js gzip N/A 1.25 kB N/A
routerDirect..dule.js gzip N/A 284 B N/A
withRouter-d..dule.js gzip N/A 282 B N/A
Overall change 0 B 5.29 kB ⚠️ +5.29 kB
Client Build Manifests Overall increase ⚠️
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
_buildManifest.js gzip 267 B 275 B ⚠️ +8 B
_buildManife..dule.js gzip 273 B 281 B ⚠️ +8 B
Overall change 540 B 556 B ⚠️ +16 B
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary timneutkens/next.js fix/app-document-import-order-test Change
index.html gzip 954 B 946 B -8 B
link.html gzip 961 B 953 B -8 B
withRouter.html gzip 947 B 939 B -8 B
Overall change 2.86 kB 2.84 kB -24 B

Diffs

Diff for _buildManifest.js
@@ -1,11 +1,17 @@
 self.__BUILD_MANIFEST = {
-  "/": ["static\u002Fpages\u002Findex-f35cd1774d910f5523ed.js"],
-  "/_error": ["static\u002Fpages\u002F_error-f39e6723c6acde17325a.js"],
-  "/hooks": ["static\u002Fpages\u002Fhooks-9e216cd51bf04b309e08.js"],
-  "/link": ["static\u002Fpages\u002Flink-384139ace1609fd05ce0.js"],
+  "/": ["static\u002Fchunks\u002Fpages\u002Findex-283eed3c1520dcc26e8d.js"],
+  "/_error": [
+    "static\u002Fchunks\u002Fpages\u002F_error-4a37fa8cee3d5cd40293.js"
+  ],
+  "/hooks": [
+    "static\u002Fchunks\u002Fpages\u002Fhooks-8001dc76075832ee8949.js"
+  ],
+  "/link": ["static\u002Fchunks\u002Fpages\u002Flink-47d000d5b33907ab0cd4.js"],
   "/routerDirect": [
-    "static\u002Fpages\u002FrouterDirect-b95d3f54c75949a43da6.js"
+    "static\u002Fchunks\u002Fpages\u002FrouterDirect-2e9bfd441bd88cd3382e.js"
   ],
-  "/withRouter": ["static\u002Fpages\u002FwithRouter-3e85450022aeb0cab2be.js"]
+  "/withRouter": [
+    "static\u002Fchunks\u002Fpages\u002FwithRouter-9af1d72bd996729e701e.js"
+  ]
 };
 self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB();
Diff for _buildManifest.module.js
@@ -1,13 +1,21 @@
 self.__BUILD_MANIFEST = {
-  "/": ["static\u002Fpages\u002Findex-da343bca3b67f1bcf42d.module.js"],
-  "/_error": ["static\u002Fpages\u002F_error-b3c4c3f8dbb1417657e6.module.js"],
-  "/hooks": ["static\u002Fpages\u002Fhooks-dc8f274035a2839a1e61.module.js"],
-  "/link": ["static\u002Fpages\u002Flink-481c9ef0fea508bf4d17.module.js"],
+  "/": [
+    "static\u002Fchunks\u002Fpages\u002Findex-dc79232991b9d18c3260.module.js"
+  ],
+  "/_error": [
+    "static\u002Fchunks\u002Fpages\u002F_error-ce975ebbbf8cd0d465c1.module.js"
+  ],
+  "/hooks": [
+    "static\u002Fchunks\u002Fpages\u002Fhooks-56fa58a6f0993d7d36d7.module.js"
+  ],
+  "/link": [
+    "static\u002Fchunks\u002Fpages\u002Flink-3c6dc1a0ec3e820dcde5.module.js"
+  ],
   "/routerDirect": [
-    "static\u002Fpages\u002FrouterDirect-c62f258dff7fece0a732.module.js"
+    "static\u002Fchunks\u002Fpages\u002FrouterDirect-368af3dfef3c9cd99dc3.module.js"
   ],
   "/withRouter": [
-    "static\u002Fpages\u002FwithRouter-6fd38b55e6cdc818c01b.module.js"
+    "static\u002Fchunks\u002Fpages\u002FwithRouter-654e4c0aa8f6a4177d77.module.js"
   ]
 };
 self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB();
Diff for _app-7512045..d9376e2ca.js
@@ -0,0 +1,321 @@
+_N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
+  [4],
+  {
+    /***/ 0: /***/ function(module, exports, __webpack_require__) {
+      __webpack_require__("e9+W");
+      module.exports = __webpack_require__("nOHt");
+
+      /***/
+    },
+
+    /***/ "7W2i": /***/ function(module, exports, __webpack_require__) {
+      var setPrototypeOf = __webpack_require__("SksO");
+
+      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;
+
+      /***/
+    },
+
+    /***/ B5Ud: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _regeneratorRuntime = __webpack_require__("o0o1");
+
+      var _classCallCheck = __webpack_require__("lwsE");
+
+      var _createClass = __webpack_require__("W8MJ");
+
+      var _inherits = __webpack_require__("7W2i");
+
+      var _possibleConstructorReturn = __webpack_require__("a1gu");
+
+      var _getPrototypeOf = __webpack_require__("Nsbk");
+
+      var _asyncToGenerator = __webpack_require__("yXPU");
+
+      function _createSuper(Derived) {
+        var hasNativeReflectConstruct = _isNativeReflectConstruct();
+        return function _createSuperInternal() {
+          var Super = _getPrototypeOf(Derived),
+            result;
+          if (hasNativeReflectConstruct) {
+            var NewTarget = _getPrototypeOf(this).constructor;
+            result = Reflect.construct(Super, arguments, NewTarget);
+          } else {
+            result = Super.apply(this, arguments);
+          }
+          return _possibleConstructorReturn(this, result);
+        };
+      }
+
+      function _isNativeReflectConstruct() {
+        if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+        if (Reflect.construct.sham) return false;
+        if (typeof Proxy === "function") return true;
+        try {
+          Date.prototype.toString.call(
+            Reflect.construct(Date, [], function() {})
+          );
+          return true;
+        } catch (e) {
+          return false;
+        }
+      }
+
+      var _interopRequireDefault = __webpack_require__("TqRt");
+
+      exports.__esModule = true;
+      exports.Container = Container;
+      exports.createUrl = createUrl;
+      exports["default"] = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _utils = __webpack_require__("g/15");
+
+      exports.AppInitialProps = _utils.AppInitialProps;
+      exports.NextWebVitalsMetric = _utils.NextWebVitalsMetric;
+      /**
+       * `App` component is used for initialize of pages. It allows for overwriting and full control of the `page` initialization.
+       * This allows for keeping state between navigation, custom error handling, injecting additional data.
+       */
+
+      function appGetInitialProps(_x) {
+        return _appGetInitialProps.apply(this, arguments);
+      }
+
+      function _appGetInitialProps() {
+        _appGetInitialProps = _asyncToGenerator(
+          /*#__PURE__*/ _regeneratorRuntime.mark(function _callee(_ref) {
+            var Component, ctx, pageProps;
+            return _regeneratorRuntime.wrap(function _callee$(_context) {
+              while (1) {
+                switch ((_context.prev = _context.next)) {
+                  case 0:
+                    (Component = _ref.Component), (ctx = _ref.ctx);
+                    _context.next = 3;
+                    return (0, _utils.loadGetInitialProps)(Component, ctx);
+
+                  case 3:
+                    pageProps = _context.sent;
+                    return _context.abrupt("return", {
+                      pageProps: pageProps
+                    });
+
+                  case 5:
+                  case "end":
+                    return _context.stop();
+                }
+              }
+            }, _callee);
+          })
+        );
+        return _appGetInitialProps.apply(this, arguments);
+      }
+
+      var App = /*#__PURE__*/ (function(_react$default$Compon) {
+        _inherits(App, _react$default$Compon);
+
+        var _super = _createSuper(App);
+
+        function App() {
+          _classCallCheck(this, App);
+
+          return _super.apply(this, arguments);
+        }
+
+        _createClass(App, [
+          {
+            key: "componentDidCatch",
+            // Kept here for backwards compatibility.
+            // When someone ended App they could call `super.componentDidCatch`.
+            // @deprecated This method is no longer needed. Errors are caught at the top level
+            value: function componentDidCatch(error, _errorInfo) {
+              throw error;
+            }
+          },
+          {
+            key: "render",
+            value: function render() {
+              var _this$props = this.props,
+                router = _this$props.router,
+                Component = _this$props.Component,
+                pageProps = _this$props.pageProps,
+                __N_SSG = _this$props.__N_SSG,
+                __N_SSP = _this$props.__N_SSP;
+              return /*#__PURE__*/ _react["default"].createElement(
+                Component,
+                Object.assign(
+                  {},
+                  pageProps, // we don't add the legacy URL prop if it's using non-legacy
+                  // methods like getStaticProps and getServerSideProps
+                  !(__N_SSG || __N_SSP)
+                    ? {
+                        url: createUrl(router)
+                      }
+                    : {}
+                )
+              );
+            }
+          }
+        ]);
+
+        return App;
+      })(_react["default"].Component);
+
+      exports["default"] = App;
+      App.origGetInitialProps = appGetInitialProps;
+      App.getInitialProps = appGetInitialProps;
+      var warnContainer;
+      var warnUrl;
+
+      if (false) {
+      } // @deprecated noop for now until removal
+
+      function Container(p) {
+        if (false) {
+        }
+        return p.children;
+      }
+
+      function createUrl(router) {
+        // This is to make sure we don't references the router object at call time
+        var pathname = router.pathname,
+          asPath = router.asPath,
+          query = router.query;
+        return {
+          get query() {
+            if (false) {
+            }
+            return query;
+          },
+
+          get pathname() {
+            if (false) {
+            }
+            return pathname;
+          },
+
+          get asPath() {
+            if (false) {
+            }
+            return asPath;
+          },
+
+          back: function back() {
+            if (false) {
+            }
+            router.back();
+          },
+          push: function push(url, as) {
+            if (false) {
+            }
+            return router.push(url, as);
+          },
+          pushTo: function pushTo(href, as) {
+            if (false) {
+            }
+            var pushRoute = as ? href : "";
+            var pushUrl = as || href;
+            return router.push(pushRoute, pushUrl);
+          },
+          replace: function replace(url, as) {
+            if (false) {
+            }
+            return router.replace(url, as);
+          },
+          replaceTo: function replaceTo(href, as) {
+            if (false) {
+            }
+            var replaceRoute = as ? href : "";
+            var replaceUrl = as || href;
+            return router.replace(replaceRoute, replaceUrl);
+          }
+        };
+      }
+
+      /***/
+    },
+
+    /***/ Nsbk: /***/ function(module, exports) {
+      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;
+
+      /***/
+    },
+
+    /***/ PJYZ: /***/ 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;
+
+      /***/
+    },
+
+    /***/ a1gu: /***/ function(module, exports, __webpack_require__) {
+      var _typeof = __webpack_require__("cDf5");
+
+      var assertThisInitialized = __webpack_require__("PJYZ");
+
+      function _possibleConstructorReturn(self, call) {
+        if (
+          call &&
+          (_typeof(call) === "object" || typeof call === "function")
+        ) {
+          return call;
+        }
+
+        return assertThisInitialized(self);
+      }
+
+      module.exports = _possibleConstructorReturn;
+
+      /***/
+    },
+
+    /***/ "e9+W": /***/ function(module, exports, __webpack_require__) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/_app",
+        function() {
+          return __webpack_require__("B5Ud");
+        }
+      ]);
+
+      /***/
+    }
+  },
+  [[0, 0, 1, 2]]
+]);
Diff for _app-9a0d200..cd.module.js
@@ -0,0 +1,150 @@
+(window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
+  [4],
+  {
+    /***/ 0: /***/ function(module, exports, __webpack_require__) {
+      __webpack_require__("e9+W");
+      module.exports = __webpack_require__("nOHt");
+
+      /***/
+    },
+
+    /***/ B5Ud: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _interopRequireDefault = __webpack_require__("TqRt");
+
+      exports.__esModule = true;
+      exports.Container = Container;
+      exports.createUrl = createUrl;
+      exports.default = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _utils = __webpack_require__("g/15");
+
+      exports.AppInitialProps = _utils.AppInitialProps;
+      exports.NextWebVitalsMetric = _utils.NextWebVitalsMetric;
+      /**
+       * `App` component is used for initialize of pages. It allows for overwriting and full control of the `page` initialization.
+       * This allows for keeping state between navigation, custom error handling, injecting additional data.
+       */
+
+      async function appGetInitialProps(_ref) {
+        var { Component, ctx } = _ref;
+        var pageProps = await (0, _utils.loadGetInitialProps)(Component, ctx);
+        return {
+          pageProps
+        };
+      }
+
+      class App extends _react.default.Component {
+        // Kept here for backwards compatibility.
+        // When someone ended App they could call `super.componentDidCatch`.
+        // @deprecated This method is no longer needed. Errors are caught at the top level
+        componentDidCatch(error, _errorInfo) {
+          throw error;
+        }
+
+        render() {
+          var { router, Component, pageProps, __N_SSG, __N_SSP } = this.props;
+          return /*#__PURE__*/ _react.default.createElement(
+            Component,
+            Object.assign(
+              {},
+              pageProps, // we don't add the legacy URL prop if it's using non-legacy
+              // methods like getStaticProps and getServerSideProps
+              !(__N_SSG || __N_SSP)
+                ? {
+                    url: createUrl(router)
+                  }
+                : {}
+            )
+          );
+        }
+      }
+
+      exports.default = App;
+      App.origGetInitialProps = appGetInitialProps;
+      App.getInitialProps = appGetInitialProps;
+      var warnContainer;
+      var warnUrl;
+
+      if (false) {
+      } // @deprecated noop for now until removal
+
+      function Container(p) {
+        if (false) {
+        }
+        return p.children;
+      }
+
+      function createUrl(router) {
+        // This is to make sure we don't references the router object at call time
+        var { pathname, asPath, query } = router;
+        return {
+          get query() {
+            if (false) {
+            }
+            return query;
+          },
+
+          get pathname() {
+            if (false) {
+            }
+            return pathname;
+          },
+
+          get asPath() {
+            if (false) {
+            }
+            return asPath;
+          },
+
+          back: () => {
+            if (false) {
+            }
+            router.back();
+          },
+          push: (url, as) => {
+            if (false) {
+            }
+            return router.push(url, as);
+          },
+          pushTo: (href, as) => {
+            if (false) {
+            }
+            var pushRoute = as ? href : "";
+            var pushUrl = as || href;
+            return router.push(pushRoute, pushUrl);
+          },
+          replace: (url, as) => {
+            if (false) {
+            }
+            return router.replace(url, as);
+          },
+          replaceTo: (href, as) => {
+            if (false) {
+            }
+            var replaceRoute = as ? href : "";
+            var replaceUrl = as || href;
+            return router.replace(replaceRoute, replaceUrl);
+          }
+        };
+      }
+
+      /***/
+    },
+
+    /***/ "e9+W": /***/ function(module, exports, __webpack_require__) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/_app",
+        function() {
+          return __webpack_require__("B5Ud");
+        }
+      ]);
+
+      /***/
+    }
+  },
+  [[0, 0, 1, 2]]
+]);
Diff for _error-4a37f..d5cd40293.js
@@ -0,0 +1,971 @@
+_N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
+  [5],
+  {
+    /***/ "/0+H": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.isInAmpMode = isInAmpMode;
+      exports.useAmp = useAmp;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _ampContext = __webpack_require__("lwAK");
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      function isInAmpMode() {
+        var _ref =
+            arguments.length > 0 && arguments[0] !== undefined
+              ? arguments[0]
+              : {},
+          _ref$ampFirst = _ref.ampFirst,
+          ampFirst = _ref$ampFirst === void 0 ? false : _ref$ampFirst,
+          _ref$hybrid = _ref.hybrid,
+          hybrid = _ref$hybrid === void 0 ? false : _ref$hybrid,
+          _ref$hasQuery = _ref.hasQuery,
+          hasQuery = _ref$hasQuery === void 0 ? false : _ref$hasQuery;
+
+        return ampFirst || (hybrid && hasQuery);
+      }
+
+      function useAmp() {
+        // Don't assign the context value to a variable to save bytes
+        return isInAmpMode(
+          _react["default"].useContext(_ampContext.AmpStateContext)
+        );
+      }
+
+      /***/
+    },
+
+    /***/ "/a9y": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _classCallCheck = __webpack_require__("lwsE");
+
+      var _createClass = __webpack_require__("W8MJ");
+
+      var _inherits = __webpack_require__("7W2i");
+
+      var _possibleConstructorReturn = __webpack_require__("a1gu");
+
+      var _getPrototypeOf = __webpack_require__("Nsbk");
+
+      function _createSuper(Derived) {
+        var hasNativeReflectConstruct = _isNativeReflectConstruct();
+        return function _createSuperInternal() {
+          var Super = _getPrototypeOf(Derived),
+            result;
+          if (hasNativeReflectConstruct) {
+            var NewTarget = _getPrototypeOf(this).constructor;
+            result = Reflect.construct(Super, arguments, NewTarget);
+          } else {
+            result = Super.apply(this, arguments);
+          }
+          return _possibleConstructorReturn(this, result);
+        };
+      }
+
+      function _isNativeReflectConstruct() {
+        if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+        if (Reflect.construct.sham) return false;
+        if (typeof Proxy === "function") return true;
+        try {
+          Date.prototype.toString.call(
+            Reflect.construct(Date, [], function() {})
+          );
+          return true;
+        } catch (e) {
+          return false;
+        }
+      }
+
+      var _interopRequireDefault = __webpack_require__("TqRt");
+
+      exports.__esModule = true;
+      exports["default"] = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _head = _interopRequireDefault(__webpack_require__("8Kt/"));
+
+      var statusCodes = {
+        400: "Bad Request",
+        404: "This page could not be found",
+        405: "Method Not Allowed",
+        500: "Internal Server Error"
+      };
+
+      function _getInitialProps(_ref) {
+        var res = _ref.res,
+          err = _ref.err;
+        var statusCode =
+          res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
+        return {
+          statusCode: statusCode
+        };
+      }
+      /**
+       * `Error` component used for handling errors.
+       */
+
+      var Error = /*#__PURE__*/ (function(_react$default$Compon) {
+        _inherits(Error, _react$default$Compon);
+
+        var _super = _createSuper(Error);
+
+        function Error() {
+          _classCallCheck(this, Error);
+
+          return _super.apply(this, arguments);
+        }
+
+        _createClass(Error, [
+          {
+            key: "render",
+            value: function render() {
+              var statusCode = this.props.statusCode;
+              var title =
+                this.props.title ||
+                statusCodes[statusCode] ||
+                "An unexpected error has occurred";
+              return /*#__PURE__*/ _react["default"].createElement(
+                "div",
+                {
+                  style: styles.error
+                },
+                /*#__PURE__*/ _react["default"].createElement(
+                  _head["default"],
+                  null,
+                  /*#__PURE__*/ _react["default"].createElement(
+                    "title",
+                    null,
+                    statusCode,
+                    ": ",
+                    title
+                  )
+                ),
+                /*#__PURE__*/ _react["default"].createElement(
+                  "div",
+                  null,
+                  /*#__PURE__*/ _react["default"].createElement("style", {
+                    dangerouslySetInnerHTML: {
+                      __html: "body { margin: 0 }"
+                    }
+                  }),
+                  statusCode
+                    ? /*#__PURE__*/ _react["default"].createElement(
+                        "h1",
+                        {
+                          style: styles.h1
+                        },
+                        statusCode
+                      )
+                    : null,
+                  /*#__PURE__*/ _react["default"].createElement(
+                    "div",
+                    {
+                      style: styles.desc
+                    },
+                    /*#__PURE__*/ _react["default"].createElement(
+                      "h2",
+                      {
+                        style: styles.h2
+                      },
+                      title,
+                      "."
+                    )
+                  )
+                )
+              );
+            }
+          }
+        ]);
+
+        return Error;
+      })(_react["default"].Component);
+
+      exports["default"] = Error;
+      Error.displayName = "ErrorPage";
+      Error.getInitialProps = _getInitialProps;
+      Error.origGetInitialProps = _getInitialProps;
+      var styles = {
+        error: {
+          color: "#000",
+          background: "#fff",
+          fontFamily:
+            '-apple-system, BlinkMacSystemFont, Roboto, "Segoe UI", "Fira Sans", Avenir, "Helvetica Neue", "Lucida Grande", sans-serif',
+          height: "100vh",
+          textAlign: "center",
+          display: "flex",
+          flexDirection: "column",
+          alignItems: "center",
+          justifyContent: "center"
+        },
+        desc: {
+          display: "inline-block",
+          textAlign: "left",
+          lineHeight: "49px",
+          height: "49px",
+          verticalAlign: "middle"
+        },
+        h1: {
+          display: "inline-block",
+          borderRight: "1px solid rgba(0, 0, 0,.3)",
+          margin: 0,
+          marginRight: "20px",
+          padding: "10px 23px 10px 0",
+          fontSize: "24px",
+          fontWeight: 500,
+          verticalAlign: "top"
+        },
+        h2: {
+          fontSize: "14px",
+          fontWeight: "normal",
+          lineHeight: "inherit",
+          margin: 0,
+          padding: 0
+        }
+      };
+
+      /***/
+    },
+
+    /***/ "04ac": /***/ function(module, exports, __webpack_require__) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/_error",
+        function() {
+          return __webpack_require__("/a9y");
+        }
+      ]);
+
+      /***/
+    },
+
+    /***/ "7W2i": /***/ function(module, exports, __webpack_require__) {
+      var setPrototypeOf = __webpack_require__("SksO");
+
+      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;
+
+      /***/
+    },
+
+    /***/ "8Kt/": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.defaultHead = defaultHead;
+      exports["default"] = void 0;
+
+      var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
+
+      var _sideEffect = _interopRequireDefault(__webpack_require__("Xuae"));
+
+      var _ampContext = __webpack_require__("lwAK");
+
+      var _headManagerContext = __webpack_require__("FYa8");
+
+      var _amp = __webpack_require__("/0+H");
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      function _getRequireWildcardCache() {
+        if (typeof WeakMap !== "function") return null;
+        var cache = new WeakMap();
+
+        _getRequireWildcardCache = function _getRequireWildcardCache() {
+          return cache;
+        };
+
+        return cache;
+      }
+
+      function _interopRequireWildcard(obj) {
+        if (obj && obj.__esModule) {
+          return obj;
+        }
+
+        if (
+          obj === null ||
+          (typeof obj !== "object" && typeof obj !== "function")
+        ) {
+          return {
+            default: obj
+          };
+        }
+
+        var cache = _getRequireWildcardCache();
+
+        if (cache && cache.has(obj)) {
+          return cache.get(obj);
+        }
+
+        var newObj = {};
+        var hasPropertyDescriptor =
+          Object.defineProperty && Object.getOwnPropertyDescriptor;
+
+        for (var key in obj) {
+          if (Object.prototype.hasOwnProperty.call(obj, key)) {
+            var desc = hasPropertyDescriptor
+              ? Object.getOwnPropertyDescriptor(obj, key)
+              : null;
+
+            if (desc && (desc.get || desc.set)) {
+              Object.defineProperty(newObj, key, desc);
+            } else {
+              newObj[key] = obj[key];
+            }
+          }
+        }
+
+        newObj["default"] = obj;
+
+        if (cache) {
+          cache.set(obj, newObj);
+        }
+
+        return newObj;
+      }
+
+      function defaultHead() {
+        var inAmpMode =
+          arguments.length > 0 && arguments[0] !== undefined
+            ? arguments[0]
+            : false;
+        var head = [
+          /*#__PURE__*/ _react["default"].createElement("meta", {
+            charSet: "utf-8"
+          })
+        ];
+
+        if (!inAmpMode) {
+          head.push(
+            /*#__PURE__*/ _react["default"].createElement("meta", {
+              name: "viewport",
+              content: "width=device-width"
+            })
+          );
+        }
+
+        return head;
+      }
+
+      function onlyReactElement(list, child) {
+        // React children can be "string" or "number" in this case we ignore them for backwards compat
+        if (typeof child === "string" || typeof child === "number") {
+          return list;
+        } // Adds support for React.Fragment
+
+        if (child.type === _react["default"].Fragment) {
+          return list.concat(
+            _react["default"].Children.toArray(child.props.children).reduce(
+              function(fragmentList, fragmentChild) {
+                if (
+                  typeof fragmentChild === "string" ||
+                  typeof fragmentChild === "number"
+                ) {
+                  return fragmentList;
+                }
+
+                return fragmentList.concat(fragmentChild);
+              },
+              []
+            )
+          );
+        }
+
+        return list.concat(child);
+      }
+
+      var METATYPES = ["name", "httpEquiv", "charSet", "itemProp"];
+      /*
+returns a function for filtering head child elements
+which shouldn't be duplicated, like <title/>
+Also adds support for deduplicated `key` properties
+*/
+
+      function unique() {
+        var keys = new Set();
+        var tags = new Set();
+        var metaTypes = new Set();
+        var metaCategories = {};
+        return function(h) {
+          var isUnique = 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)) {
+              isUnique = false;
+            } else {
+              keys.add(key);
+            }
+          } // eslint-disable-next-line default-case
+
+          switch (h.type) {
+            case "title":
+            case "base":
+              if (tags.has(h.type)) {
+                isUnique = false;
+              } else {
+                tags.add(h.type);
+              }
+
+              break;
+
+            case "meta":
+              for (var i = 0, len = METATYPES.length; i < len; i++) {
+                var metatype = METATYPES[i];
+                if (!h.props.hasOwnProperty(metatype)) continue;
+
+                if (metatype === "charSet") {
+                  if (metaTypes.has(metatype)) {
+                    isUnique = false;
+                  } else {
+                    metaTypes.add(metatype);
+                  }
+                } else {
+                  var category = h.props[metatype];
+                  var categories = metaCategories[metatype] || new Set();
+
+                  if (categories.has(category)) {
+                    isUnique = false;
+                  } else {
+                    categories.add(category);
+                    metaCategories[metatype] = categories;
+                  }
+                }
+              }
+
+              break;
+          }
+
+          return isUnique;
+        };
+      }
+      /**
+       *
+       * @param headElements List of multiple <Head> instances
+       */
+
+      function reduceComponents(headElements, props) {
+        return headElements
+          .reduce(function(list, headElement) {
+            var headElementChildren = _react["default"].Children.toArray(
+              headElement.props.children
+            );
+
+            return list.concat(headElementChildren);
+          }, [])
+          .reduce(onlyReactElement, [])
+          .reverse()
+          .concat(defaultHead(props.inAmpMode))
+          .filter(unique())
+          .reverse()
+          .map(function(c, i) {
+            var key = c.key || i;
+            return _react["default"].cloneElement(c, {
+              key: key
+            });
+          });
+      }
+      /**
+       * This component injects elements to `<head>` of your page.
+       * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
+       */
+
+      function Head(_ref) {
+        var children = _ref.children;
+        var ampState = (0, _react.useContext)(_ampContext.AmpStateContext);
+        var headManager = (0, _react.useContext)(
+          _headManagerContext.HeadManagerContext
+        );
+        return /*#__PURE__*/ _react["default"].createElement(
+          _sideEffect["default"],
+          {
+            reduceComponentsToState: reduceComponents,
+            headManager: headManager,
+            inAmpMode: (0, _amp.isInAmpMode)(ampState)
+          },
+          children
+        );
+      } // TODO: Remove in the next major release
+
+      Head.rewind = function() {};
+
+      var _default = Head;
+      exports["default"] = _default;
+
+      /***/
+    },
+
+    /***/ Bnag: /***/ function(module, exports) {
+      function _nonIterableSpread() {
+        throw new TypeError(
+          "Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
+        );
+      }
+
+      module.exports = _nonIterableSpread;
+
+      /***/
+    },
+
+    /***/ EbDI: /***/ function(module, exports) {
+      function _iterableToArray(iter) {
+        if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter))
+          return Array.from(iter);
+      }
+
+      module.exports = _iterableToArray;
+
+      /***/
+    },
+
+    /***/ FYa8: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.HeadManagerContext = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      var HeadManagerContext = _react["default"].createContext({});
+
+      exports.HeadManagerContext = HeadManagerContext;
+
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ Ijbi: /***/ function(module, exports, __webpack_require__) {
+      var arrayLikeToArray = __webpack_require__("WkPL");
+
+      function _arrayWithoutHoles(arr) {
+        if (Array.isArray(arr)) return arrayLikeToArray(arr);
+      }
+
+      module.exports = _arrayWithoutHoles;
+
+      /***/
+    },
+
+    /***/ Nsbk: /***/ function(module, exports) {
+      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;
+
+      /***/
+    },
+
+    /***/ PJYZ: /***/ 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;
+
+      /***/
+    },
+
+    /***/ Qetd: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+      var assign = Object.assign.bind(Object);
+      module.exports = assign;
+      module.exports.default = module.exports;
+      //# sourceMappingURL=object-assign.js.map
+
+      /***/
+    },
+
+    /***/ RIqP: /***/ function(module, exports, __webpack_require__) {
+      var arrayWithoutHoles = __webpack_require__("Ijbi");
+
+      var iterableToArray = __webpack_require__("EbDI");
+
+      var unsupportedIterableToArray = __webpack_require__("ZhPi");
+
+      var nonIterableSpread = __webpack_require__("Bnag");
+
+      function _toConsumableArray(arr) {
+        return (
+          arrayWithoutHoles(arr) ||
+          iterableToArray(arr) ||
+          unsupportedIterableToArray(arr) ||
+          nonIterableSpread()
+        );
+      }
+
+      module.exports = _toConsumableArray;
+
+      /***/
+    },
+
+    /***/ SksO: /***/ function(module, exports) {
+      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;
+
+      /***/
+    },
+
+    /***/ TqRt: /***/ function(module, exports) {
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      module.exports = _interopRequireDefault;
+
+      /***/
+    },
+
+    /***/ W8MJ: /***/ function(module, exports) {
+      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;
+          Object.defineProperty(target, descriptor.key, descriptor);
+        }
+      }
+
+      function _createClass(Constructor, protoProps, staticProps) {
+        if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+        if (staticProps) _defineProperties(Constructor, staticProps);
+        return Constructor;
+      }
+
+      module.exports = _createClass;
+
+      /***/
+    },
+
+    /***/ WkPL: /***/ function(module, exports) {
+      function _arrayLikeToArray(arr, len) {
+        if (len == null || len > arr.length) len = arr.length;
+
+        for (var i = 0, arr2 = new Array(len); i < len; i++) {
+          arr2[i] = arr[i];
+        }
+
+        return arr2;
+      }
+
+      module.exports = _arrayLikeToArray;
+
+      /***/
+    },
+
+    /***/ Xuae: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _toConsumableArray = __webpack_require__("RIqP");
+
+      var _classCallCheck = __webpack_require__("lwsE");
+
+      var _createClass = __webpack_require__("W8MJ");
+
+      var _assertThisInitialized = __webpack_require__("PJYZ");
+
+      var _inherits = __webpack_require__("7W2i");
+
+      var _possibleConstructorReturn = __webpack_require__("a1gu");
+
+      var _getPrototypeOf = __webpack_require__("Nsbk");
+
+      function _createSuper(Derived) {
+        var hasNativeReflectConstruct = _isNativeReflectConstruct();
+        return function _createSuperInternal() {
+          var Super = _getPrototypeOf(Derived),
+            result;
+          if (hasNativeReflectConstruct) {
+            var NewTarget = _getPrototypeOf(this).constructor;
+            result = Reflect.construct(Super, arguments, NewTarget);
+          } else {
+            result = Super.apply(this, arguments);
+          }
+          return _possibleConstructorReturn(this, result);
+        };
+      }
+
+      function _isNativeReflectConstruct() {
+        if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+        if (Reflect.construct.sham) return false;
+        if (typeof Proxy === "function") return true;
+        try {
+          Date.prototype.toString.call(
+            Reflect.construct(Date, [], function() {})
+          );
+          return true;
+        } catch (e) {
+          return false;
+        }
+      }
+
+      exports.__esModule = true;
+      exports["default"] = void 0;
+
+      var _react = __webpack_require__("q1tI");
+
+      var isServer = false;
+
+      var _default = /*#__PURE__*/ (function(_react$Component) {
+        _inherits(_default, _react$Component);
+
+        var _super = _createSuper(_default);
+
+        function _default(props) {
+          var _this;
+
+          _classCallCheck(this, _default);
+
+          _this = _super.call(this, props);
+          _this._hasHeadManager = void 0;
+
+          _this.emitChange = function() {
+            if (_this._hasHeadManager) {
+              _this.props.headManager.updateHead(
+                _this.props.reduceComponentsToState(
+                  _toConsumableArray(_this.props.headManager.mountedInstances),
+                  _this.props
+                )
+              );
+            }
+          };
+
+          _this._hasHeadManager =
+            _this.props.headManager && _this.props.headManager.mountedInstances;
+
+          if (isServer && _this._hasHeadManager) {
+            _this.props.headManager.mountedInstances.add(
+              _assertThisInitialized(_this)
+            );
+
+            _this.emitChange();
+          }
+
+          return _this;
+        }
+
+        _createClass(_default, [
+          {
+            key: "componentDidMount",
+            value: function componentDidMount() {
+              if (this._hasHeadManager) {
+                this.props.headManager.mountedInstances.add(this);
+              }
+
+              this.emitChange();
+            }
+          },
+          {
+            key: "componentDidUpdate",
+            value: function componentDidUpdate() {
+              this.emitChange();
+            }
+          },
+          {
+            key: "componentWillUnmount",
+            value: function componentWillUnmount() {
+              if (this._hasHeadManager) {
+                this.props.headManager.mountedInstances["delete"](this);
+              }
+
+              this.emitChange();
+            }
+          },
+          {
+            key: "render",
+            value: function render() {
+              return null;
+            }
+          }
+        ]);
+
+        return _default;
+      })(_react.Component);
+
+      exports["default"] = _default;
+
+      /***/
+    },
+
+    /***/ ZhPi: /***/ function(module, exports, __webpack_require__) {
+      var arrayLikeToArray = __webpack_require__("WkPL");
+
+      function _unsupportedIterableToArray(o, minLen) {
+        if (!o) return;
+        if (typeof o === "string") return arrayLikeToArray(o, minLen);
+        var n = Object.prototype.toString.call(o).slice(8, -1);
+        if (n === "Object" && o.constructor) n = o.constructor.name;
+        if (n === "Map" || n === "Set") return Array.from(o);
+        if (
+          n === "Arguments" ||
+          /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
+        )
+          return arrayLikeToArray(o, minLen);
+      }
+
+      module.exports = _unsupportedIterableToArray;
+
+      /***/
+    },
+
+    /***/ a1gu: /***/ function(module, exports, __webpack_require__) {
+      var _typeof = __webpack_require__("cDf5");
+
+      var assertThisInitialized = __webpack_require__("PJYZ");
+
+      function _possibleConstructorReturn(self, call) {
+        if (
+          call &&
+          (_typeof(call) === "object" || typeof call === "function")
+        ) {
+          return call;
+        }
+
+        return assertThisInitialized(self);
+      }
+
+      module.exports = _possibleConstructorReturn;
+
+      /***/
+    },
+
+    /***/ cDf5: /***/ function(module, exports) {
+      function _typeof(obj) {
+        "@babel/helpers - typeof";
+
+        if (
+          typeof Symbol === "function" &&
+          typeof Symbol.iterator === "symbol"
+        ) {
+          module.exports = _typeof = function _typeof(obj) {
+            return typeof obj;
+          };
+        } else {
+          module.exports = _typeof = function _typeof(obj) {
+            return obj &&
+              typeof Symbol === "function" &&
+              obj.constructor === Symbol &&
+              obj !== Symbol.prototype
+              ? "symbol"
+              : typeof obj;
+          };
+        }
+
+        return _typeof(obj);
+      }
+
+      module.exports = _typeof;
+
+      /***/
+    },
+
+    /***/ lwAK: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.AmpStateContext = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      var AmpStateContext = _react["default"].createContext({});
+
+      exports.AmpStateContext = AmpStateContext;
+
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ lwsE: /***/ function(module, exports) {
+      function _classCallCheck(instance, Constructor) {
+        if (!(instance instanceof Constructor)) {
+          throw new TypeError("Cannot call a class as a function");
+        }
+      }
+
+      module.exports = _classCallCheck;
+
+      /***/
+    }
+  },
+  [["04ac", 0, 1]]
+]);
Diff for _error-ce975..c1.module.js
@@ -0,0 +1,585 @@
+(window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
+  [5],
+  {
+    /***/ "/0+H": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.isInAmpMode = isInAmpMode;
+      exports.useAmp = useAmp;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _ampContext = __webpack_require__("lwAK");
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      function isInAmpMode() {
+        var { ampFirst = false, hybrid = false, hasQuery = false } =
+          arguments.length > 0 && arguments[0] !== undefined
+            ? arguments[0]
+            : {};
+        return ampFirst || (hybrid && hasQuery);
+      }
+
+      function useAmp() {
+        // Don't assign the context value to a variable to save bytes
+        return isInAmpMode(
+          _react.default.useContext(_ampContext.AmpStateContext)
+        );
+      }
+
+      /***/
+    },
+
+    /***/ "/a9y": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      var _interopRequireDefault = __webpack_require__("TqRt");
+
+      exports.__esModule = true;
+      exports.default = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      var _head = _interopRequireDefault(__webpack_require__("8Kt/"));
+
+      var statusCodes = {
+        400: "Bad Request",
+        404: "This page could not be found",
+        405: "Method Not Allowed",
+        500: "Internal Server Error"
+      };
+
+      function _getInitialProps(_ref) {
+        var { res, err } = _ref;
+        var statusCode =
+          res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
+        return {
+          statusCode
+        };
+      }
+      /**
+       * `Error` component used for handling errors.
+       */
+
+      class Error extends _react.default.Component {
+        render() {
+          var { statusCode } = this.props;
+          var title =
+            this.props.title ||
+            statusCodes[statusCode] ||
+            "An unexpected error has occurred";
+          return /*#__PURE__*/ _react.default.createElement(
+            "div",
+            {
+              style: styles.error
+            },
+            /*#__PURE__*/ _react.default.createElement(
+              _head.default,
+              null,
+              /*#__PURE__*/ _react.default.createElement(
+                "title",
+                null,
+                statusCode,
+                ": ",
+                title
+              )
+            ),
+            /*#__PURE__*/ _react.default.createElement(
+              "div",
+              null,
+              /*#__PURE__*/ _react.default.createElement("style", {
+                dangerouslySetInnerHTML: {
+                  __html: "body { margin: 0 }"
+                }
+              }),
+              statusCode
+                ? /*#__PURE__*/ _react.default.createElement(
+                    "h1",
+                    {
+                      style: styles.h1
+                    },
+                    statusCode
+                  )
+                : null,
+              /*#__PURE__*/ _react.default.createElement(
+                "div",
+                {
+                  style: styles.desc
+                },
+                /*#__PURE__*/ _react.default.createElement(
+                  "h2",
+                  {
+                    style: styles.h2
+                  },
+                  title,
+                  "."
+                )
+              )
+            )
+          );
+        }
+      }
+
+      exports.default = Error;
+      Error.displayName = "ErrorPage";
+      Error.getInitialProps = _getInitialProps;
+      Error.origGetInitialProps = _getInitialProps;
+      var styles = {
+        error: {
+          color: "#000",
+          background: "#fff",
+          fontFamily:
+            '-apple-system, BlinkMacSystemFont, Roboto, "Segoe UI", "Fira Sans", Avenir, "Helvetica Neue", "Lucida Grande", sans-serif',
+          height: "100vh",
+          textAlign: "center",
+          display: "flex",
+          flexDirection: "column",
+          alignItems: "center",
+          justifyContent: "center"
+        },
+        desc: {
+          display: "inline-block",
+          textAlign: "left",
+          lineHeight: "49px",
+          height: "49px",
+          verticalAlign: "middle"
+        },
+        h1: {
+          display: "inline-block",
+          borderRight: "1px solid rgba(0, 0, 0,.3)",
+          margin: 0,
+          marginRight: "20px",
+          padding: "10px 23px 10px 0",
+          fontSize: "24px",
+          fontWeight: 500,
+          verticalAlign: "top"
+        },
+        h2: {
+          fontSize: "14px",
+          fontWeight: "normal",
+          lineHeight: "inherit",
+          margin: 0,
+          padding: 0
+        }
+      };
+
+      /***/
+    },
+
+    /***/ "04ac": /***/ function(module, exports, __webpack_require__) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/_error",
+        function() {
+          return __webpack_require__("/a9y");
+        }
+      ]);
+
+      /***/
+    },
+
+    /***/ "8Kt/": /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.defaultHead = defaultHead;
+      exports.default = void 0;
+
+      var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
+
+      var _sideEffect = _interopRequireDefault(__webpack_require__("Xuae"));
+
+      var _ampContext = __webpack_require__("lwAK");
+
+      var _headManagerContext = __webpack_require__("FYa8");
+
+      var _amp = __webpack_require__("/0+H");
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      function _getRequireWildcardCache() {
+        if (typeof WeakMap !== "function") return null;
+        var cache = new WeakMap();
+
+        _getRequireWildcardCache = function _getRequireWildcardCache() {
+          return cache;
+        };
+
+        return cache;
+      }
+
+      function _interopRequireWildcard(obj) {
+        if (obj && obj.__esModule) {
+          return obj;
+        }
+
+        if (
+          obj === null ||
+          (typeof obj !== "object" && typeof obj !== "function")
+        ) {
+          return {
+            default: obj
+          };
+        }
+
+        var cache = _getRequireWildcardCache();
+
+        if (cache && cache.has(obj)) {
+          return cache.get(obj);
+        }
+
+        var newObj = {};
+        var hasPropertyDescriptor =
+          Object.defineProperty && Object.getOwnPropertyDescriptor;
+
+        for (var key in obj) {
+          if (Object.prototype.hasOwnProperty.call(obj, key)) {
+            var desc = hasPropertyDescriptor
+              ? Object.getOwnPropertyDescriptor(obj, key)
+              : null;
+
+            if (desc && (desc.get || desc.set)) {
+              Object.defineProperty(newObj, key, desc);
+            } else {
+              newObj[key] = obj[key];
+            }
+          }
+        }
+
+        newObj.default = obj;
+
+        if (cache) {
+          cache.set(obj, newObj);
+        }
+
+        return newObj;
+      }
+
+      function defaultHead() {
+        var inAmpMode =
+          arguments.length > 0 && arguments[0] !== undefined
+            ? arguments[0]
+            : false;
+        var head = [
+          /*#__PURE__*/ _react.default.createElement("meta", {
+            charSet: "utf-8"
+          })
+        ];
+
+        if (!inAmpMode) {
+          head.push(
+            /*#__PURE__*/ _react.default.createElement("meta", {
+              name: "viewport",
+              content: "width=device-width"
+            })
+          );
+        }
+
+        return head;
+      }
+
+      function onlyReactElement(list, child) {
+        // React children can be "string" or "number" in this case we ignore them for backwards compat
+        if (typeof child === "string" || typeof child === "number") {
+          return list;
+        } // Adds support for React.Fragment
+
+        if (child.type === _react.default.Fragment) {
+          return list.concat(
+            _react.default.Children.toArray(child.props.children).reduce(
+              (fragmentList, fragmentChild) => {
+                if (
+                  typeof fragmentChild === "string" ||
+                  typeof fragmentChild === "number"
+                ) {
+                  return fragmentList;
+                }
+
+                return fragmentList.concat(fragmentChild);
+              },
+              []
+            )
+          );
+        }
+
+        return list.concat(child);
+      }
+
+      var METATYPES = ["name", "httpEquiv", "charSet", "itemProp"];
+      /*
+returns a function for filtering head child elements
+which shouldn't be duplicated, like <title/>
+Also adds support for deduplicated `key` properties
+*/
+
+      function unique() {
+        var keys = new Set();
+        var tags = new Set();
+        var metaTypes = new Set();
+        var metaCategories = {};
+        return h => {
+          var isUnique = 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)) {
+              isUnique = false;
+            } else {
+              keys.add(key);
+            }
+          } // eslint-disable-next-line default-case
+
+          switch (h.type) {
+            case "title":
+            case "base":
+              if (tags.has(h.type)) {
+                isUnique = false;
+              } else {
+                tags.add(h.type);
+              }
+
+              break;
+
+            case "meta":
+              for (var i = 0, len = METATYPES.length; i < len; i++) {
+                var metatype = METATYPES[i];
+                if (!h.props.hasOwnProperty(metatype)) continue;
+
+                if (metatype === "charSet") {
+                  if (metaTypes.has(metatype)) {
+                    isUnique = false;
+                  } else {
+                    metaTypes.add(metatype);
+                  }
+                } else {
+                  var category = h.props[metatype];
+                  var categories = metaCategories[metatype] || new Set();
+
+                  if (categories.has(category)) {
+                    isUnique = false;
+                  } else {
+                    categories.add(category);
+                    metaCategories[metatype] = categories;
+                  }
+                }
+              }
+
+              break;
+          }
+
+          return isUnique;
+        };
+      }
+      /**
+       *
+       * @param headElements List of multiple <Head> instances
+       */
+
+      function reduceComponents(headElements, props) {
+        return headElements
+          .reduce((list, headElement) => {
+            var headElementChildren = _react.default.Children.toArray(
+              headElement.props.children
+            );
+
+            return list.concat(headElementChildren);
+          }, [])
+          .reduce(onlyReactElement, [])
+          .reverse()
+          .concat(defaultHead(props.inAmpMode))
+          .filter(unique())
+          .reverse()
+          .map((c, i) => {
+            var key = c.key || i;
+            return _react.default.cloneElement(c, {
+              key
+            });
+          });
+      }
+      /**
+       * This component injects elements to `<head>` of your page.
+       * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
+       */
+
+      function Head(_ref) {
+        var { children } = _ref;
+        var ampState = (0, _react.useContext)(_ampContext.AmpStateContext);
+        var headManager = (0, _react.useContext)(
+          _headManagerContext.HeadManagerContext
+        );
+        return /*#__PURE__*/ _react.default.createElement(
+          _sideEffect.default,
+          {
+            reduceComponentsToState: reduceComponents,
+            headManager: headManager,
+            inAmpMode: (0, _amp.isInAmpMode)(ampState)
+          },
+          children
+        );
+      } // TODO: Remove in the next major release
+
+      Head.rewind = () => {};
+
+      var _default = Head;
+      exports.default = _default;
+
+      /***/
+    },
+
+    /***/ FYa8: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.HeadManagerContext = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      var HeadManagerContext = _react.default.createContext({});
+
+      exports.HeadManagerContext = HeadManagerContext;
+
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ Qetd: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+      var assign = Object.assign.bind(Object);
+      module.exports = assign;
+      module.exports.default = module.exports;
+      //# sourceMappingURL=object-assign.js.map
+
+      /***/
+    },
+
+    /***/ TqRt: /***/ function(module, exports) {
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      module.exports = _interopRequireDefault;
+
+      /***/
+    },
+
+    /***/ Xuae: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.default = void 0;
+
+      var _react = __webpack_require__("q1tI");
+
+      var isServer = false;
+
+      class _default extends _react.Component {
+        constructor(props) {
+          super(props);
+          this._hasHeadManager = void 0;
+
+          this.emitChange = () => {
+            if (this._hasHeadManager) {
+              this.props.headManager.updateHead(
+                this.props.reduceComponentsToState(
+                  [...this.props.headManager.mountedInstances],
+                  this.props
+                )
+              );
+            }
+          };
+
+          this._hasHeadManager =
+            this.props.headManager && this.props.headManager.mountedInstances;
+
+          if (isServer && this._hasHeadManager) {
+            this.props.headManager.mountedInstances.add(this);
+            this.emitChange();
+          }
+        }
+
+        componentDidMount() {
+          if (this._hasHeadManager) {
+            this.props.headManager.mountedInstances.add(this);
+          }
+
+          this.emitChange();
+        }
+
+        componentDidUpdate() {
+          this.emitChange();
+        }
+
+        componentWillUnmount() {
+          if (this._hasHeadManager) {
+            this.props.headManager.mountedInstances.delete(this);
+          }
+
+          this.emitChange();
+        }
+
+        render() {
+          return null;
+        }
+      }
+
+      exports.default = _default;
+
+      /***/
+    },
+
+    /***/ lwAK: /***/ function(module, exports, __webpack_require__) {
+      "use strict";
+
+      exports.__esModule = true;
+      exports.AmpStateContext = void 0;
+
+      var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+      function _interopRequireDefault(obj) {
+        return obj && obj.__esModule
+          ? obj
+          : {
+              default: obj
+            };
+      }
+
+      var AmpStateContext = _react.default.createContext({});
+
+      exports.AmpStateContext = AmpStateContext;
+
+      if (false) {
+      }
+
+      /***/
+    }
+  },
+  [["04ac", 0, 1]]
+]);
< Post job cleanup. [command]/usr/bin/git version git version 2.27.0 [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || : [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader http.https://github.com/.extraheader [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || : Cleaning up orphan processes Commit: a24f08e

@timneutkens timneutkens merged commit a33bb5b into vercel:canary Jul 17, 2020
@timneutkens timneutkens deleted the fix/app-document-import-order-test branch July 17, 2020 08:38
@timneutkens
Copy link
Member Author

Was reviewed by @ijjk yesterday.

@vercel vercel locked as resolved and limited conversation to collaborators Jan 30, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants