codeant-ai-for-open-source[bot] commented on code in PR #36191:
URL: https://github.com/apache/superset/pull/36191#discussion_r2624939226


##########
superset/initialization/__init__.py:
##########
@@ -650,6 +650,11 @@ def apply_http_headers(response: Response) -> Response:
             for k, v in 
self.superset_app.config["DEFAULT_HTTP_HEADERS"].items():
                 if k not in response.headers:
                     response.headers[k] = v
+
+            # Allow service worker to control the root scope for PWA file 
handling
+            if request.path.endswith("service-worker.js"):

Review Comment:
   **Suggestion:** The new logic always sets the `Service-Worker-Allowed` 
header to `/` for `service-worker.js` requests, overwriting any value 
configured via `HTTP_HEADERS` or `OVERRIDE_HTTP_HEADERS`, which breaks the 
existing configuration contract and prevents users from narrowing or 
customizing the service worker scope. [logic error]
   
   **Severity Level:** Minor ⚠️
   ```suggestion
               if request.path.endswith("service-worker.js") and 
"Service-Worker-Allowed" not in response.headers:
   ```
   <details>
   <summary><b>Why it matters? ⭐ </b></summary>
   
   The current code unconditionally sets Service-Worker-Allowed to "/", which 
will overwrite any value provided via 
OVERRIDE_HTTP_HEADERS/HTTP_HEADERS/DEFAULT_HTTP_HEADERS or by other middleware. 
The suggested check to only set the header when it's not already present 
preserves user configuration while still providing a sensible default for 
service-worker requests — this fixes a real logic/regression risk introduced by 
the PR.
   </details>
   <details>
   <summary><b>Prompt for AI Agent 🤖 </b></summary>
   
   ```mdx
   This is a comment left during a code review.
   
   **Path:** superset/initialization/__init__.py
   **Line:** 655:655
   **Comment:**
        *Logic Error: The new logic always sets the `Service-Worker-Allowed` 
header to `/` for `service-worker.js` requests, overwriting any value 
configured via `HTTP_HEADERS` or `OVERRIDE_HTTP_HEADERS`, which breaks the 
existing configuration contract and prevents users from narrowing or 
customizing the service worker scope.
   
   Validate the correctness of the flagged issue. If correct, How can I resolve 
this? If you propose a fix, implement it and please make it concise.
   ```
   </details>



##########
superset-frontend/src/service-worker.ts:
##########
@@ -0,0 +1,38 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+// Service Worker types (declared locally to avoid polluting global scope)
+declare const self: {
+  skipWaiting(): Promise<void>;
+  clients: { claim(): Promise<void> };
+  addEventListener(
+    type: 'install' | 'activate',
+    listener: (event: { waitUntil(promise: Promise<unknown>): void }) => void,
+  ): void;
+};
+
+self.addEventListener('install', () => {
+  self.skipWaiting();

Review Comment:
   **Suggestion:** The install handler calls the asynchronous-like 
`skipWaiting` without tying its completion to the install event lifecycle, so 
the browser may terminate the worker before the promise settles and the update 
is not reliably applied; using `event.waitUntil(self.skipWaiting())` ensures 
the install phase waits for `skipWaiting` to finish. [logic error]
   
   **Severity Level:** Minor ⚠️
   ```suggestion
   self.addEventListener('install', event => {
     event.waitUntil(self.skipWaiting());
   ```
   <details>
   <summary><b>Why it matters? ⭐ </b></summary>
   
   The current install handler calls the async skipWaiting() but doesn't tie 
its Promise to the install lifecycle, so the browser may terminate the 
installing worker before skipWaiting() completes. Wrapping it with 
event.waitUntil(...) is the correct Service Worker lifecycle usage and ensures 
the install phase waits for skipWaiting() to settle. This fixes a real 
lifecycle reliability issue rather than being merely cosmetic.
   </details>
   <details>
   <summary><b>Prompt for AI Agent 🤖 </b></summary>
   
   ```mdx
   This is a comment left during a code review.
   
   **Path:** superset-frontend/src/service-worker.ts
   **Line:** 30:31
   **Comment:**
        *Logic Error: The install handler calls the asynchronous-like 
`skipWaiting` without tying its completion to the install event lifecycle, so 
the browser may terminate the worker before the promise settles and the update 
is not reliably applied; using `event.waitUntil(self.skipWaiting())` ensures 
the install phase waits for `skipWaiting` to finish.
   
   Validate the correctness of the flagged issue. If correct, How can I resolve 
this? If you propose a fix, implement it and please make it concise.
   ```
   </details>



##########
superset/static/service-worker.js:
##########
@@ -0,0 +1,1433 @@
+/*
+ * ATTENTION: An "eval-source-map" devtool has been used.
+ * This devtool is neither made for production nor for readable output files.
+ * It uses "eval()" calls to create a separate source file with attached 
SourceMaps in the browser devtools.
+ * If you are trying to read the output file, select a different devtool 
(https://webpack.js.org/configuration/devtool/)
+ * or disable the default devtool with "devtool: false".
+ * If you are looking for production-ready output files, see mode: 
"production" (https://webpack.js.org/configuration/mode/).
+ */
+/******/ (() => { // webpackBootstrap
+/******/       "use strict";
+/******/       var __webpack_modules__ = ({
+
+/***/ "./src/service-worker.ts":
+/*!*******************************!*\
+  !*** ./src/service-worker.ts ***!
+  \*******************************/
+/***/ ((module, __unused_webpack___webpack_exports__, __webpack_require__) => {
+
+eval("{/* provided dependency */ var __react_refresh_utils__ = 
__webpack_require__(/*! 
./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js 
*/ 
\"./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js\");\n/*
 provided dependency */ var __react_refresh_error_overlay__ = 
__webpack_require__(/*! 
./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ 
\"./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js\");\n__webpack_require__.$Refresh$.runtime
 = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ 
\"./node_modules/react-refresh/runtime.js\");\n\n/**\n * Licensed to the Apache 
Software Foundation (ASF) under one\n * or more contributor license agreements. 
 See the NOTICE file\n * distributed with this work for additional 
information\n * regarding copyright ownership.  The ASF licenses this file\n * 
to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not 
use this fi
 le except in compliance\n * with the License.  You may obtain a copy of the 
License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless 
required by applicable law or agreed to in writing,\n * software distributed 
under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES 
OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for 
the\n * specific language governing permissions and limitations\n * under the 
License.\n */ // Service Worker types (declared locally to avoid polluting 
global scope)\nself.addEventListener('install', ()=>{\n    
self.skipWaiting();\n});\nself.addEventListener('activate', (event)=>{\n    
event.waitUntil(self.clients.claim());\n});\n\n\n\nconst $ReactRefreshModuleId$ 
= __webpack_require__.$Refresh$.moduleId;\nconst $ReactRefreshCurrentExports$ = 
__react_refresh_utils__.getModuleExports(\n\t$ReactRefreshModuleId$\n);\n\nfunction
 $ReactRefreshModuleRuntime$(exports) {\n\tif (true) {\n\t\tlet errorOverlay
 ;\n\t\tif (typeof __react_refresh_error_overlay__ !== 'undefined') 
{\n\t\t\terrorOverlay = __react_refresh_error_overlay__;\n\t\t}\n\t\tlet 
testMode;\n\t\tif (typeof __react_refresh_test__ !== 'undefined') 
{\n\t\t\ttestMode = __react_refresh_test__;\n\t\t}\n\t\treturn 
__react_refresh_utils__.executeRuntime(\n\t\t\texports,\n\t\t\t$ReactRefreshModuleId$,\n\t\t\tmodule.hot,\n\t\t\terrorOverlay,\n\t\t\ttestMode\n\t\t);\n\t}\n}\n\nif
 (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof 
Promise) 
{\n\t$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);\n} else 
{\n\t$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);\n}//# 
sourceURL=[module]\n//# 
sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc2VydmljZS13b3JrZXIudHMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQTtBQVlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc3VwZXJzZXQvLi9zcmMvc2VydmljZS13b3JrZXIudHM/N2Y1OCJd
 
LCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbiAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbiAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbiAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbiAqIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxuICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbiAqIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4gKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMa
 
WNlbnNlIGZvciB0aGVcbiAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbiAqIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIFNlcnZpY2UgV29ya2VyIHR5cGVzIChkZWNsYXJlZCBsb2NhbGx5IHRvIGF2b2lkIHBvbGx1dGluZyBnbG9iYWwgc2NvcGUpXG5kZWNsYXJlIGNvbnN0IHNlbGY6IHtcbiAgc2tpcFdhaXRpbmcoKTogUHJvbWlzZTx2b2lkPjtcbiAgY2xpZW50czogeyBjbGFpbSgpOiBQcm9taXNlPHZvaWQ+IH07XG4gIGFkZEV2ZW50TGlzdGVuZXIoXG4gICAgdHlwZTogJ2luc3RhbGwnIHwgJ2FjdGl2YXRlJyxcbiAgICBsaXN0ZW5lcjogKGV2ZW50OiB7IHdhaXRVbnRpbChwcm9taXNlOiBQcm9taXNlPHVua25vd24+KTogdm9pZCB9KSA9PiB2b2lkLFxuICApOiB2b2lkO1xufTtcblxuc2VsZi5hZGRFdmVudExpc3RlbmVyKCdpbnN0YWxsJywgKCkgPT4ge1xuICBzZWxmLnNraXBXYWl0aW5nKCk7XG59KTtcblxuc2VsZi5hZGRFdmVudExpc3RlbmVyKCdhY3RpdmF0ZScsIGV2ZW50ID0+IHtcbiAgZXZlbnQud2FpdFVudGlsKHNlbGYuY2xpZW50cy5jbGFpbSgpKTtcbn0pO1xuXG5leHBvcnQge307XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//#
 sourceURL=webpack-internal:///./src/service-worker.ts\n\n}");
+
+/***/ })
+
+/******/       });
+/************************************************************************/
+/******/       // The module cache
+/******/       var __webpack_module_cache__ = {};
+/******/
+/******/       // The require function
+/******/       function __webpack_require__(moduleId) {
+/******/               // Check if module is in cache
+/******/               var cachedModule = __webpack_module_cache__[moduleId];
+/******/               if (cachedModule !== undefined) {
+/******/                       return cachedModule.exports;
+/******/               }
+/******/               // Create a new module (and put it into the cache)
+/******/               var module = __webpack_module_cache__[moduleId] = {
+/******/                       id: moduleId,
+/******/                       loaded: false,
+/******/                       exports: {}
+/******/               };
+/******/
+/******/               // Execute the module function
+/******/               var execOptions = { id: moduleId, module: module, 
factory: __webpack_modules__[moduleId], require: __webpack_require__ };
+/******/               __webpack_require__.i.forEach(function(handler) { 
handler(execOptions); });
+/******/               module = execOptions.module;
+/******/               execOptions.factory.call(module.exports, module, 
module.exports, execOptions.require);
+/******/
+/******/               // Flag the module as loaded
+/******/               module.loaded = true;
+/******/
+/******/               // Return the exports of the module
+/******/               return module.exports;
+/******/       }
+/******/
+/******/       // expose the modules object (__webpack_modules__)
+/******/       __webpack_require__.m = __webpack_modules__;
+/******/
+/******/       // expose the module cache
+/******/       __webpack_require__.c = __webpack_module_cache__;
+/******/
+/******/       // expose the module execution interceptor
+/******/       __webpack_require__.i = [];
+/******/
+/************************************************************************/
+/******/       /* webpack/runtime/chunk loaded */
+/******/       (() => {
+/******/               var deferred = [];
+/******/               __webpack_require__.O = (result, chunkIds, fn, 
priority) => {
+/******/                       if(chunkIds) {
+/******/                               priority = priority || 0;
+/******/                               for(var i = deferred.length; i > 0 && 
deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
+/******/                               deferred[i] = [chunkIds, fn, priority];
+/******/                               return;
+/******/                       }
+/******/                       var notFulfilled = Infinity;
+/******/                       for (var i = 0; i < deferred.length; i++) {
+/******/                               var [chunkIds, fn, priority] = 
deferred[i];
+/******/                               var fulfilled = true;
+/******/                               for (var j = 0; j < chunkIds.length; 
j++) {
+/******/                                       if ((priority & 1 === 0 || 
notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => 
(__webpack_require__.O[key](chunkIds[j])))) {
+/******/                                               chunkIds.splice(j--, 1);
+/******/                                       } else {
+/******/                                               fulfilled = false;
+/******/                                               if(priority < 
notFulfilled) notFulfilled = priority;
+/******/                                       }
+/******/                               }
+/******/                               if(fulfilled) {
+/******/                                       deferred.splice(i--, 1)
+/******/                                       var r = fn();
+/******/                                       if (r !== undefined) result = r;
+/******/                               }
+/******/                       }
+/******/                       return result;
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/compat get default export */
+/******/       (() => {
+/******/               // getDefaultExport function for compatibility with 
non-harmony modules
+/******/               __webpack_require__.n = (module) => {
+/******/                       var getter = module && module.__esModule ?
+/******/                               () => (module['default']) :
+/******/                               () => (module);
+/******/                       __webpack_require__.d(getter, { a: getter });
+/******/                       return getter;
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/define property getters */
+/******/       (() => {
+/******/               // define getter functions for harmony exports
+/******/               __webpack_require__.d = (exports, definition) => {
+/******/                       for(var key in definition) {
+/******/                               if(__webpack_require__.o(definition, 
key) && !__webpack_require__.o(exports, key)) {
+/******/                                       Object.defineProperty(exports, 
key, { enumerable: true, get: definition[key] });
+/******/                               }
+/******/                       }
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/get javascript update chunk filename */
+/******/       (() => {
+/******/               // This function allow to reference all chunks
+/******/               __webpack_require__.hu = (chunkId) => {
+/******/                       // return url for filenames based on template
+/******/                       return "" + chunkId + "." + 
__webpack_require__.h() + ".hot-update.js";
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/get update manifest filename */
+/******/       (() => {
+/******/               __webpack_require__.hmrF = () => ("service-worker." + 
__webpack_require__.h() + ".hot-update.json");
+/******/       })();
+/******/
+/******/       /* webpack/runtime/getFullHash */
+/******/       (() => {
+/******/               __webpack_require__.h = () => ("06957156a265af42d2ae")
+/******/       })();
+/******/
+/******/       /* webpack/runtime/harmony module decorator */
+/******/       (() => {
+/******/               __webpack_require__.hmd = (module) => {
+/******/                       module = Object.create(module);
+/******/                       if (!module.children) module.children = [];
+/******/                       Object.defineProperty(module, 'exports', {
+/******/                               enumerable: true,
+/******/                               set: () => {
+/******/                                       throw new Error('ES Modules may 
not assign module.exports or exports.*, Use ESM export syntax, instead: ' + 
module.id);
+/******/                               }
+/******/                       });
+/******/                       return module;
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/hasOwnProperty shorthand */
+/******/       (() => {
+/******/               __webpack_require__.o = (obj, prop) => 
(Object.prototype.hasOwnProperty.call(obj, prop))
+/******/       })();
+/******/
+/******/       /* webpack/runtime/load script */
+/******/       (() => {
+/******/               var inProgress = {};
+/******/               var dataWebpackPrefix = "superset:";
+/******/               // loadScript function to load a script via script tag
+/******/               __webpack_require__.l = (url, done, key, chunkId) => {
+/******/                       if(inProgress[url]) { 
inProgress[url].push(done); return; }
+/******/                       var script, needAttach;
+/******/                       if(key !== undefined) {
+/******/                               var scripts = 
document.getElementsByTagName("script");
+/******/                               for(var i = 0; i < scripts.length; i++) 
{
+/******/                                       var s = scripts[i];
+/******/                                       if(s.getAttribute("src") == url 
|| s.getAttribute("data-webpack") == dataWebpackPrefix + key) { script = s; 
break; }
+/******/                               }
+/******/                       }
+/******/                       if(!script) {
+/******/                               needAttach = true;
+/******/                               script = 
document.createElement('script');
+/******/
+/******/                               script.charset = 'utf-8';
+/******/                               if (__webpack_require__.nc) {
+/******/                                       script.setAttribute("nonce", 
__webpack_require__.nc);
+/******/                               }
+/******/                               script.setAttribute("data-webpack", 
dataWebpackPrefix + key);
+/******/
+/******/                               script.src = url;
+/******/                       }
+/******/                       inProgress[url] = [done];
+/******/                       var onScriptComplete = (prev, event) => {
+/******/                               // avoid mem leaks in IE.
+/******/                               script.onerror = script.onload = null;
+/******/                               clearTimeout(timeout);
+/******/                               var doneFns = inProgress[url];
+/******/                               delete inProgress[url];
+/******/                               script.parentNode && 
script.parentNode.removeChild(script);
+/******/                               doneFns && doneFns.forEach((fn) => 
(fn(event)));
+/******/                               if(prev) return prev(event);
+/******/                       }
+/******/                       var timeout = 
setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: 
script }), 120000);
+/******/                       script.onerror = onScriptComplete.bind(null, 
script.onerror);
+/******/                       script.onload = onScriptComplete.bind(null, 
script.onload);
+/******/                       needAttach && document.head.appendChild(script);
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/make namespace object */
+/******/       (() => {
+/******/               // define __esModule on exports
+/******/               __webpack_require__.r = (exports) => {
+/******/                       if(typeof Symbol !== 'undefined' && 
Symbol.toStringTag) {
+/******/                               Object.defineProperty(exports, 
Symbol.toStringTag, { value: 'Module' });
+/******/                       }
+/******/                       Object.defineProperty(exports, '__esModule', { 
value: true });
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/node module decorator */
+/******/       (() => {
+/******/               __webpack_require__.nmd = (module) => {
+/******/                       module.paths = [];
+/******/                       if (!module.children) module.children = [];
+/******/                       return module;
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/sharing */
+/******/       (() => {
+/******/               __webpack_require__.S = {};
+/******/               var initPromises = {};
+/******/               var initTokens = {};
+/******/               __webpack_require__.I = (name, initScope) => {
+/******/                       if(!initScope) initScope = [];
+/******/                       // handling circular init calls
+/******/                       var initToken = initTokens[name];
+/******/                       if(!initToken) initToken = initTokens[name] = 
{};
+/******/                       if(initScope.indexOf(initToken) >= 0) return;
+/******/                       initScope.push(initToken);
+/******/                       // only runs once
+/******/                       if(initPromises[name]) return 
initPromises[name];
+/******/                       // creates a new share scope if needed
+/******/                       
if(!__webpack_require__.o(__webpack_require__.S, name)) 
__webpack_require__.S[name] = {};
+/******/                       // runs all init snippets from all modules 
reachable
+/******/                       var scope = __webpack_require__.S[name];
+/******/                       var warn = (msg) => {
+/******/                               if (typeof console !== "undefined" && 
console.warn) console.warn(msg);
+/******/                       };
+/******/                       var uniqueName = "superset";
+/******/                       var register = (name, version, factory, eager) 
=> {
+/******/                               var versions = scope[name] = 
scope[name] || {};
+/******/                               var activeVersion = versions[version];
+/******/                               if(!activeVersion || 
(!activeVersion.loaded && (!eager != !activeVersion.eager ? eager : uniqueName 
> activeVersion.from))) versions[version] = { get: factory, from: uniqueName, 
eager: !!eager };
+/******/                       };
+/******/                       var initExternal = (id) => {
+/******/                               var handleError = (err) => 
(warn("Initialization of sharing external failed: " + err));
+/******/                               try {
+/******/                                       var module = 
__webpack_require__(id);
+/******/                                       if(!module) return;
+/******/                                       var initFn = (module) => 
(module && module.init && module.init(__webpack_require__.S[name], initScope))
+/******/                                       if(module.then) return 
promises.push(module.then(initFn, handleError));
+/******/                                       var initResult = initFn(module);
+/******/                                       if(initResult && 
initResult.then) return promises.push(initResult['catch'](handleError));
+/******/                               } catch(err) { handleError(err); }
+/******/                       }
+/******/                       var promises = [];
+/******/                       switch(name) {
+/******/                               case "default": {
+/******/                                       register("antd", "5.27.6", () 
=> (() => (__webpack_require__(/*! ./node_modules/antd/es/index.js */ 
"./node_modules/antd/es/index.js"))), 1);
+/******/                                       register("react-dom", "17.0.2", 
() => (() => (__webpack_require__(/*! ./node_modules/react-dom/index.js */ 
"./node_modules/react-dom/index.js"))), 1);
+/******/                                       register("react", "17.0.2", () 
=> (() => (__webpack_require__(/*! ./node_modules/react/index.js */ 
"./node_modules/react/index.js"))), 1);
+/******/                               }
+/******/                               break;
+/******/                       }
+/******/                       if(!promises.length) return initPromises[name] 
= 1;
+/******/                       return initPromises[name] = 
Promise.all(promises).then(() => (initPromises[name] = 1));
+/******/               };
+/******/       })();
+/******/
+/******/       /* webpack/runtime/hot module replacement */
+/******/       (() => {
+/******/               var currentModuleData = {};
+/******/               var installedModules = __webpack_require__.c;
+/******/
+/******/               // module and require creation
+/******/               var currentChildModule;
+/******/               var currentParents = [];
+/******/
+/******/               // status
+/******/               var registeredStatusHandlers = [];
+/******/               var currentStatus = "idle";
+/******/
+/******/               // while downloading
+/******/               var blockingPromises = 0;
+/******/               var blockingPromisesWaiting = [];
+/******/
+/******/               // The update info
+/******/               var currentUpdateApplyHandlers;
+/******/               var queuedInvalidatedModules;
+/******/
+/******/               __webpack_require__.hmrD = currentModuleData;
+/******/
+/******/               __webpack_require__.i.push(function (options) {
+/******/                       var module = options.module;
+/******/                       var require = createRequire(options.require, 
options.id);
+/******/                       module.hot = createModuleHotObject(options.id, 
module);
+/******/                       module.parents = currentParents;
+/******/                       module.children = [];
+/******/                       currentParents = [];
+/******/                       options.require = require;
+/******/               });
+/******/
+/******/               __webpack_require__.hmrC = {};
+/******/               __webpack_require__.hmrI = {};
+/******/
+/******/               function createRequire(require, moduleId) {
+/******/                       var me = installedModules[moduleId];
+/******/                       if (!me) return require;
+/******/                       var fn = function (request) {
+/******/                               if (me.hot.active) {
+/******/                                       if (installedModules[request]) {
+/******/                                               var parents = 
installedModules[request].parents;
+/******/                                               if 
(parents.indexOf(moduleId) === -1) {
+/******/                                                       
parents.push(moduleId);
+/******/                                               }
+/******/                                       } else {
+/******/                                               currentParents = 
[moduleId];
+/******/                                               currentChildModule = 
request;
+/******/                                       }
+/******/                                       if 
(me.children.indexOf(request) === -1) {
+/******/                                               
me.children.push(request);
+/******/                                       }
+/******/                               } else {
+/******/                                       console.warn(
+/******/                                               "[HMR] unexpected 
require(" +
+/******/                                                       request +
+/******/                                                       ") from 
disposed module " +
+/******/                                                       moduleId
+/******/                                       );
+/******/                                       currentParents = [];
+/******/                               }
+/******/                               return require(request);
+/******/                       };
+/******/                       var createPropertyDescriptor = function (name) {
+/******/                               return {
+/******/                                       configurable: true,
+/******/                                       enumerable: true,
+/******/                                       get: function () {
+/******/                                               return require[name];
+/******/                                       },
+/******/                                       set: function (value) {
+/******/                                               require[name] = value;
+/******/                                       }
+/******/                               };
+/******/                       };
+/******/                       for (var name in require) {
+/******/                               if 
(Object.prototype.hasOwnProperty.call(require, name) && name !== "e") {
+/******/                                       Object.defineProperty(fn, name, 
createPropertyDescriptor(name));
+/******/                               }
+/******/                       }
+/******/                       fn.e = function (chunkId, fetchPriority) {
+/******/                               return 
trackBlockingPromise(require.e(chunkId, fetchPriority));
+/******/                       };
+/******/                       return fn;
+/******/               }
+/******/
+/******/               function createModuleHotObject(moduleId, me) {
+/******/                       var _main = currentChildModule !== moduleId;
+/******/                       var hot = {
+/******/                               // private stuff
+/******/                               _acceptedDependencies: {},
+/******/                               _acceptedErrorHandlers: {},
+/******/                               _declinedDependencies: {},
+/******/                               _selfAccepted: false,
+/******/                               _selfDeclined: false,
+/******/                               _selfInvalidated: false,
+/******/                               _disposeHandlers: [],
+/******/                               _main: _main,
+/******/                               _requireSelf: function () {
+/******/                                       currentParents = 
me.parents.slice();
+/******/                                       currentChildModule = _main ? 
undefined : moduleId;
+/******/                                       __webpack_require__(moduleId);
+/******/                               },
+/******/
+/******/                               // Module API
+/******/                               active: true,
+/******/                               accept: function (dep, callback, 
errorHandler) {
+/******/                                       if (dep === undefined) 
hot._selfAccepted = true;
+/******/                                       else if (typeof dep === 
"function") hot._selfAccepted = dep;
+/******/                                       else if (typeof dep === 
"object" && dep !== null) {
+/******/                                               for (var i = 0; i < 
dep.length; i++) {
+/******/                                                       
hot._acceptedDependencies[dep[i]] = callback || function () {};
+/******/                                                       
hot._acceptedErrorHandlers[dep[i]] = errorHandler;
+/******/                                               }
+/******/                                       } else {
+/******/                                               
hot._acceptedDependencies[dep] = callback || function () {};
+/******/                                               
hot._acceptedErrorHandlers[dep] = errorHandler;
+/******/                                       }
+/******/                               },
+/******/                               decline: function (dep) {
+/******/                                       if (dep === undefined) 
hot._selfDeclined = true;
+/******/                                       else if (typeof dep === 
"object" && dep !== null)
+/******/                                               for (var i = 0; i < 
dep.length; i++)
+/******/                                                       
hot._declinedDependencies[dep[i]] = true;
+/******/                                       else 
hot._declinedDependencies[dep] = true;
+/******/                               },
+/******/                               dispose: function (callback) {
+/******/                                       
hot._disposeHandlers.push(callback);
+/******/                               },
+/******/                               addDisposeHandler: function (callback) {
+/******/                                       
hot._disposeHandlers.push(callback);
+/******/                               },
+/******/                               removeDisposeHandler: function 
(callback) {
+/******/                                       var idx = 
hot._disposeHandlers.indexOf(callback);
+/******/                                       if (idx >= 0) 
hot._disposeHandlers.splice(idx, 1);
+/******/                               },
+/******/                               invalidate: function () {
+/******/                                       this._selfInvalidated = true;
+/******/                                       switch (currentStatus) {
+/******/                                               case "idle":
+/******/                                                       
currentUpdateApplyHandlers = [];
+/******/                                                       
Object.keys(__webpack_require__.hmrI).forEach(function (key) {
+/******/                                                               
__webpack_require__.hmrI[key](
+/******/                                                                       
moduleId,
+/******/                                                                       
currentUpdateApplyHandlers
+/******/                                                               );
+/******/                                                       });
+/******/                                                       
setStatus("ready");
+/******/                                                       break;
+/******/                                               case "ready":
+/******/                                                       
Object.keys(__webpack_require__.hmrI).forEach(function (key) {
+/******/                                                               
__webpack_require__.hmrI[key](
+/******/                                                                       
moduleId,
+/******/                                                                       
currentUpdateApplyHandlers
+/******/                                                               );
+/******/                                                       });
+/******/                                                       break;
+/******/                                               case "prepare":
+/******/                                               case "check":
+/******/                                               case "dispose":
+/******/                                               case "apply":
+/******/                                                       
(queuedInvalidatedModules = queuedInvalidatedModules || []).push(
+/******/                                                               moduleId
+/******/                                                       );
+/******/                                                       break;
+/******/                                               default:
+/******/                                                       // ignore 
requests in error states
+/******/                                                       break;
+/******/                                       }
+/******/                               },
+/******/
+/******/                               // Management API
+/******/                               check: hotCheck,
+/******/                               apply: hotApply,
+/******/                               status: function (l) {
+/******/                                       if (!l) return currentStatus;
+/******/                                       
registeredStatusHandlers.push(l);
+/******/                               },
+/******/                               addStatusHandler: function (l) {
+/******/                                       
registeredStatusHandlers.push(l);
+/******/                               },
+/******/                               removeStatusHandler: function (l) {
+/******/                                       var idx = 
registeredStatusHandlers.indexOf(l);
+/******/                                       if (idx >= 0) 
registeredStatusHandlers.splice(idx, 1);
+/******/                               },
+/******/
+/******/                               // inherit from previous dispose call
+/******/                               data: currentModuleData[moduleId]
+/******/                       };
+/******/                       currentChildModule = undefined;
+/******/                       return hot;
+/******/               }
+/******/
+/******/               function setStatus(newStatus) {
+/******/                       currentStatus = newStatus;
+/******/                       var results = [];
+/******/
+/******/                       for (var i = 0; i < 
registeredStatusHandlers.length; i++)
+/******/                               results[i] = 
registeredStatusHandlers[i].call(null, newStatus);
+/******/
+/******/                       return Promise.all(results).then(function () 
{});
+/******/               }
+/******/
+/******/               function unblock() {
+/******/                       if (--blockingPromises === 0) {
+/******/                               setStatus("ready").then(function () {
+/******/                                       if (blockingPromises === 0) {
+/******/                                               var list = 
blockingPromisesWaiting;
+/******/                                               blockingPromisesWaiting 
= [];
+/******/                                               for (var i = 0; i < 
list.length; i++) {
+/******/                                                       list[i]();
+/******/                                               }
+/******/                                       }
+/******/                               });
+/******/                       }
+/******/               }
+/******/
+/******/               function trackBlockingPromise(promise) {
+/******/                       switch (currentStatus) {
+/******/                               case "ready":
+/******/                                       setStatus("prepare");
+/******/                               /* fallthrough */
+/******/                               case "prepare":
+/******/                                       blockingPromises++;
+/******/                                       promise.then(unblock, unblock);
+/******/                                       return promise;
+/******/                               default:
+/******/                                       return promise;
+/******/                       }
+/******/               }
+/******/
+/******/               function waitForBlockingPromises(fn) {
+/******/                       if (blockingPromises === 0) return fn();
+/******/                       return new Promise(function (resolve) {
+/******/                               blockingPromisesWaiting.push(function 
() {
+/******/                                       resolve(fn());
+/******/                               });
+/******/                       });
+/******/               }
+/******/
+/******/               function hotCheck(applyOnUpdate) {
+/******/                       if (currentStatus !== "idle") {
+/******/                               throw new Error("check() is only 
allowed in idle status");
+/******/                       }
+/******/                       return setStatus("check")
+/******/                               .then(__webpack_require__.hmrM)
+/******/                               .then(function (update) {
+/******/                                       if (!update) {
+/******/                                               return 
setStatus(applyInvalidatedModules() ? "ready" : "idle").then(
+/******/                                                       function () {
+/******/                                                               return 
null;
+/******/                                                       }
+/******/                                               );
+/******/                                       }
+/******/
+/******/                                       return 
setStatus("prepare").then(function () {
+/******/                                               var updatedModules = [];
+/******/                                               
currentUpdateApplyHandlers = [];
+/******/
+/******/                                               return Promise.all(
+/******/                                                       
Object.keys(__webpack_require__.hmrC).reduce(function (
+/******/                                                               
promises,
+/******/                                                               key
+/******/                                                       ) {
+/******/                                                               
__webpack_require__.hmrC[key](
+/******/                                                                       
update.c,
+/******/                                                                       
update.r,
+/******/                                                                       
update.m,
+/******/                                                                       
promises,
+/******/                                                                       
currentUpdateApplyHandlers,
+/******/                                                                       
updatedModules
+/******/                                                               );
+/******/                                                               return 
promises;
+/******/                                                       }, [])
+/******/                                               ).then(function () {
+/******/                                                       return 
waitForBlockingPromises(function () {
+/******/                                                               if 
(applyOnUpdate) {
+/******/                                                                       
return internalApply(applyOnUpdate);
+/******/                                                               }
+/******/                                                               return 
setStatus("ready").then(function () {
+/******/                                                                       
return updatedModules;
+/******/                                                               });
+/******/                                                       });
+/******/                                               });
+/******/                                       });
+/******/                               });
+/******/               }
+/******/
+/******/               function hotApply(options) {
+/******/                       if (currentStatus !== "ready") {
+/******/                               return Promise.resolve().then(function 
() {
+/******/                                       throw new Error(
+/******/                                               "apply() is only 
allowed in ready status (state: " +
+/******/                                                       currentStatus +
+/******/                                                       ")"
+/******/                                       );
+/******/                               });
+/******/                       }
+/******/                       return internalApply(options);
+/******/               }
+/******/
+/******/               function internalApply(options) {
+/******/                       options = options || {};
+/******/
+/******/                       applyInvalidatedModules();
+/******/
+/******/                       var results = 
currentUpdateApplyHandlers.map(function (handler) {
+/******/                               return handler(options);
+/******/                       });
+/******/                       currentUpdateApplyHandlers = undefined;
+/******/
+/******/                       var errors = results
+/******/                               .map(function (r) {
+/******/                                       return r.error;
+/******/                               })
+/******/                               .filter(Boolean);
+/******/
+/******/                       if (errors.length > 0) {
+/******/                               return setStatus("abort").then(function 
() {
+/******/                                       throw errors[0];
+/******/                               });
+/******/                       }
+/******/
+/******/                       // Now in "dispose" phase
+/******/                       var disposePromise = setStatus("dispose");
+/******/
+/******/                       results.forEach(function (result) {
+/******/                               if (result.dispose) result.dispose();
+/******/                       });
+/******/
+/******/                       // Now in "apply" phase
+/******/                       var applyPromise = setStatus("apply");
+/******/
+/******/                       var error;
+/******/                       var reportError = function (err) {
+/******/                               if (!error) error = err;
+/******/                       };
+/******/
+/******/                       var outdatedModules = [];
+/******/
+/******/                       var onAccepted = function () {
+/******/                               return Promise.all([disposePromise, 
applyPromise]).then(function () {
+/******/                                       // handle errors in accept 
handlers and self accepted module load
+/******/                                       if (error) {
+/******/                                               return 
setStatus("fail").then(function () {
+/******/                                                       throw error;
+/******/                                               });
+/******/                                       }
+/******/
+/******/                                       if (queuedInvalidatedModules) {
+/******/                                               return 
internalApply(options).then(function (list) {
+/******/                                                       
outdatedModules.forEach(function (moduleId) {
+/******/                                                               if 
(list.indexOf(moduleId) < 0) list.push(moduleId);
+/******/                                                       });
+/******/                                                       return list;
+/******/                                               });
+/******/                                       }
+/******/
+/******/                                       return 
setStatus("idle").then(function () {
+/******/                                               return outdatedModules;
+/******/                                       });
+/******/                               });
+/******/                       };
+/******/
+/******/                       return Promise.all(
+/******/                               results
+/******/                                       .filter(function (result) {
+/******/                                               return result.apply;
+/******/                                       })
+/******/                                       .map(function (result) {
+/******/                                               return 
result.apply(reportError);
+/******/                                       })
+/******/                       )
+/******/                               .then(function (applyResults) {
+/******/                                       applyResults.forEach(function 
(modules) {
+/******/                                               if (modules) {
+/******/                                                       for (var i = 0; 
i < modules.length; i++) {
+/******/                                                               
outdatedModules.push(modules[i]);
+/******/                                                       }
+/******/                                               }
+/******/                                       });
+/******/                               })
+/******/                               .then(onAccepted);
+/******/               }
+/******/
+/******/               function applyInvalidatedModules() {
+/******/                       if (queuedInvalidatedModules) {
+/******/                               if (!currentUpdateApplyHandlers) 
currentUpdateApplyHandlers = [];
+/******/                               
Object.keys(__webpack_require__.hmrI).forEach(function (key) {
+/******/                                       
queuedInvalidatedModules.forEach(function (moduleId) {
+/******/                                               
__webpack_require__.hmrI[key](
+/******/                                                       moduleId,
+/******/                                                       
currentUpdateApplyHandlers
+/******/                                               );
+/******/                                       });
+/******/                               });
+/******/                               queuedInvalidatedModules = undefined;
+/******/                               return true;
+/******/                       }
+/******/               }
+/******/       })();
+/******/
+/******/       /* webpack/runtime/publicPath */
+/******/       (() => {
+/******/               __webpack_require__.p = "/static/assets/";
+/******/       })();
+/******/
+/******/       /* webpack/runtime/react refresh */
+/******/       (() => {
+/******/               const setup = (moduleId) => {
+/******/                       const refresh = {
+/******/                               moduleId: moduleId,
+/******/                               register: (type, id) => {
+/******/                                       const typeId = moduleId + " " + 
id;
+/******/                                       refresh.runtime.register(type, 
typeId);
+/******/                               },
+/******/                               signature: () => 
(refresh.runtime.createSignatureFunctionForTransform()),
+/******/                               runtime: {
+/******/                                       
createSignatureFunctionForTransform: () => ((type) => (type)),
+/******/                                       register: x => {}
+/******/                               },
+/******/                       };
+/******/                       return refresh;
+/******/               }
+/******/
+/******/               __webpack_require__.i.push((options) => {
+/******/                       const originalFactory = options.factory;
+/******/                       options.factory = function(moduleObject, 
moduleExports, webpackRequire) {
+/******/                               const hotRequire = (request) => 
(webpackRequire(request));
+/******/                               const createPropertyDescriptor = (name) 
=> {
+/******/                                       return {
+/******/                                               configurable: true,
+/******/                                               enumerable: true,
+/******/                                               get: () => 
(webpackRequire[name]),
+/******/                                               set: (value) => {
+/******/                                                       
webpackRequire[name] = value;
+/******/                                               },
+/******/                                       };
+/******/                               };
+/******/                               for (const name in webpackRequire) {
+/******/                                       if 
(Object.prototype.hasOwnProperty.call(webpackRequire, name) && name !== 
"$Refresh$") {
+/******/                                               
Object.defineProperty(hotRequire, name, createPropertyDescriptor(name));
+/******/                                       }
+/******/                               }
+/******/                               hotRequire.$Refresh$ = 
setup(options.id);
+/******/                               originalFactory.call(this, 
moduleObject, moduleExports, hotRequire);
+/******/                       };
+/******/               });
+/******/       })();
+/******/
+/******/       /* webpack/runtime/consumes */
+/******/       (() => {
+/******/               var parseVersion = (str) => {
+/******/                       // see webpack/lib/util/semver.js for original 
code
+/******/                       var p=p=>{return 
p.split(".").map(p=>{return+p==p?+p:p})},n=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(str),r=n[1]?p(n[1]):[];return
 
n[2]&&(r.length++,r.push.apply(r,p(n[2]))),n[3]&&(r.push([]),r.push.apply(r,p(n[3]))),r;
+/******/               }
+/******/               var versionLt = (a, b) => {
+/******/                       // see webpack/lib/util/semver.js for original 
code
+/******/                       a=parseVersion(a),b=parseVersion(b);for(var 
r=0;;){if(r>=a.length)return r<b.length&&"u"!=(typeof b[r])[0];var 
e=a[r],n=(typeof e)[0];if(r>=b.length)return"u"==n;var t=b[r],f=(typeof 
t)[0];if(n!=f)return"o"==n&&"n"==f||("s"==f||"u"==n);if("o"!=n&&"u"!=n&&e!=t)return
 e<t;r++}
+/******/               }
+/******/               var rangeToString = (range) => {
+/******/                       // see webpack/lib/util/semver.js for original 
code
+/******/                       var 
r=range[0],n="";if(1===range.length)return"*";if(r+.5){n+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var
 
e=1,a=1;a<range.length;a++){e--,n+="u"==(typeof(t=range[a]))[0]?"-":(e>0?".":"")+(e=2,t)}return
 n}var g=[];for(a=1;a<range.length;a++){var 
t=range[a];g.push(0===t?"not("+o()+")":1===t?"("+o()+" || 
"+o()+")":2===t?g.pop()+" "+g.pop():rangeToString(t))}return o();function 
o(){return g.pop().replace(/^\((.+)\)$/,"$1")}
+/******/               }
+/******/               var satisfy = (range, version) => {
+/******/                       // see webpack/lib/util/semver.js for original 
code
+/******/                       if(0 in 
range){version=parseVersion(version);var e=range[0],r=e<0;r&&(e=-e-1);for(var 
n=0,i=1,a=!0;;i++,n++){var f,s,g=i<range.length?(typeof 
range[i])[0]:"";if(n>=version.length||"o"==(s=(typeof(f=version[n]))[0]))return!a||("u"==g?i>e&&!r:""==g!=r);if("u"==s){if(!a||"u"!=g)return!1}else
 
if(a)if(g==s)if(i<=e){if(f!=range[i])return!1}else{if(r?f>range[i]:f<range[i])return!1;f!=range[i]&&(a=!1)}else
 
if("s"!=g&&"n"!=g){if(r||i<=e)return!1;a=!1,i--}else{if(i<=e||s<g!=r)return!1;a=!1}else"s"!=g&&"n"!=g&&(a=!1,i--)}}var
 t=[],o=t.pop.bind(t);for(n=1;n<range.length;n++){var 
u=range[n];t.push(1==u?o()|o():2==u?o()&o():u?satisfy(u,version):!o())}return!!o();
+/******/               }
+/******/               var exists = (scope, key) => {
+/******/                       return scope && __webpack_require__.o(scope, 
key);
+/******/               }
+/******/               var get = (entry) => {
+/******/                       entry.loaded = 1;
+/******/                       return entry.get()
+/******/               };
+/******/               var eagerOnly = (versions) => {
+/******/                       return Object.keys(versions).reduce((filtered, 
version) => {
+/******/                                       if (versions[version].eager) {
+/******/                                               filtered[version] = 
versions[version];
+/******/                                       }
+/******/                                       return filtered;
+/******/                       }, {});
+/******/               };
+/******/               var findLatestVersion = (scope, key, eager) => {
+/******/                       var versions = eager ? eagerOnly(scope[key]) : 
scope[key];
+/******/                       var key = Object.keys(versions).reduce((a, b) 
=> {
+/******/                               return !a || versionLt(a, b) ? b : a;
+/******/                       }, 0);
+/******/                       return key && versions[key];
+/******/               };
+/******/               var findSatisfyingVersion = (scope, key, 
requiredVersion, eager) => {
+/******/                       var versions = eager ? eagerOnly(scope[key]) : 
scope[key];
+/******/                       var key = Object.keys(versions).reduce((a, b) 
=> {
+/******/                               if (!satisfy(requiredVersion, b)) 
return a;
+/******/                               return !a || versionLt(a, b) ? b : a;
+/******/                       }, 0);
+/******/                       return key && versions[key]
+/******/               };
+/******/               var findSingletonVersionKey = (scope, key, eager) => {
+/******/                       var versions = eager ? eagerOnly(scope[key]) : 
scope[key];
+/******/                       return Object.keys(versions).reduce((a, b) => {
+/******/                               return !a || (!versions[a].loaded && 
versionLt(a, b)) ? b : a;
+/******/                       }, 0);
+/******/               };
+/******/               var getInvalidSingletonVersionMessage = (scope, key, 
version, requiredVersion) => {
+/******/                       return "Unsatisfied version " + version + " 
from " + (version && scope[key][version].from) + " of shared singleton module " 
+ key + " (required " + rangeToString(requiredVersion) + ")"
+/******/               };
+/******/               var getInvalidVersionMessage = (scope, scopeName, key, 
requiredVersion, eager) => {
+/******/                       var versions = scope[key];
+/******/                       return "No satisfying version (" + 
rangeToString(requiredVersion) + ")" + (eager ? " for eager consumption" : "") 
+ " of shared module " + key + " found in shared scope " + scopeName + ".\n" +
+/******/                               "Available versions: " + 
Object.keys(versions).map((key) => {
+/******/                               return key + " from " + 
versions[key].from;
+/******/                       }).join(", ");
+/******/               };
+/******/               var fail = (msg) => {
+/******/                       throw new Error(msg);
+/******/               }
+/******/               var failAsNotExist = (scopeName, key) => {
+/******/                       return fail("Shared module " + key + " doesn't 
exist in shared scope " + scopeName);
+/******/               }
+/******/               var warn = /*#__PURE__*/ (msg) => {
+/******/                       if (typeof console !== "undefined" && 
console.warn) console.warn(msg);
+/******/               };
+/******/               var init = (fn) => (function(scopeName, key, eager, c, 
d) {
+/******/                       var promise = __webpack_require__.I(scopeName);
+/******/                       if (promise && promise.then && !eager) {
+/******/                               return promise.then(fn.bind(fn, 
scopeName, __webpack_require__.S[scopeName], key, false, c, d));
+/******/                       }
+/******/                       return fn(scopeName, 
__webpack_require__.S[scopeName], key, eager, c, d);
+/******/               });
+/******/
+/******/               var useFallback = (scopeName, key, fallback) => {
+/******/                       return fallback ? fallback() : 
failAsNotExist(scopeName, key);
+/******/               }
+/******/               var load = /*#__PURE__*/ init((scopeName, scope, key, 
eager, fallback) => {
+/******/                       if (!exists(scope, key)) return 
useFallback(scopeName, key, fallback);
+/******/                       return get(findLatestVersion(scope, key, 
eager));
+/******/               });
+/******/               var loadVersion = /*#__PURE__*/ init((scopeName, scope, 
key, eager, requiredVersion, fallback) => {
+/******/                       if (!exists(scope, key)) return 
useFallback(scopeName, key, fallback);
+/******/                       var satisfyingVersion = 
findSatisfyingVersion(scope, key, requiredVersion, eager);
+/******/                       if (satisfyingVersion) return 
get(satisfyingVersion);
+/******/                       warn(getInvalidVersionMessage(scope, scopeName, 
key, requiredVersion, eager))
+/******/                       return get(findLatestVersion(scope, key, 
eager));
+/******/               });
+/******/               var loadStrictVersion = /*#__PURE__*/ init((scopeName, 
scope, key, eager, requiredVersion, fallback) => {
+/******/                       if (!exists(scope, key)) return 
useFallback(scopeName, key, fallback);
+/******/                       var satisfyingVersion = 
findSatisfyingVersion(scope, key, requiredVersion, eager);
+/******/                       if (satisfyingVersion) return 
get(satisfyingVersion);
+/******/                       if (fallback) return fallback();
+/******/                       fail(getInvalidVersionMessage(scope, scopeName, 
key, requiredVersion, eager));
+/******/               });
+/******/               var loadSingleton = /*#__PURE__*/ init((scopeName, 
scope, key, eager, fallback) => {
+/******/                       if (!exists(scope, key)) return 
useFallback(scopeName, key, fallback);
+/******/                       var version = findSingletonVersionKey(scope, 
key, eager);
+/******/                       return get(scope[key][version]);
+/******/               });
+/******/               var loadSingletonVersion = /*#__PURE__*/ 
init((scopeName, scope, key, eager, requiredVersion, fallback) => {
+/******/                       if (!exists(scope, key)) return 
useFallback(scopeName, key, fallback);
+/******/                       var version = findSingletonVersionKey(scope, 
key, eager);
+/******/                       if (!satisfy(requiredVersion, version)) {
+/******/                               
warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));
+/******/                       }
+/******/                       return get(scope[key][version]);
+/******/               });
+/******/               var loadStrictSingletonVersion = /*#__PURE__*/ 
init((scopeName, scope, key, eager, requiredVersion, fallback) => {
+/******/                       if (!exists(scope, key)) return 
useFallback(scopeName, key, fallback);
+/******/                       var version = findSingletonVersionKey(scope, 
key, eager);
+/******/                       if (!satisfy(requiredVersion, version)) {
+/******/                               
fail(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));
+/******/                       }
+/******/                       return get(scope[key][version]);
+/******/               });
+/******/               var installedModules = {};
+/******/               var moduleToHandlerMapping = {
+/******/                       
"webpack/sharing/consume/default/react-dom/react-dom": () => 
(loadSingletonVersion("default", "react-dom", true, [1,17,0,2], () => (() => 
(__webpack_require__(/*! react-dom */ "./node_modules/react-dom/index.js"))))),
+/******/                       "webpack/sharing/consume/default/react/react": 
() => (loadSingletonVersion("default", "react", true, [1,17,0,2], () => (() => 
(__webpack_require__(/*! react */ "./node_modules/react/index.js")))))
+/******/               };
+/******/               var initialConsumes = 
["webpack/sharing/consume/default/react-dom/react-dom","webpack/sharing/consume/default/react/react"];
+/******/               initialConsumes.forEach((id) => {
+/******/                       __webpack_require__.m[id] = (module) => {
+/******/                               // Handle case when module is used sync
+/******/                               installedModules[id] = 0;
+/******/                               delete __webpack_require__.c[id];
+/******/                               var factory = 
moduleToHandlerMapping[id]();
+/******/                               if(typeof factory !== "function") throw 
new Error("Shared module is not available for eager consumption: " + id);
+/******/                               module.exports = factory();
+/******/                       }
+/******/               });
+/******/               // no chunk loading of consumes
+/******/       })();
+/******/
+/******/       /* webpack/runtime/jsonp chunk loading */
+/******/       (() => {
+/******/               // no baseURI
+/******/
+/******/               // object to store loaded and loading chunks
+/******/               // undefined = chunk not loaded, null = chunk 
preloaded/prefetched
+/******/               // [resolve, reject, Promise] = chunk loading, 0 = 
chunk loaded
+/******/               var installedChunks = __webpack_require__.hmrS_jsonp = 
__webpack_require__.hmrS_jsonp || {
+/******/                       "service-worker": 0,
+/******/                       
"webpack_sharing_consume_default_react-dom_react-dom-webpack_sharing_consume_default_react_rea-153fef":
 0
+/******/               };
+/******/
+/******/               // no chunk on demand loading
+/******/
+/******/               // no prefetching
+/******/
+/******/               // no preloaded
+/******/
+/******/               var currentUpdatedModulesList;
+/******/               var waitingUpdateResolves = {};
+/******/               function loadUpdateChunk(chunkId, updatedModulesList) {
+/******/                       currentUpdatedModulesList = updatedModulesList;
+/******/                       return new Promise((resolve, reject) => {
+/******/                               waitingUpdateResolves[chunkId] = 
resolve;
+/******/                               // start update chunk loading
+/******/                               var url = __webpack_require__.p + 
__webpack_require__.hu(chunkId);
+/******/                               // create error before stack unwound to 
get useful stacktrace later
+/******/                               var error = new Error();
+/******/                               var loadingEnded = (event) => {
+/******/                                       
if(waitingUpdateResolves[chunkId]) {
+/******/                                               
waitingUpdateResolves[chunkId] = undefined
+/******/                                               var errorType = event 
&& (event.type === 'load' ? 'missing' : event.type);
+/******/                                               var realSrc = event && 
event.target && event.target.src;
+/******/                                               error.message = 
'Loading hot update chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + 
realSrc + ')';
+/******/                                               error.name = 
'ChunkLoadError';
+/******/                                               error.type = errorType;
+/******/                                               error.request = realSrc;
+/******/                                               reject(error);
+/******/                                       }
+/******/                               };
+/******/                               __webpack_require__.l(url, 
loadingEnded);
+/******/                       });
+/******/               }
+/******/
+/******/               globalThis["webpackHotUpdatesuperset"] = (chunkId, 
moreModules, runtime) => {
+/******/                       for(var moduleId in moreModules) {
+/******/                               if(__webpack_require__.o(moreModules, 
moduleId)) {
+/******/                                       currentUpdate[moduleId] = 
moreModules[moduleId];
+/******/                                       if(currentUpdatedModulesList) 
currentUpdatedModulesList.push(moduleId);
+/******/                               }
+/******/                       }
+/******/                       if(runtime) currentUpdateRuntime.push(runtime);
+/******/                       if(waitingUpdateResolves[chunkId]) {
+/******/                               waitingUpdateResolves[chunkId]();
+/******/                               waitingUpdateResolves[chunkId] = 
undefined;
+/******/                       }
+/******/               };
+/******/
+/******/               var currentUpdateChunks;
+/******/               var currentUpdate;
+/******/               var currentUpdateRemovedChunks;
+/******/               var currentUpdateRuntime;
+/******/               function applyHandler(options) {
+/******/                       if (__webpack_require__.f) delete 
__webpack_require__.f.jsonpHmr;
+/******/                       currentUpdateChunks = undefined;
+/******/                       function 
getAffectedModuleEffects(updateModuleId) {
+/******/                               var outdatedModules = [updateModuleId];
+/******/                               var outdatedDependencies = {};
+/******/
+/******/                               var queue = 
outdatedModules.map(function (id) {
+/******/                                       return {
+/******/                                               chain: [id],
+/******/                                               id: id
+/******/                                       };
+/******/                               });
+/******/                               while (queue.length > 0) {
+/******/                                       var queueItem = queue.pop();
+/******/                                       var moduleId = queueItem.id;
+/******/                                       var chain = queueItem.chain;
+/******/                                       var module = 
__webpack_require__.c[moduleId];
+/******/                                       if (
+/******/                                               !module ||
+/******/                                               
(module.hot._selfAccepted && !module.hot._selfInvalidated)
+/******/                                       )
+/******/                                               continue;
+/******/                                       if (module.hot._selfDeclined) {
+/******/                                               return {
+/******/                                                       type: 
"self-declined",
+/******/                                                       chain: chain,
+/******/                                                       moduleId: 
moduleId
+/******/                                               };
+/******/                                       }
+/******/                                       if (module.hot._main) {
+/******/                                               return {
+/******/                                                       type: 
"unaccepted",
+/******/                                                       chain: chain,
+/******/                                                       moduleId: 
moduleId
+/******/                                               };
+/******/                                       }
+/******/                                       for (var i = 0; i < 
module.parents.length; i++) {
+/******/                                               var parentId = 
module.parents[i];
+/******/                                               var parent = 
__webpack_require__.c[parentId];
+/******/                                               if (!parent) continue;
+/******/                                               if 
(parent.hot._declinedDependencies[moduleId]) {
+/******/                                                       return {
+/******/                                                               type: 
"declined",
+/******/                                                               chain: 
chain.concat([parentId]),
+/******/                                                               
moduleId: moduleId,
+/******/                                                               
parentId: parentId
+/******/                                                       };
+/******/                                               }
+/******/                                               if 
(outdatedModules.indexOf(parentId) !== -1) continue;
+/******/                                               if 
(parent.hot._acceptedDependencies[moduleId]) {
+/******/                                                       if 
(!outdatedDependencies[parentId])
+/******/                                                               
outdatedDependencies[parentId] = [];
+/******/                                                       
addAllToSet(outdatedDependencies[parentId], [moduleId]);
+/******/                                                       continue;
+/******/                                               }
+/******/                                               delete 
outdatedDependencies[parentId];
+/******/                                               
outdatedModules.push(parentId);
+/******/                                               queue.push({
+/******/                                                       chain: 
chain.concat([parentId]),
+/******/                                                       id: parentId
+/******/                                               });
+/******/                                       }
+/******/                               }
+/******/
+/******/                               return {
+/******/                                       type: "accepted",
+/******/                                       moduleId: updateModuleId,
+/******/                                       outdatedModules: 
outdatedModules,
+/******/                                       outdatedDependencies: 
outdatedDependencies
+/******/                               };
+/******/                       }
+/******/
+/******/                       function addAllToSet(a, b) {
+/******/                               for (var i = 0; i < b.length; i++) {
+/******/                                       var item = b[i];
+/******/                                       if (a.indexOf(item) === -1) 
a.push(item);
+/******/                               }
+/******/                       }
+/******/
+/******/                       // at begin all updates modules are outdated
+/******/                       // the "outdated" status can propagate to 
parents if they don't accept the children
+/******/                       var outdatedDependencies = {};
+/******/                       var outdatedModules = [];
+/******/                       var appliedUpdate = {};
+/******/
+/******/                       var warnUnexpectedRequire = function 
warnUnexpectedRequire(module) {
+/******/                               console.warn(
+/******/                                       "[HMR] unexpected require(" + 
module.id + ") to disposed module"
+/******/                               );
+/******/                       };
+/******/
+/******/                       for (var moduleId in currentUpdate) {
+/******/                               if 
(__webpack_require__.o(currentUpdate, moduleId)) {
+/******/                                       var newModuleFactory = 
currentUpdate[moduleId];
+/******/                                       var result = newModuleFactory
+/******/                                               ? 
getAffectedModuleEffects(moduleId)
+/******/                                               : {
+/******/                                                               type: 
"disposed",
+/******/                                                               
moduleId: moduleId
+/******/                                                       };
+/******/                                       /** @type {Error|false} */
+/******/                                       var abortError = false;
+/******/                                       var doApply = false;
+/******/                                       var doDispose = false;
+/******/                                       var chainInfo = "";
+/******/                                       if (result.chain) {
+/******/                                               chainInfo = "\nUpdate 
propagation: " + result.chain.join(" -> ");
+/******/                                       }
+/******/                                       switch (result.type) {
+/******/                                               case "self-declined":
+/******/                                                       if 
(options.onDeclined) options.onDeclined(result);
+/******/                                                       if 
(!options.ignoreDeclined)
+/******/                                                               
abortError = new Error(
+/******/                                                                       
"Aborted because of self decline: " +
+/******/                                                                       
        result.moduleId +
+/******/                                                                       
        chainInfo
+/******/                                                               );
+/******/                                                       break;
+/******/                                               case "declined":
+/******/                                                       if 
(options.onDeclined) options.onDeclined(result);
+/******/                                                       if 
(!options.ignoreDeclined)
+/******/                                                               
abortError = new Error(
+/******/                                                                       
"Aborted because of declined dependency: " +
+/******/                                                                       
        result.moduleId +
+/******/                                                                       
        " in " +
+/******/                                                                       
        result.parentId +
+/******/                                                                       
        chainInfo
+/******/                                                               );
+/******/                                                       break;
+/******/                                               case "unaccepted":
+/******/                                                       if 
(options.onUnaccepted) options.onUnaccepted(result);
+/******/                                                       if 
(!options.ignoreUnaccepted)
+/******/                                                               
abortError = new Error(
+/******/                                                                       
"Aborted because " + moduleId + " is not accepted" + chainInfo
+/******/                                                               );
+/******/                                                       break;
+/******/                                               case "accepted":
+/******/                                                       if 
(options.onAccepted) options.onAccepted(result);
+/******/                                                       doApply = true;
+/******/                                                       break;
+/******/                                               case "disposed":
+/******/                                                       if 
(options.onDisposed) options.onDisposed(result);
+/******/                                                       doDispose = 
true;
+/******/                                                       break;
+/******/                                               default:
+/******/                                                       throw new 
Error("Unexception type " + result.type);
+/******/                                       }
+/******/                                       if (abortError) {
+/******/                                               return {
+/******/                                                       error: 
abortError
+/******/                                               };
+/******/                                       }
+/******/                                       if (doApply) {
+/******/                                               appliedUpdate[moduleId] 
= newModuleFactory;
+/******/                                               
addAllToSet(outdatedModules, result.outdatedModules);
+/******/                                               for (moduleId in 
result.outdatedDependencies) {
+/******/                                                       if 
(__webpack_require__.o(result.outdatedDependencies, moduleId)) {
+/******/                                                               if 
(!outdatedDependencies[moduleId])
+/******/                                                                       
outdatedDependencies[moduleId] = [];
+/******/                                                               
addAllToSet(
+/******/                                                                       
outdatedDependencies[moduleId],
+/******/                                                                       
result.outdatedDependencies[moduleId]
+/******/                                                               );
+/******/                                                       }
+/******/                                               }
+/******/                                       }
+/******/                                       if (doDispose) {
+/******/                                               
addAllToSet(outdatedModules, [result.moduleId]);
+/******/                                               appliedUpdate[moduleId] 
= warnUnexpectedRequire;
+/******/                                       }
+/******/                               }
+/******/                       }
+/******/                       currentUpdate = undefined;
+/******/
+/******/                       // Store self accepted outdated modules to 
require them later by the module system
+/******/                       var outdatedSelfAcceptedModules = [];
+/******/                       for (var j = 0; j < outdatedModules.length; 
j++) {
+/******/                               var outdatedModuleId = 
outdatedModules[j];
+/******/                               var module = 
__webpack_require__.c[outdatedModuleId];
+/******/                               if (
+/******/                                       module &&
+/******/                                       (module.hot._selfAccepted || 
module.hot._main) &&
+/******/                                       // removed self-accepted 
modules should not be required
+/******/                                       appliedUpdate[outdatedModuleId] 
!== warnUnexpectedRequire &&
+/******/                                       // when called invalidate 
self-accepting is not possible
+/******/                                       !module.hot._selfInvalidated
+/******/                               ) {
+/******/                                       
outdatedSelfAcceptedModules.push({
+/******/                                               module: 
outdatedModuleId,
+/******/                                               require: 
module.hot._requireSelf,
+/******/                                               errorHandler: 
module.hot._selfAccepted
+/******/                                       });
+/******/                               }
+/******/                       }
+/******/
+/******/                       var moduleOutdatedDependencies;
+/******/
+/******/                       return {
+/******/                               dispose: function () {
+/******/                                       
currentUpdateRemovedChunks.forEach(function (chunkId) {
+/******/                                               delete 
installedChunks[chunkId];
+/******/                                       });
+/******/                                       currentUpdateRemovedChunks = 
undefined;
+/******/
+/******/                                       var idx;
+/******/                                       var queue = 
outdatedModules.slice();
+/******/                                       while (queue.length > 0) {
+/******/                                               var moduleId = 
queue.pop();
+/******/                                               var module = 
__webpack_require__.c[moduleId];
+/******/                                               if (!module) continue;
+/******/
+/******/                                               var data = {};
+/******/
+/******/                                               // Call dispose handlers
+/******/                                               var disposeHandlers = 
module.hot._disposeHandlers;
+/******/                                               for (j = 0; j < 
disposeHandlers.length; j++) {
+/******/                                                       
disposeHandlers[j].call(null, data);
+/******/                                               }
+/******/                                               
__webpack_require__.hmrD[moduleId] = data;
+/******/
+/******/                                               // disable module (this 
disables requires from this module)
+/******/                                               module.hot.active = 
false;
+/******/
+/******/                                               // remove module from 
cache
+/******/                                               delete 
__webpack_require__.c[moduleId];
+/******/
+/******/                                               // when disposing there 
is no need to call dispose handler
+/******/                                               delete 
outdatedDependencies[moduleId];
+/******/
+/******/                                               // remove "parents" 
references from all children
+/******/                                               for (j = 0; j < 
module.children.length; j++) {
+/******/                                                       var child = 
__webpack_require__.c[module.children[j]];
+/******/                                                       if (!child) 
continue;
+/******/                                                       idx = 
child.parents.indexOf(moduleId);
+/******/                                                       if (idx >= 0) {
+/******/                                                               
child.parents.splice(idx, 1);
+/******/                                                       }
+/******/                                               }
+/******/                                       }
+/******/
+/******/                                       // remove outdated dependency 
from module children
+/******/                                       var dependency;
+/******/                                       for (var outdatedModuleId in 
outdatedDependencies) {
+/******/                                               if 
(__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
+/******/                                                       module = 
__webpack_require__.c[outdatedModuleId];
+/******/                                                       if (module) {
+/******/                                                               
moduleOutdatedDependencies =
+/******/                                                                       
outdatedDependencies[outdatedModuleId];
+/******/                                                               for (j 
= 0; j < moduleOutdatedDependencies.length; j++) {
+/******/                                                                       
dependency = moduleOutdatedDependencies[j];
+/******/                                                                       
idx = module.children.indexOf(dependency);
+/******/                                                                       
if (idx >= 0) module.children.splice(idx, 1);
+/******/                                                               }
+/******/                                                       }
+/******/                                               }
+/******/                                       }
+/******/                               },
+/******/                               apply: function (reportError) {
+/******/                                       var acceptPromises = [];
+/******/                                       // insert new code
+/******/                                       for (var updateModuleId in 
appliedUpdate) {
+/******/                                               if 
(__webpack_require__.o(appliedUpdate, updateModuleId)) {
+/******/                                                       
__webpack_require__.m[updateModuleId] = appliedUpdate[updateModuleId];
+/******/                                               }
+/******/                                       }
+/******/
+/******/                                       // run new runtime modules
+/******/                                       for (var i = 0; i < 
currentUpdateRuntime.length; i++) {
+/******/                                               
currentUpdateRuntime[i](__webpack_require__);
+/******/                                       }
+/******/
+/******/                                       // call accept handlers
+/******/                                       for (var outdatedModuleId in 
outdatedDependencies) {
+/******/                                               if 
(__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
+/******/                                                       var module = 
__webpack_require__.c[outdatedModuleId];
+/******/                                                       if (module) {
+/******/                                                               
moduleOutdatedDependencies =
+/******/                                                                       
outdatedDependencies[outdatedModuleId];
+/******/                                                               var 
callbacks = [];
+/******/                                                               var 
errorHandlers = [];
+/******/                                                               var 
dependenciesForCallbacks = [];
+/******/                                                               for 
(var j = 0; j < moduleOutdatedDependencies.length; j++) {
+/******/                                                                       
var dependency = moduleOutdatedDependencies[j];
+/******/                                                                       
var acceptCallback =
+/******/                                                                       
        module.hot._acceptedDependencies[dependency];
+/******/                                                                       
var errorHandler =
+/******/                                                                       
        module.hot._acceptedErrorHandlers[dependency];
+/******/                                                                       
if (acceptCallback) {
+/******/                                                                       
        if (callbacks.indexOf(acceptCallback) !== -1) continue;
+/******/                                                                       
        callbacks.push(acceptCallback);
+/******/                                                                       
        errorHandlers.push(errorHandler);
+/******/                                                                       
        dependenciesForCallbacks.push(dependency);
+/******/                                                                       
}
+/******/                                                               }
+/******/                                                               for 
(var k = 0; k < callbacks.length; k++) {
+/******/                                                                       
var result;
+/******/                                                                       
try {
+/******/                                                                       
        result = callbacks[k].call(null, moduleOutdatedDependencies);
+/******/                                                                       
} catch (err) {
+/******/                                                                       
        if (typeof errorHandlers[k] === "function") {
+/******/                                                                       
                try {
+/******/                                                                       
                        errorHandlers[k](err, {
+/******/                                                                       
                                moduleId: outdatedModuleId,
+/******/                                                                       
                                dependencyId: dependenciesForCallbacks[k]
+/******/                                                                       
                        });
+/******/                                                                       
                } catch (err2) {
+/******/                                                                       
                        if (options.onErrored) {
+/******/                                                                       
                                options.onErrored({
+/******/                                                                       
                                        type: "accept-error-handler-errored",
+/******/                                                                       
                                        moduleId: outdatedModuleId,
+/******/                                                                       
                                        dependencyId: 
dependenciesForCallbacks[k],
+/******/                                                                       
                                        error: err2,
+/******/                                                                       
                                        originalError: err
+/******/                                                                       
                                });
+/******/                                                                       
                        }
+/******/                                                                       
                        if (!options.ignoreErrored) {
+/******/                                                                       
                                reportError(err2);
+/******/                                                                       
                                reportError(err);
+/******/                                                                       
                        }
+/******/                                                                       
                }
+/******/                                                                       
        } else {
+/******/                                                                       
                if (options.onErrored) {
+/******/                                                                       
                        options.onErrored({
+/******/                                                                       
                                type: "accept-errored",
+/******/                                                                       
                                moduleId: outdatedModuleId,
+/******/                                                                       
                                dependencyId: dependenciesForCallbacks[k],
+/******/                                                                       
                                error: err
+/******/                                                                       
                        });
+/******/                                                                       
                }
+/******/                                                                       
                if (!options.ignoreErrored) {
+/******/                                                                       
                        reportError(err);
+/******/                                                                       
                }
+/******/                                                                       
        }
+/******/                                                                       
}
+/******/                                                                       
if (result && typeof result.then === "function") {
+/******/                                                                       
        acceptPromises.push(result);
+/******/                                                                       
}
+/******/                                                               }
+/******/                                                       }
+/******/                                               }
+/******/                                       }
+/******/
+/******/                                       var onAccepted = function () {
+/******/                                               // Load self accepted 
modules
+/******/                                               for (var o = 0; o < 
outdatedSelfAcceptedModules.length; o++) {
+/******/                                                       var item = 
outdatedSelfAcceptedModules[o];
+/******/                                                       var moduleId = 
item.module;
+/******/                                                       try {
+/******/                                                               
item.require(moduleId);
+/******/                                                       } catch (err) {
+/******/                                                               if 
(typeof item.errorHandler === "function") {
+/******/                                                                       
try {
+/******/                                                                       
        item.errorHandler(err, {
+/******/                                                                       
                moduleId: moduleId,
+/******/                                                                       
                module: __webpack_require__.c[moduleId]
+/******/                                                                       
        });
+/******/                                                                       
} catch (err1) {
+/******/                                                                       
        if (options.onErrored) {
+/******/                                                                       
                options.onErrored({
+/******/                                                                       
                        type: "self-accept-error-handler-errored",
+/******/                                                                       
                        moduleId: moduleId,
+/******/                                                                       
                        error: err1,
+/******/                                                                       
                        originalError: err
+/******/                                                                       
                });
+/******/                                                                       
        }
+/******/                                                                       
        if (!options.ignoreErrored) {
+/******/                                                                       
                reportError(err1);
+/******/                                                                       
                reportError(err);
+/******/                                                                       
        }
+/******/                                                                       
}
+/******/                                                               } else {
+/******/                                                                       
if (options.onErrored) {
+/******/                                                                       
        options.onErrored({
+/******/                                                                       
                type: "self-accept-errored",
+/******/                                                                       
                moduleId: moduleId,
+/******/                                                                       
                error: err
+/******/                                                                       
        });
+/******/                                                                       
}
+/******/                                                                       
if (!options.ignoreErrored) {
+/******/                                                                       
        reportError(err);

Review Comment:
   **Suggestion:** The generated service worker bundle is loading webpack 
dev-server and React Refresh HMR client entries (`ReactRefreshEntry`, 
`webpack-dev-server/client`, `ErrorOverlayEntry`) via `__webpack_require__.O` 
in a worker context; these dev-only clients assume a window/document-based 
environment and multi-chunk loading, which are not available in a Service 
Worker, so the worker script risks either never executing the actual service 
worker module or throwing at startup instead of reliably installing and 
activating. [logic error]
   
   **Severity Level:** Minor ⚠️
   ```suggestion
   /******/     // Load entry module and run the service worker code directly
   /******/     __webpack_require__("./src/service-worker.ts");
   ```
   <details>
   <summary><b>Why it matters? ⭐ </b></summary>
   
   The suggestion points out a real problem: the generated bundle includes 
dev-only HMR / dev-server clients (ReactRefreshEntry, webpack-dev-server 
client, ErrorOverlayEntry) and wires them into startup via 
__webpack_require__.O. Those entries assume a window/document/browser-page 
environment (sockets, DOM, overlays) and multi-chunk loading semantics that are 
not available in a Service Worker context. I verified the exact problematic 
calls exist in the current PR output (the __webpack_require__.O calls above). 
Running those in a worker can throw (e.g. document/window access) or prevent 
the service worker's install/activate handlers from running, so this is a 
functional bug, not a cosmetic nit.
   </details>
   <details>
   <summary><b>Prompt for AI Agent 🤖 </b></summary>
   
   ```mdx
   This is a comment left during a code review.
   
   **Path:** superset/static/service-worker.js
   **Line:** 1310:1312
   **Comment:**
        *Logic Error: The generated service worker bundle is loading webpack 
dev-server and React Refresh HMR client entries (`ReactRefreshEntry`, 
`webpack-dev-server/client`, `ErrorOverlayEntry`) via `__webpack_require__.O` 
in a worker context; these dev-only clients assume a window/document-based 
environment and multi-chunk loading, which are not available in a Service 
Worker, so the worker script risks either never executing the actual service 
worker module or throwing at startup instead of reliably installing and 
activating.
   
   Validate the correctness of the flagged issue. If correct, How can I resolve 
this? If you propose a fix, implement it and please make it concise.
   ```
   </details>



##########
superset/templates/superset/spa.html:
##########
@@ -73,6 +75,19 @@
     />
     {% block head_js %}
       {% include "head_custom_extra.html" %}
+      <script nonce="{{ macros.get_nonce() }}">
+        if ('serviceWorker' in navigator) {
+          window.addEventListener('load', function() {
+            navigator.serviceWorker
+              .register('{{ assets_prefix }}/static/service-worker.js', {
+                scope: '/',
+              })

Review Comment:
   **Suggestion:** The service worker is registered with an explicit scope of 
`'/'` even though the script is served from `{{ assets_prefix 
}}/static/service-worker.js`; in browsers this violates the rule that a service 
worker's scope cannot be above the directory of its script, causing 
registration to fail (throwing a DOMException) and preventing the PWA features 
from working. Removing the explicit scope lets the browser default to a valid 
scope based on the script URL. [logic error]
   
   **Severity Level:** Minor ⚠️
   ```suggestion
                 .register('{{ assets_prefix }}/static/service-worker.js')
   ```
   <details>
   <summary><b>Why it matters? ⭐ </b></summary>
   
   The PR currently registers the service worker script served from "{{ 
assets_prefix }}/static/service-worker.js" but forces scope: '/'. Browsers 
enforce that a service worker's scope cannot be more permissive than the 
directory containing the worker script; setting scope to '/' when the script 
lives under /static/... can cause registration to throw a DOMException and PWA 
features to fail. Removing the explicit scope (or setting it to a path at or 
below the script path) lets the browser pick a valid default scope based on the 
script URL and avoids the registration error. This is a functional fix, not 
merely stylistic.
   </details>
   <details>
   <summary><b>Prompt for AI Agent 🤖 </b></summary>
   
   ```mdx
   This is a comment left during a code review.
   
   **Path:** superset/templates/superset/spa.html
   **Line:** 82:84
   **Comment:**
        *Logic Error: The service worker is registered with an explicit scope 
of `'/'` even though the script is served from `{{ assets_prefix 
}}/static/service-worker.js`; in browsers this violates the rule that a service 
worker's scope cannot be above the directory of its script, causing 
registration to fail (throwing a DOMException) and preventing the PWA features 
from working. Removing the explicit scope lets the browser default to a valid 
scope based on the script URL.
   
   Validate the correctness of the flagged issue. If correct, How can I resolve 
this? If you propose a fix, implement it and please make it concise.
   ```
   </details>



##########
superset-frontend/webpack.config.js:
##########
@@ -300,6 +314,7 @@ const config = {
     menu: addPreamble('src/views/menu.tsx'),
     spa: addPreamble('/src/views/index.tsx'),
     embedded: addPreamble('/src/embedded/index.tsx'),
+    'service-worker': path.join(APP_DIR, '/src/service-worker.ts'),

Review Comment:
   **Suggestion:** The service worker entry path is built with a leading slash 
in the second argument to `path.join`, which causes Node to ignore `APP_DIR` 
and resolve to an absolute `/src/service-worker.ts`, so in a typical Superset 
checkout the file will not be found and the service worker entry will fail to 
build; the path should be relative to `APP_DIR` without a leading slash. [logic 
error]
   
   **Severity Level:** Minor ⚠️
   ```suggestion
       'service-worker': path.join(APP_DIR, 'src/service-worker.ts'),
   ```
   <details>
   <summary><b>Why it matters? ⭐ </b></summary>
   
   path.join(APP_DIR, '/src/service-worker.ts') will treat 
'/src/service-worker.ts' as an absolute path on POSIX systems and ignore 
APP_DIR, resolving to '/src/service-worker.ts' instead of the repo-local file. 
That will break resolving the service-worker entry. Changing to a relative 
segment (no leading slash) fixes the runtime build error and is a correct, 
minimal fix.
   </details>
   <details>
   <summary><b>Prompt for AI Agent 🤖 </b></summary>
   
   ```mdx
   This is a comment left during a code review.
   
   **Path:** superset-frontend/webpack.config.js
   **Line:** 317:317
   **Comment:**
        *Logic Error: The service worker entry path is built with a leading 
slash in the second argument to `path.join`, which causes Node to ignore 
`APP_DIR` and resolve to an absolute `/src/service-worker.ts`, so in a typical 
Superset checkout the file will not be found and the service worker entry will 
fail to build; the path should be relative to `APP_DIR` without a leading slash.
   
   Validate the correctness of the flagged issue. If correct, How can I resolve 
this? If you propose a fix, implement it and please make it concise.
   ```
   </details>



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to