TruyenDrive

Best Comic Reader for Google Drive

Você precisará instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Você precisará instalar uma extensão como o Tampermonkey para instalar este script.

Você precisará instalar um gerenciador de scripts de usuário para instalar este script.

(Eu já tenho um gerenciador de scripts de usuário, me deixe instalá-lo!)

Advertisement:

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

(Eu já possuo um gerenciador de estilos de usuário, me deixar fazer a instalação!)

Advertisement:

// ==UserScript==
// @name         TruyenDrive
// @namespace    http://tampermonkey.net/
// @version      2.2.0
// @author       Zennomi
// @description  Best Comic Reader for Google Drive
// @icon         https://zennomi.github.io/truyendrive/icon.webp
// @match        https://drive.google.com/drive/*
// @match        https://drive.google.com/file/*
// @match        https://onedrive.live.com/*
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/system.min.js
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/extras/named-register.min.js
// @require      data:application/javascript,%3B(typeof%20System!%3D'undefined')%26%26(System%3Dnew%20System.constructor())%3B
// @license MIT
// ==/UserScript==


System.register("./__entry.js", [], (function (exports, module) {
  'use strict';
  return {
    execute: (function () {

      function getDefaultExportFromCjs(x) {
        return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
      }
      var jsxRuntime = { exports: {} };
      var reactJsxRuntime_production = {};
      var hasRequiredReactJsxRuntime_production;
      function requireReactJsxRuntime_production() {
        if (hasRequiredReactJsxRuntime_production) return reactJsxRuntime_production;
        hasRequiredReactJsxRuntime_production = 1;
        var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment");
        function jsxProd(type, config, maybeKey) {
          var key = null;
          void 0 !== maybeKey && (key = "" + maybeKey);
          void 0 !== config.key && (key = "" + config.key);
          if ("key" in config) {
            maybeKey = {};
            for (var propName in config)
              "key" !== propName && (maybeKey[propName] = config[propName]);
          } else maybeKey = config;
          config = maybeKey.ref;
          return {
            $$typeof: REACT_ELEMENT_TYPE,
            type,
            key,
            ref: void 0 !== config ? config : null,
            props: maybeKey
          };
        }
        reactJsxRuntime_production.Fragment = REACT_FRAGMENT_TYPE;
        reactJsxRuntime_production.jsx = jsxProd;
        reactJsxRuntime_production.jsxs = jsxProd;
        return reactJsxRuntime_production;
      }
      var hasRequiredJsxRuntime;
      function requireJsxRuntime() {
        if (hasRequiredJsxRuntime) return jsxRuntime.exports;
        hasRequiredJsxRuntime = 1;
        {
          jsxRuntime.exports = requireReactJsxRuntime_production();
        }
        return jsxRuntime.exports;
      }
      var jsxRuntimeExports = requireJsxRuntime();
      var react = { exports: {} };
      var react_production = {};
      var hasRequiredReact_production;
      function requireReact_production() {
        if (hasRequiredReact_production) return react_production;
        hasRequiredReact_production = 1;
        var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy"), REACT_ACTIVITY_TYPE = Symbol.for("react.activity"), MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
        function getIteratorFn(maybeIterable) {
          if (null === maybeIterable || "object" !== typeof maybeIterable) return null;
          maybeIterable = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable["@@iterator"];
          return "function" === typeof maybeIterable ? maybeIterable : null;
        }
        var ReactNoopUpdateQueue = {
          isMounted: function() {
            return false;
          },
          enqueueForceUpdate: function() {
          },
          enqueueReplaceState: function() {
          },
          enqueueSetState: function() {
          }
        }, assign = Object.assign, emptyObject = {};
        function Component(props, context, updater) {
          this.props = props;
          this.context = context;
          this.refs = emptyObject;
          this.updater = updater || ReactNoopUpdateQueue;
        }
        Component.prototype.isReactComponent = {};
        Component.prototype.setState = function(partialState, callback) {
          if ("object" !== typeof partialState && "function" !== typeof partialState && null != partialState)
            throw Error(
              "takes an object of state variables to update or a function which returns an object of state variables."
            );
          this.updater.enqueueSetState(this, partialState, callback, "setState");
        };
        Component.prototype.forceUpdate = function(callback) {
          this.updater.enqueueForceUpdate(this, callback, "forceUpdate");
        };
        function ComponentDummy() {
        }
        ComponentDummy.prototype = Component.prototype;
        function PureComponent(props, context, updater) {
          this.props = props;
          this.context = context;
          this.refs = emptyObject;
          this.updater = updater || ReactNoopUpdateQueue;
        }
        var pureComponentPrototype = PureComponent.prototype = new ComponentDummy();
        pureComponentPrototype.constructor = PureComponent;
        assign(pureComponentPrototype, Component.prototype);
        pureComponentPrototype.isPureReactComponent = true;
        var isArrayImpl = Array.isArray;
        function noop() {
        }
        var ReactSharedInternals = { H: null, A: null, T: null, S: null }, hasOwnProperty = Object.prototype.hasOwnProperty;
        function ReactElement(type, key, props) {
          var refProp = props.ref;
          return {
            $$typeof: REACT_ELEMENT_TYPE,
            type,
            key,
            ref: void 0 !== refProp ? refProp : null,
            props
          };
        }
        function cloneAndReplaceKey(oldElement, newKey) {
          return ReactElement(oldElement.type, newKey, oldElement.props);
        }
        function isValidElement(object) {
          return "object" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;
        }
        function escape(key) {
          var escaperLookup = { "=": "=0", ":": "=2" };
          return "$" + key.replace(/[=:]/g, function(match) {
            return escaperLookup[match];
          });
        }
        var userProvidedKeyEscapeRegex = /\/+/g;
        function getElementKey(element, index) {
          return "object" === typeof element && null !== element && null != element.key ? escape("" + element.key) : index.toString(36);
        }
        function resolveThenable(thenable) {
          switch (thenable.status) {
            case "fulfilled":
              return thenable.value;
            case "rejected":
              throw thenable.reason;
            default:
              switch ("string" === typeof thenable.status ? thenable.then(noop, noop) : (thenable.status = "pending", thenable.then(
                function(fulfilledValue) {
                  "pending" === thenable.status && (thenable.status = "fulfilled", thenable.value = fulfilledValue);
                },
                function(error) {
                  "pending" === thenable.status && (thenable.status = "rejected", thenable.reason = error);
                }
              )), thenable.status) {
                case "fulfilled":
                  return thenable.value;
                case "rejected":
                  throw thenable.reason;
              }
          }
          throw thenable;
        }
        function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {
          var type = typeof children;
          if ("undefined" === type || "boolean" === type) children = null;
          var invokeCallback = false;
          if (null === children) invokeCallback = true;
          else
            switch (type) {
              case "bigint":
              case "string":
              case "number":
                invokeCallback = true;
                break;
              case "object":
                switch (children.$$typeof) {
                  case REACT_ELEMENT_TYPE:
                  case REACT_PORTAL_TYPE:
                    invokeCallback = true;
                    break;
                  case REACT_LAZY_TYPE:
                    return invokeCallback = children._init, mapIntoArray(
                      invokeCallback(children._payload),
                      array,
                      escapedPrefix,
                      nameSoFar,
                      callback
                    );
                }
            }
          if (invokeCallback)
            return callback = callback(children), invokeCallback = "" === nameSoFar ? "." + getElementKey(children, 0) : nameSoFar, isArrayImpl(callback) ? (escapedPrefix = "", null != invokeCallback && (escapedPrefix = invokeCallback.replace(userProvidedKeyEscapeRegex, "$&/") + "/"), mapIntoArray(callback, array, escapedPrefix, "", function(c) {
              return c;
            })) : null != callback && (isValidElement(callback) && (callback = cloneAndReplaceKey(
              callback,
              escapedPrefix + (null == callback.key || children && children.key === callback.key ? "" : ("" + callback.key).replace(
                userProvidedKeyEscapeRegex,
                "$&/"
              ) + "/") + invokeCallback
            )), array.push(callback)), 1;
          invokeCallback = 0;
          var nextNamePrefix = "" === nameSoFar ? "." : nameSoFar + ":";
          if (isArrayImpl(children))
            for (var i = 0; i < children.length; i++)
              nameSoFar = children[i], type = nextNamePrefix + getElementKey(nameSoFar, i), invokeCallback += mapIntoArray(
                nameSoFar,
                array,
                escapedPrefix,
                type,
                callback
              );
          else if (i = getIteratorFn(children), "function" === typeof i)
            for (children = i.call(children), i = 0; !(nameSoFar = children.next()).done; )
              nameSoFar = nameSoFar.value, type = nextNamePrefix + getElementKey(nameSoFar, i++), invokeCallback += mapIntoArray(
                nameSoFar,
                array,
                escapedPrefix,
                type,
                callback
              );
          else if ("object" === type) {
            if ("function" === typeof children.then)
              return mapIntoArray(
                resolveThenable(children),
                array,
                escapedPrefix,
                nameSoFar,
                callback
              );
            array = String(children);
            throw Error(
              "Objects are not valid as a React child (found: " + ("[object Object]" === array ? "object with keys {" + Object.keys(children).join(", ") + "}" : array) + "). If you meant to render a collection of children, use an array instead."
            );
          }
          return invokeCallback;
        }
        function mapChildren(children, func, context) {
          if (null == children) return children;
          var result = [], count = 0;
          mapIntoArray(children, result, "", "", function(child) {
            return func.call(context, child, count++);
          });
          return result;
        }
        function lazyInitializer(payload) {
          if (-1 === payload._status) {
            var ctor = payload._result;
            ctor = ctor();
            ctor.then(
              function(moduleObject) {
                if (0 === payload._status || -1 === payload._status)
                  payload._status = 1, payload._result = moduleObject;
              },
              function(error) {
                if (0 === payload._status || -1 === payload._status)
                  payload._status = 2, payload._result = error;
              }
            );
            -1 === payload._status && (payload._status = 0, payload._result = ctor);
          }
          if (1 === payload._status) return payload._result.default;
          throw payload._result;
        }
        var reportGlobalError = "function" === typeof reportError ? reportError : function(error) {
          if ("object" === typeof window && "function" === typeof window.ErrorEvent) {
            var event = new window.ErrorEvent("error", {
              bubbles: true,
              cancelable: true,
              message: "object" === typeof error && null !== error && "string" === typeof error.message ? String(error.message) : String(error),
              error
            });
            if (!window.dispatchEvent(event)) return;
          } else if ("object" === typeof process && "function" === typeof process.emit) {
            process.emit("uncaughtException", error);
            return;
          }
          console.error(error);
        }, Children = {
          map: mapChildren,
          forEach: function(children, forEachFunc, forEachContext) {
            mapChildren(
              children,
              function() {
                forEachFunc.apply(this, arguments);
              },
              forEachContext
            );
          },
          count: function(children) {
            var n = 0;
            mapChildren(children, function() {
              n++;
            });
            return n;
          },
          toArray: function(children) {
            return mapChildren(children, function(child) {
              return child;
            }) || [];
          },
          only: function(children) {
            if (!isValidElement(children))
              throw Error(
                "React.Children.only expected to receive a single React element child."
              );
            return children;
          }
        };
        react_production.Activity = REACT_ACTIVITY_TYPE;
        react_production.Children = Children;
        react_production.Component = Component;
        react_production.Fragment = REACT_FRAGMENT_TYPE;
        react_production.Profiler = REACT_PROFILER_TYPE;
        react_production.PureComponent = PureComponent;
        react_production.StrictMode = REACT_STRICT_MODE_TYPE;
        react_production.Suspense = REACT_SUSPENSE_TYPE;
        react_production.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = ReactSharedInternals;
        react_production.__COMPILER_RUNTIME = {
          __proto__: null,
          c: function(size) {
            return ReactSharedInternals.H.useMemoCache(size);
          }
        };
        react_production.cache = function(fn) {
          return function() {
            return fn.apply(null, arguments);
          };
        };
        react_production.cacheSignal = function() {
          return null;
        };
        react_production.cloneElement = function(element, config, children) {
          if (null === element || void 0 === element)
            throw Error(
              "The argument must be a React element, but you passed " + element + "."
            );
          var props = assign({}, element.props), key = element.key;
          if (null != config)
            for (propName in void 0 !== config.key && (key = "" + config.key), config)
              !hasOwnProperty.call(config, propName) || "key" === propName || "__self" === propName || "__source" === propName || "ref" === propName && void 0 === config.ref || (props[propName] = config[propName]);
          var propName = arguments.length - 2;
          if (1 === propName) props.children = children;
          else if (1 < propName) {
            for (var childArray = Array(propName), i = 0; i < propName; i++)
              childArray[i] = arguments[i + 2];
            props.children = childArray;
          }
          return ReactElement(element.type, key, props);
        };
        react_production.createContext = function(defaultValue) {
          defaultValue = {
            $$typeof: REACT_CONTEXT_TYPE,
            _currentValue: defaultValue,
            _currentValue2: defaultValue,
            _threadCount: 0,
            Provider: null,
            Consumer: null
          };
          defaultValue.Provider = defaultValue;
          defaultValue.Consumer = {
            $$typeof: REACT_CONSUMER_TYPE,
            _context: defaultValue
          };
          return defaultValue;
        };
        react_production.createElement = function(type, config, children) {
          var propName, props = {}, key = null;
          if (null != config)
            for (propName in void 0 !== config.key && (key = "" + config.key), config)
              hasOwnProperty.call(config, propName) && "key" !== propName && "__self" !== propName && "__source" !== propName && (props[propName] = config[propName]);
          var childrenLength = arguments.length - 2;
          if (1 === childrenLength) props.children = children;
          else if (1 < childrenLength) {
            for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)
              childArray[i] = arguments[i + 2];
            props.children = childArray;
          }
          if (type && type.defaultProps)
            for (propName in childrenLength = type.defaultProps, childrenLength)
              void 0 === props[propName] && (props[propName] = childrenLength[propName]);
          return ReactElement(type, key, props);
        };
        react_production.createRef = function() {
          return { current: null };
        };
        react_production.forwardRef = function(render) {
          return { $$typeof: REACT_FORWARD_REF_TYPE, render };
        };
        react_production.isValidElement = isValidElement;
        react_production.lazy = function(ctor) {
          return {
            $$typeof: REACT_LAZY_TYPE,
            _payload: { _status: -1, _result: ctor },
            _init: lazyInitializer
          };
        };
        react_production.memo = function(type, compare) {
          return {
            $$typeof: REACT_MEMO_TYPE,
            type,
            compare: void 0 === compare ? null : compare
          };
        };
        react_production.startTransition = function(scope) {
          var prevTransition = ReactSharedInternals.T, currentTransition = {};
          ReactSharedInternals.T = currentTransition;
          try {
            var returnValue = scope(), onStartTransitionFinish = ReactSharedInternals.S;
            null !== onStartTransitionFinish && onStartTransitionFinish(currentTransition, returnValue);
            "object" === typeof returnValue && null !== returnValue && "function" === typeof returnValue.then && returnValue.then(noop, reportGlobalError);
          } catch (error) {
            reportGlobalError(error);
          } finally {
            null !== prevTransition && null !== currentTransition.types && (prevTransition.types = currentTransition.types), ReactSharedInternals.T = prevTransition;
          }
        };
        react_production.unstable_useCacheRefresh = function() {
          return ReactSharedInternals.H.useCacheRefresh();
        };
        react_production.use = function(usable) {
          return ReactSharedInternals.H.use(usable);
        };
        react_production.useActionState = function(action, initialState, permalink) {
          return ReactSharedInternals.H.useActionState(action, initialState, permalink);
        };
        react_production.useCallback = function(callback, deps) {
          return ReactSharedInternals.H.useCallback(callback, deps);
        };
        react_production.useContext = function(Context) {
          return ReactSharedInternals.H.useContext(Context);
        };
        react_production.useDebugValue = function() {
        };
        react_production.useDeferredValue = function(value, initialValue) {
          return ReactSharedInternals.H.useDeferredValue(value, initialValue);
        };
        react_production.useEffect = function(create, deps) {
          return ReactSharedInternals.H.useEffect(create, deps);
        };
        react_production.useEffectEvent = function(callback) {
          return ReactSharedInternals.H.useEffectEvent(callback);
        };
        react_production.useId = function() {
          return ReactSharedInternals.H.useId();
        };
        react_production.useImperativeHandle = function(ref, create, deps) {
          return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);
        };
        react_production.useInsertionEffect = function(create, deps) {
          return ReactSharedInternals.H.useInsertionEffect(create, deps);
        };
        react_production.useLayoutEffect = function(create, deps) {
          return ReactSharedInternals.H.useLayoutEffect(create, deps);
        };
        react_production.useMemo = function(create, deps) {
          return ReactSharedInternals.H.useMemo(create, deps);
        };
        react_production.useOptimistic = function(passthrough, reducer) {
          return ReactSharedInternals.H.useOptimistic(passthrough, reducer);
        };
        react_production.useReducer = function(reducer, initialArg, init) {
          return ReactSharedInternals.H.useReducer(reducer, initialArg, init);
        };
        react_production.useRef = function(initialValue) {
          return ReactSharedInternals.H.useRef(initialValue);
        };
        react_production.useState = function(initialState) {
          return ReactSharedInternals.H.useState(initialState);
        };
        react_production.useSyncExternalStore = function(subscribe, getSnapshot, getServerSnapshot) {
          return ReactSharedInternals.H.useSyncExternalStore(
            subscribe,
            getSnapshot,
            getServerSnapshot
          );
        };
        react_production.useTransition = function() {
          return ReactSharedInternals.H.useTransition();
        };
        react_production.version = "19.2.5";
        return react_production;
      }
      var hasRequiredReact;
      function requireReact() {
        if (hasRequiredReact) return react.exports;
        hasRequiredReact = 1;
        {
          react.exports = requireReact_production();
        }
        return react.exports;
      }
      var reactExports = requireReact();
      const React = getDefaultExportFromCjs(reactExports);
      var client = { exports: {} };
      var reactDomClient_production = {};
      var scheduler = { exports: {} };
      var scheduler_production = {};
      var hasRequiredScheduler_production;
      function requireScheduler_production() {
        if (hasRequiredScheduler_production) return scheduler_production;
        hasRequiredScheduler_production = 1;
        (function(exports$1) {
          function push(heap, node) {
            var index = heap.length;
            heap.push(node);
            a: for (; 0 < index; ) {
              var parentIndex = index - 1 >>> 1, parent = heap[parentIndex];
              if (0 < compare(parent, node))
                heap[parentIndex] = node, heap[index] = parent, index = parentIndex;
              else break a;
            }
          }
          function peek(heap) {
            return 0 === heap.length ? null : heap[0];
          }
          function pop(heap) {
            if (0 === heap.length) return null;
            var first = heap[0], last = heap.pop();
            if (last !== first) {
              heap[0] = last;
              a: for (var index = 0, length = heap.length, halfLength = length >>> 1; index < halfLength; ) {
                var leftIndex = 2 * (index + 1) - 1, left = heap[leftIndex], rightIndex = leftIndex + 1, right = heap[rightIndex];
                if (0 > compare(left, last))
                  rightIndex < length && 0 > compare(right, left) ? (heap[index] = right, heap[rightIndex] = last, index = rightIndex) : (heap[index] = left, heap[leftIndex] = last, index = leftIndex);
                else if (rightIndex < length && 0 > compare(right, last))
                  heap[index] = right, heap[rightIndex] = last, index = rightIndex;
                else break a;
              }
            }
            return first;
          }
          function compare(a, b) {
            var diff = a.sortIndex - b.sortIndex;
            return 0 !== diff ? diff : a.id - b.id;
          }
          exports$1.unstable_now = void 0;
          if ("object" === typeof performance && "function" === typeof performance.now) {
            var localPerformance = performance;
            exports$1.unstable_now = function() {
              return localPerformance.now();
            };
          } else {
            var localDate = Date, initialTime = localDate.now();
            exports$1.unstable_now = function() {
              return localDate.now() - initialTime;
            };
          }
          var taskQueue = [], timerQueue = [], taskIdCounter = 1, currentTask = null, currentPriorityLevel = 3, isPerformingWork = false, isHostCallbackScheduled = false, isHostTimeoutScheduled = false, needsPaint = false, localSetTimeout = "function" === typeof setTimeout ? setTimeout : null, localClearTimeout = "function" === typeof clearTimeout ? clearTimeout : null, localSetImmediate = "undefined" !== typeof setImmediate ? setImmediate : null;
          function advanceTimers(currentTime) {
            for (var timer = peek(timerQueue); null !== timer; ) {
              if (null === timer.callback) pop(timerQueue);
              else if (timer.startTime <= currentTime)
                pop(timerQueue), timer.sortIndex = timer.expirationTime, push(taskQueue, timer);
              else break;
              timer = peek(timerQueue);
            }
          }
          function handleTimeout(currentTime) {
            isHostTimeoutScheduled = false;
            advanceTimers(currentTime);
            if (!isHostCallbackScheduled)
              if (null !== peek(taskQueue))
                isHostCallbackScheduled = true, isMessageLoopRunning || (isMessageLoopRunning = true, schedulePerformWorkUntilDeadline());
              else {
                var firstTimer = peek(timerQueue);
                null !== firstTimer && requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);
              }
          }
          var isMessageLoopRunning = false, taskTimeoutID = -1, frameInterval = 5, startTime = -1;
          function shouldYieldToHost() {
            return needsPaint ? true : exports$1.unstable_now() - startTime < frameInterval ? false : true;
          }
          function performWorkUntilDeadline() {
            needsPaint = false;
            if (isMessageLoopRunning) {
              var currentTime = exports$1.unstable_now();
              startTime = currentTime;
              var hasMoreWork = true;
              try {
                a: {
                  isHostCallbackScheduled = false;
                  isHostTimeoutScheduled && (isHostTimeoutScheduled = false, localClearTimeout(taskTimeoutID), taskTimeoutID = -1);
                  isPerformingWork = true;
                  var previousPriorityLevel = currentPriorityLevel;
                  try {
                    b: {
                      advanceTimers(currentTime);
                      for (currentTask = peek(taskQueue); null !== currentTask && !(currentTask.expirationTime > currentTime && shouldYieldToHost()); ) {
                        var callback = currentTask.callback;
                        if ("function" === typeof callback) {
                          currentTask.callback = null;
                          currentPriorityLevel = currentTask.priorityLevel;
                          var continuationCallback = callback(
                            currentTask.expirationTime <= currentTime
                          );
                          currentTime = exports$1.unstable_now();
                          if ("function" === typeof continuationCallback) {
                            currentTask.callback = continuationCallback;
                            advanceTimers(currentTime);
                            hasMoreWork = true;
                            break b;
                          }
                          currentTask === peek(taskQueue) && pop(taskQueue);
                          advanceTimers(currentTime);
                        } else pop(taskQueue);
                        currentTask = peek(taskQueue);
                      }
                      if (null !== currentTask) hasMoreWork = true;
                      else {
                        var firstTimer = peek(timerQueue);
                        null !== firstTimer && requestHostTimeout(
                          handleTimeout,
                          firstTimer.startTime - currentTime
                        );
                        hasMoreWork = false;
                      }
                    }
                    break a;
                  } finally {
                    currentTask = null, currentPriorityLevel = previousPriorityLevel, isPerformingWork = false;
                  }
                  hasMoreWork = void 0;
                }
              } finally {
                hasMoreWork ? schedulePerformWorkUntilDeadline() : isMessageLoopRunning = false;
              }
            }
          }
          var schedulePerformWorkUntilDeadline;
          if ("function" === typeof localSetImmediate)
            schedulePerformWorkUntilDeadline = function() {
              localSetImmediate(performWorkUntilDeadline);
            };
          else if ("undefined" !== typeof MessageChannel) {
            var channel = new MessageChannel(), port = channel.port2;
            channel.port1.onmessage = performWorkUntilDeadline;
            schedulePerformWorkUntilDeadline = function() {
              port.postMessage(null);
            };
          } else
            schedulePerformWorkUntilDeadline = function() {
              localSetTimeout(performWorkUntilDeadline, 0);
            };
          function requestHostTimeout(callback, ms) {
            taskTimeoutID = localSetTimeout(function() {
              callback(exports$1.unstable_now());
            }, ms);
          }
          exports$1.unstable_IdlePriority = 5;
          exports$1.unstable_ImmediatePriority = 1;
          exports$1.unstable_LowPriority = 4;
          exports$1.unstable_NormalPriority = 3;
          exports$1.unstable_Profiling = null;
          exports$1.unstable_UserBlockingPriority = 2;
          exports$1.unstable_cancelCallback = function(task) {
            task.callback = null;
          };
          exports$1.unstable_forceFrameRate = function(fps) {
            0 > fps || 125 < fps ? console.error(
              "forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"
            ) : frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5;
          };
          exports$1.unstable_getCurrentPriorityLevel = function() {
            return currentPriorityLevel;
          };
          exports$1.unstable_next = function(eventHandler) {
            switch (currentPriorityLevel) {
              case 1:
              case 2:
              case 3:
                var priorityLevel = 3;
                break;
              default:
                priorityLevel = currentPriorityLevel;
            }
            var previousPriorityLevel = currentPriorityLevel;
            currentPriorityLevel = priorityLevel;
            try {
              return eventHandler();
            } finally {
              currentPriorityLevel = previousPriorityLevel;
            }
          };
          exports$1.unstable_requestPaint = function() {
            needsPaint = true;
          };
          exports$1.unstable_runWithPriority = function(priorityLevel, eventHandler) {
            switch (priorityLevel) {
              case 1:
              case 2:
              case 3:
              case 4:
              case 5:
                break;
              default:
                priorityLevel = 3;
            }
            var previousPriorityLevel = currentPriorityLevel;
            currentPriorityLevel = priorityLevel;
            try {
              return eventHandler();
            } finally {
              currentPriorityLevel = previousPriorityLevel;
            }
          };
          exports$1.unstable_scheduleCallback = function(priorityLevel, callback, options) {
            var currentTime = exports$1.unstable_now();
            "object" === typeof options && null !== options ? (options = options.delay, options = "number" === typeof options && 0 < options ? currentTime + options : currentTime) : options = currentTime;
            switch (priorityLevel) {
              case 1:
                var timeout = -1;
                break;
              case 2:
                timeout = 250;
                break;
              case 5:
                timeout = 1073741823;
                break;
              case 4:
                timeout = 1e4;
                break;
              default:
                timeout = 5e3;
            }
            timeout = options + timeout;
            priorityLevel = {
              id: taskIdCounter++,
              callback,
              priorityLevel,
              startTime: options,
              expirationTime: timeout,
              sortIndex: -1
            };
            options > currentTime ? (priorityLevel.sortIndex = options, push(timerQueue, priorityLevel), null === peek(taskQueue) && priorityLevel === peek(timerQueue) && (isHostTimeoutScheduled ? (localClearTimeout(taskTimeoutID), taskTimeoutID = -1) : isHostTimeoutScheduled = true, requestHostTimeout(handleTimeout, options - currentTime))) : (priorityLevel.sortIndex = timeout, push(taskQueue, priorityLevel), isHostCallbackScheduled || isPerformingWork || (isHostCallbackScheduled = true, isMessageLoopRunning || (isMessageLoopRunning = true, schedulePerformWorkUntilDeadline())));
            return priorityLevel;
          };
          exports$1.unstable_shouldYield = shouldYieldToHost;
          exports$1.unstable_wrapCallback = function(callback) {
            var parentPriorityLevel = currentPriorityLevel;
            return function() {
              var previousPriorityLevel = currentPriorityLevel;
              currentPriorityLevel = parentPriorityLevel;
              try {
                return callback.apply(this, arguments);
              } finally {
                currentPriorityLevel = previousPriorityLevel;
              }
            };
          };
        })(scheduler_production);
        return scheduler_production;
      }
      var hasRequiredScheduler;
      function requireScheduler() {
        if (hasRequiredScheduler) return scheduler.exports;
        hasRequiredScheduler = 1;
        {
          scheduler.exports = requireScheduler_production();
        }
        return scheduler.exports;
      }
      var reactDom = { exports: {} };
      var reactDom_production = {};
      var hasRequiredReactDom_production;
      function requireReactDom_production() {
        if (hasRequiredReactDom_production) return reactDom_production;
        hasRequiredReactDom_production = 1;
        var React2 = requireReact();
        function formatProdErrorMessage(code) {
          var url = "https://react.dev/errors/" + code;
          if (1 < arguments.length) {
            url += "?args[]=" + encodeURIComponent(arguments[1]);
            for (var i = 2; i < arguments.length; i++)
              url += "&args[]=" + encodeURIComponent(arguments[i]);
          }
          return "Minified React error #" + code + "; visit " + url + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";
        }
        function noop() {
        }
        var Internals = {
          d: {
            f: noop,
            r: function() {
              throw Error(formatProdErrorMessage(522));
            },
            D: noop,
            C: noop,
            L: noop,
            m: noop,
            X: noop,
            S: noop,
            M: noop
          },
          p: 0,
          findDOMNode: null
        }, REACT_PORTAL_TYPE = Symbol.for("react.portal");
        function createPortal$1(children, containerInfo, implementation) {
          var key = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;
          return {
            $$typeof: REACT_PORTAL_TYPE,
            key: null == key ? null : "" + key,
            children,
            containerInfo,
            implementation
          };
        }
        var ReactSharedInternals = React2.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
        function getCrossOriginStringAs(as, input) {
          if ("font" === as) return "";
          if ("string" === typeof input)
            return "use-credentials" === input ? input : "";
        }
        reactDom_production.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = Internals;
        reactDom_production.createPortal = function(children, container) {
          var key = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;
          if (!container || 1 !== container.nodeType && 9 !== container.nodeType && 11 !== container.nodeType)
            throw Error(formatProdErrorMessage(299));
          return createPortal$1(children, container, null, key);
        };
        reactDom_production.flushSync = function(fn) {
          var previousTransition = ReactSharedInternals.T, previousUpdatePriority = Internals.p;
          try {
            if (ReactSharedInternals.T = null, Internals.p = 2, fn) return fn();
          } finally {
            ReactSharedInternals.T = previousTransition, Internals.p = previousUpdatePriority, Internals.d.f();
          }
        };
        reactDom_production.preconnect = function(href, options) {
          "string" === typeof href && (options ? (options = options.crossOrigin, options = "string" === typeof options ? "use-credentials" === options ? options : "" : void 0) : options = null, Internals.d.C(href, options));
        };
        reactDom_production.prefetchDNS = function(href) {
          "string" === typeof href && Internals.d.D(href);
        };
        reactDom_production.preinit = function(href, options) {
          if ("string" === typeof href && options && "string" === typeof options.as) {
            var as = options.as, crossOrigin = getCrossOriginStringAs(as, options.crossOrigin), integrity = "string" === typeof options.integrity ? options.integrity : void 0, fetchPriority = "string" === typeof options.fetchPriority ? options.fetchPriority : void 0;
            "style" === as ? Internals.d.S(
              href,
              "string" === typeof options.precedence ? options.precedence : void 0,
              {
                crossOrigin,
                integrity,
                fetchPriority
              }
            ) : "script" === as && Internals.d.X(href, {
              crossOrigin,
              integrity,
              fetchPriority,
              nonce: "string" === typeof options.nonce ? options.nonce : void 0
            });
          }
        };
        reactDom_production.preinitModule = function(href, options) {
          if ("string" === typeof href)
            if ("object" === typeof options && null !== options) {
              if (null == options.as || "script" === options.as) {
                var crossOrigin = getCrossOriginStringAs(
                  options.as,
                  options.crossOrigin
                );
                Internals.d.M(href, {
                  crossOrigin,
                  integrity: "string" === typeof options.integrity ? options.integrity : void 0,
                  nonce: "string" === typeof options.nonce ? options.nonce : void 0
                });
              }
            } else null == options && Internals.d.M(href);
        };
        reactDom_production.preload = function(href, options) {
          if ("string" === typeof href && "object" === typeof options && null !== options && "string" === typeof options.as) {
            var as = options.as, crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);
            Internals.d.L(href, as, {
              crossOrigin,
              integrity: "string" === typeof options.integrity ? options.integrity : void 0,
              nonce: "string" === typeof options.nonce ? options.nonce : void 0,
              type: "string" === typeof options.type ? options.type : void 0,
              fetchPriority: "string" === typeof options.fetchPriority ? options.fetchPriority : void 0,
              referrerPolicy: "string" === typeof options.referrerPolicy ? options.referrerPolicy : void 0,
              imageSrcSet: "string" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,
              imageSizes: "string" === typeof options.imageSizes ? options.imageSizes : void 0,
              media: "string" === typeof options.media ? options.media : void 0
            });
          }
        };
        reactDom_production.preloadModule = function(href, options) {
          if ("string" === typeof href)
            if (options) {
              var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);
              Internals.d.m(href, {
                as: "string" === typeof options.as && "script" !== options.as ? options.as : void 0,
                crossOrigin,
                integrity: "string" === typeof options.integrity ? options.integrity : void 0
              });
            } else Internals.d.m(href);
        };
        reactDom_production.requestFormReset = function(form) {
          Internals.d.r(form);
        };
        reactDom_production.unstable_batchedUpdates = function(fn, a) {
          return fn(a);
        };
        reactDom_production.useFormState = function(action, initialState, permalink) {
          return ReactSharedInternals.H.useFormState(action, initialState, permalink);
        };
        reactDom_production.useFormStatus = function() {
          return ReactSharedInternals.H.useHostTransitionStatus();
        };
        reactDom_production.version = "19.2.5";
        return reactDom_production;
      }
      var hasRequiredReactDom;
      function requireReactDom() {
        if (hasRequiredReactDom) return reactDom.exports;
        hasRequiredReactDom = 1;
        function checkDCE() {
          if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === "undefined" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== "function") {
            return;
          }
          try {
            __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);
          } catch (err) {
            console.error(err);
          }
        }
        {
          checkDCE();
          reactDom.exports = requireReactDom_production();
        }
        return reactDom.exports;
      }
      var hasRequiredReactDomClient_production;
      function requireReactDomClient_production() {
        if (hasRequiredReactDomClient_production) return reactDomClient_production;
        hasRequiredReactDomClient_production = 1;
        var Scheduler = requireScheduler(), React2 = requireReact(), ReactDOM2 = requireReactDom();
        function formatProdErrorMessage(code) {
          var url = "https://react.dev/errors/" + code;
          if (1 < arguments.length) {
            url += "?args[]=" + encodeURIComponent(arguments[1]);
            for (var i = 2; i < arguments.length; i++)
              url += "&args[]=" + encodeURIComponent(arguments[i]);
          }
          return "Minified React error #" + code + "; visit " + url + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";
        }
        function isValidContainer(node) {
          return !(!node || 1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType);
        }
        function getNearestMountedFiber(fiber) {
          var node = fiber, nearestMounted = fiber;
          if (fiber.alternate) for (; node.return; ) node = node.return;
          else {
            fiber = node;
            do
              node = fiber, 0 !== (node.flags & 4098) && (nearestMounted = node.return), fiber = node.return;
            while (fiber);
          }
          return 3 === node.tag ? nearestMounted : null;
        }
        function getSuspenseInstanceFromFiber(fiber) {
          if (13 === fiber.tag) {
            var suspenseState = fiber.memoizedState;
            null === suspenseState && (fiber = fiber.alternate, null !== fiber && (suspenseState = fiber.memoizedState));
            if (null !== suspenseState) return suspenseState.dehydrated;
          }
          return null;
        }
        function getActivityInstanceFromFiber(fiber) {
          if (31 === fiber.tag) {
            var activityState = fiber.memoizedState;
            null === activityState && (fiber = fiber.alternate, null !== fiber && (activityState = fiber.memoizedState));
            if (null !== activityState) return activityState.dehydrated;
          }
          return null;
        }
        function assertIsMounted(fiber) {
          if (getNearestMountedFiber(fiber) !== fiber)
            throw Error(formatProdErrorMessage(188));
        }
        function findCurrentFiberUsingSlowPath(fiber) {
          var alternate = fiber.alternate;
          if (!alternate) {
            alternate = getNearestMountedFiber(fiber);
            if (null === alternate) throw Error(formatProdErrorMessage(188));
            return alternate !== fiber ? null : fiber;
          }
          for (var a = fiber, b = alternate; ; ) {
            var parentA = a.return;
            if (null === parentA) break;
            var parentB = parentA.alternate;
            if (null === parentB) {
              b = parentA.return;
              if (null !== b) {
                a = b;
                continue;
              }
              break;
            }
            if (parentA.child === parentB.child) {
              for (parentB = parentA.child; parentB; ) {
                if (parentB === a) return assertIsMounted(parentA), fiber;
                if (parentB === b) return assertIsMounted(parentA), alternate;
                parentB = parentB.sibling;
              }
              throw Error(formatProdErrorMessage(188));
            }
            if (a.return !== b.return) a = parentA, b = parentB;
            else {
              for (var didFindChild = false, child$0 = parentA.child; child$0; ) {
                if (child$0 === a) {
                  didFindChild = true;
                  a = parentA;
                  b = parentB;
                  break;
                }
                if (child$0 === b) {
                  didFindChild = true;
                  b = parentA;
                  a = parentB;
                  break;
                }
                child$0 = child$0.sibling;
              }
              if (!didFindChild) {
                for (child$0 = parentB.child; child$0; ) {
                  if (child$0 === a) {
                    didFindChild = true;
                    a = parentB;
                    b = parentA;
                    break;
                  }
                  if (child$0 === b) {
                    didFindChild = true;
                    b = parentB;
                    a = parentA;
                    break;
                  }
                  child$0 = child$0.sibling;
                }
                if (!didFindChild) throw Error(formatProdErrorMessage(189));
              }
            }
            if (a.alternate !== b) throw Error(formatProdErrorMessage(190));
          }
          if (3 !== a.tag) throw Error(formatProdErrorMessage(188));
          return a.stateNode.current === a ? fiber : alternate;
        }
        function findCurrentHostFiberImpl(node) {
          var tag = node.tag;
          if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;
          for (node = node.child; null !== node; ) {
            tag = findCurrentHostFiberImpl(node);
            if (null !== tag) return tag;
            node = node.sibling;
          }
          return null;
        }
        var assign = Object.assign, REACT_LEGACY_ELEMENT_TYPE = Symbol.for("react.element"), REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy");
        var REACT_ACTIVITY_TYPE = Symbol.for("react.activity");
        var REACT_MEMO_CACHE_SENTINEL = Symbol.for("react.memo_cache_sentinel");
        var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
        function getIteratorFn(maybeIterable) {
          if (null === maybeIterable || "object" !== typeof maybeIterable) return null;
          maybeIterable = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable["@@iterator"];
          return "function" === typeof maybeIterable ? maybeIterable : null;
        }
        var REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference");
        function getComponentNameFromType(type) {
          if (null == type) return null;
          if ("function" === typeof type)
            return type.$$typeof === REACT_CLIENT_REFERENCE ? null : type.displayName || type.name || null;
          if ("string" === typeof type) return type;
          switch (type) {
            case REACT_FRAGMENT_TYPE:
              return "Fragment";
            case REACT_PROFILER_TYPE:
              return "Profiler";
            case REACT_STRICT_MODE_TYPE:
              return "StrictMode";
            case REACT_SUSPENSE_TYPE:
              return "Suspense";
            case REACT_SUSPENSE_LIST_TYPE:
              return "SuspenseList";
            case REACT_ACTIVITY_TYPE:
              return "Activity";
          }
          if ("object" === typeof type)
            switch (type.$$typeof) {
              case REACT_PORTAL_TYPE:
                return "Portal";
              case REACT_CONTEXT_TYPE:
                return type.displayName || "Context";
              case REACT_CONSUMER_TYPE:
                return (type._context.displayName || "Context") + ".Consumer";
              case REACT_FORWARD_REF_TYPE:
                var innerType = type.render;
                type = type.displayName;
                type || (type = innerType.displayName || innerType.name || "", type = "" !== type ? "ForwardRef(" + type + ")" : "ForwardRef");
                return type;
              case REACT_MEMO_TYPE:
                return innerType = type.displayName || null, null !== innerType ? innerType : getComponentNameFromType(type.type) || "Memo";
              case REACT_LAZY_TYPE:
                innerType = type._payload;
                type = type._init;
                try {
                  return getComponentNameFromType(type(innerType));
                } catch (x) {
                }
            }
          return null;
        }
        var isArrayImpl = Array.isArray, ReactSharedInternals = React2.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, ReactDOMSharedInternals = ReactDOM2.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, sharedNotPendingObject = {
          pending: false,
          data: null,
          method: null,
          action: null
        }, valueStack = [], index = -1;
        function createCursor(defaultValue) {
          return { current: defaultValue };
        }
        function pop(cursor) {
          0 > index || (cursor.current = valueStack[index], valueStack[index] = null, index--);
        }
        function push(cursor, value) {
          index++;
          valueStack[index] = cursor.current;
          cursor.current = value;
        }
        var contextStackCursor = createCursor(null), contextFiberStackCursor = createCursor(null), rootInstanceStackCursor = createCursor(null), hostTransitionProviderCursor = createCursor(null);
        function pushHostContainer(fiber, nextRootInstance) {
          push(rootInstanceStackCursor, nextRootInstance);
          push(contextFiberStackCursor, fiber);
          push(contextStackCursor, null);
          switch (nextRootInstance.nodeType) {
            case 9:
            case 11:
              fiber = (fiber = nextRootInstance.documentElement) ? (fiber = fiber.namespaceURI) ? getOwnHostContext(fiber) : 0 : 0;
              break;
            default:
              if (fiber = nextRootInstance.tagName, nextRootInstance = nextRootInstance.namespaceURI)
                nextRootInstance = getOwnHostContext(nextRootInstance), fiber = getChildHostContextProd(nextRootInstance, fiber);
              else
                switch (fiber) {
                  case "svg":
                    fiber = 1;
                    break;
                  case "math":
                    fiber = 2;
                    break;
                  default:
                    fiber = 0;
                }
          }
          pop(contextStackCursor);
          push(contextStackCursor, fiber);
        }
        function popHostContainer() {
          pop(contextStackCursor);
          pop(contextFiberStackCursor);
          pop(rootInstanceStackCursor);
        }
        function pushHostContext(fiber) {
          null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);
          var context = contextStackCursor.current;
          var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);
          context !== JSCompiler_inline_result && (push(contextFiberStackCursor, fiber), push(contextStackCursor, JSCompiler_inline_result));
        }
        function popHostContext(fiber) {
          contextFiberStackCursor.current === fiber && (pop(contextStackCursor), pop(contextFiberStackCursor));
          hostTransitionProviderCursor.current === fiber && (pop(hostTransitionProviderCursor), HostTransitionContext._currentValue = sharedNotPendingObject);
        }
        var prefix, suffix;
        function describeBuiltInComponentFrame(name) {
          if (void 0 === prefix)
            try {
              throw Error();
            } catch (x) {
              var match = x.stack.trim().match(/\n( *(at )?)/);
              prefix = match && match[1] || "";
              suffix = -1 < x.stack.indexOf("\n    at") ? " (<anonymous>)" : -1 < x.stack.indexOf("@") ? "@unknown:0:0" : "";
            }
          return "\n" + prefix + name + suffix;
        }
        var reentry = false;
        function describeNativeComponentFrame(fn, construct) {
          if (!fn || reentry) return "";
          reentry = true;
          var previousPrepareStackTrace = Error.prepareStackTrace;
          Error.prepareStackTrace = void 0;
          try {
            var RunInRootFrame = {
              DetermineComponentFrameRoot: function() {
                try {
                  if (construct) {
                    var Fake = function() {
                      throw Error();
                    };
                    Object.defineProperty(Fake.prototype, "props", {
                      set: function() {
                        throw Error();
                      }
                    });
                    if ("object" === typeof Reflect && Reflect.construct) {
                      try {
                        Reflect.construct(Fake, []);
                      } catch (x) {
                        var control = x;
                      }
                      Reflect.construct(fn, [], Fake);
                    } else {
                      try {
                        Fake.call();
                      } catch (x$1) {
                        control = x$1;
                      }
                      fn.call(Fake.prototype);
                    }
                  } else {
                    try {
                      throw Error();
                    } catch (x$2) {
                      control = x$2;
                    }
                    (Fake = fn()) && "function" === typeof Fake.catch && Fake.catch(function() {
                    });
                  }
                } catch (sample) {
                  if (sample && control && "string" === typeof sample.stack)
                    return [sample.stack, control.stack];
                }
                return [null, null];
              }
            };
            RunInRootFrame.DetermineComponentFrameRoot.displayName = "DetermineComponentFrameRoot";
            var namePropDescriptor = Object.getOwnPropertyDescriptor(
              RunInRootFrame.DetermineComponentFrameRoot,
              "name"
            );
            namePropDescriptor && namePropDescriptor.configurable && Object.defineProperty(
              RunInRootFrame.DetermineComponentFrameRoot,
              "name",
              { value: "DetermineComponentFrameRoot" }
            );
            var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(), sampleStack = _RunInRootFrame$Deter[0], controlStack = _RunInRootFrame$Deter[1];
            if (sampleStack && controlStack) {
              var sampleLines = sampleStack.split("\n"), controlLines = controlStack.split("\n");
              for (namePropDescriptor = RunInRootFrame = 0; RunInRootFrame < sampleLines.length && !sampleLines[RunInRootFrame].includes("DetermineComponentFrameRoot"); )
                RunInRootFrame++;
              for (; namePropDescriptor < controlLines.length && !controlLines[namePropDescriptor].includes(
                "DetermineComponentFrameRoot"
              ); )
                namePropDescriptor++;
              if (RunInRootFrame === sampleLines.length || namePropDescriptor === controlLines.length)
                for (RunInRootFrame = sampleLines.length - 1, namePropDescriptor = controlLines.length - 1; 1 <= RunInRootFrame && 0 <= namePropDescriptor && sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]; )
                  namePropDescriptor--;
              for (; 1 <= RunInRootFrame && 0 <= namePropDescriptor; RunInRootFrame--, namePropDescriptor--)
                if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {
                  if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {
                    do
                      if (RunInRootFrame--, namePropDescriptor--, 0 > namePropDescriptor || sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {
                        var frame = "\n" + sampleLines[RunInRootFrame].replace(" at new ", " at ");
                        fn.displayName && frame.includes("<anonymous>") && (frame = frame.replace("<anonymous>", fn.displayName));
                        return frame;
                      }
                    while (1 <= RunInRootFrame && 0 <= namePropDescriptor);
                  }
                  break;
                }
            }
          } finally {
            reentry = false, Error.prepareStackTrace = previousPrepareStackTrace;
          }
          return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : "") ? describeBuiltInComponentFrame(previousPrepareStackTrace) : "";
        }
        function describeFiber(fiber, childFiber) {
          switch (fiber.tag) {
            case 26:
            case 27:
            case 5:
              return describeBuiltInComponentFrame(fiber.type);
            case 16:
              return describeBuiltInComponentFrame("Lazy");
            case 13:
              return fiber.child !== childFiber && null !== childFiber ? describeBuiltInComponentFrame("Suspense Fallback") : describeBuiltInComponentFrame("Suspense");
            case 19:
              return describeBuiltInComponentFrame("SuspenseList");
            case 0:
            case 15:
              return describeNativeComponentFrame(fiber.type, false);
            case 11:
              return describeNativeComponentFrame(fiber.type.render, false);
            case 1:
              return describeNativeComponentFrame(fiber.type, true);
            case 31:
              return describeBuiltInComponentFrame("Activity");
            default:
              return "";
          }
        }
        function getStackByFiberInDevAndProd(workInProgress2) {
          try {
            var info = "", previous = null;
            do
              info += describeFiber(workInProgress2, previous), previous = workInProgress2, workInProgress2 = workInProgress2.return;
            while (workInProgress2);
            return info;
          } catch (x) {
            return "\nError generating stack: " + x.message + "\n" + x.stack;
          }
        }
        var hasOwnProperty = Object.prototype.hasOwnProperty, scheduleCallback$3 = Scheduler.unstable_scheduleCallback, cancelCallback$1 = Scheduler.unstable_cancelCallback, shouldYield = Scheduler.unstable_shouldYield, requestPaint = Scheduler.unstable_requestPaint, now = Scheduler.unstable_now, getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel, ImmediatePriority = Scheduler.unstable_ImmediatePriority, UserBlockingPriority = Scheduler.unstable_UserBlockingPriority, NormalPriority$1 = Scheduler.unstable_NormalPriority, LowPriority = Scheduler.unstable_LowPriority, IdlePriority = Scheduler.unstable_IdlePriority, log$1 = Scheduler.log, unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue, rendererID = null, injectedHook = null;
        function setIsStrictModeForDevtools(newIsStrictMode) {
          "function" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);
          if (injectedHook && "function" === typeof injectedHook.setStrictMode)
            try {
              injectedHook.setStrictMode(rendererID, newIsStrictMode);
            } catch (err) {
            }
        }
        var clz32 = Math.clz32 ? Math.clz32 : clz32Fallback, log = Math.log, LN2 = Math.LN2;
        function clz32Fallback(x) {
          x >>>= 0;
          return 0 === x ? 32 : 31 - (log(x) / LN2 | 0) | 0;
        }
        var nextTransitionUpdateLane = 256, nextTransitionDeferredLane = 262144, nextRetryLane = 4194304;
        function getHighestPriorityLanes(lanes) {
          var pendingSyncLanes = lanes & 42;
          if (0 !== pendingSyncLanes) return pendingSyncLanes;
          switch (lanes & -lanes) {
            case 1:
              return 1;
            case 2:
              return 2;
            case 4:
              return 4;
            case 8:
              return 8;
            case 16:
              return 16;
            case 32:
              return 32;
            case 64:
              return 64;
            case 128:
              return 128;
            case 256:
            case 512:
            case 1024:
            case 2048:
            case 4096:
            case 8192:
            case 16384:
            case 32768:
            case 65536:
            case 131072:
              return lanes & 261888;
            case 262144:
            case 524288:
            case 1048576:
            case 2097152:
              return lanes & 3932160;
            case 4194304:
            case 8388608:
            case 16777216:
            case 33554432:
              return lanes & 62914560;
            case 67108864:
              return 67108864;
            case 134217728:
              return 134217728;
            case 268435456:
              return 268435456;
            case 536870912:
              return 536870912;
            case 1073741824:
              return 0;
            default:
              return lanes;
          }
        }
        function getNextLanes(root2, wipLanes, rootHasPendingCommit) {
          var pendingLanes = root2.pendingLanes;
          if (0 === pendingLanes) return 0;
          var nextLanes = 0, suspendedLanes = root2.suspendedLanes, pingedLanes = root2.pingedLanes;
          root2 = root2.warmLanes;
          var nonIdlePendingLanes = pendingLanes & 134217727;
          0 !== nonIdlePendingLanes ? (pendingLanes = nonIdlePendingLanes & ~suspendedLanes, 0 !== pendingLanes ? nextLanes = getHighestPriorityLanes(pendingLanes) : (pingedLanes &= nonIdlePendingLanes, 0 !== pingedLanes ? nextLanes = getHighestPriorityLanes(pingedLanes) : rootHasPendingCommit || (rootHasPendingCommit = nonIdlePendingLanes & ~root2, 0 !== rootHasPendingCommit && (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))))) : (nonIdlePendingLanes = pendingLanes & ~suspendedLanes, 0 !== nonIdlePendingLanes ? nextLanes = getHighestPriorityLanes(nonIdlePendingLanes) : 0 !== pingedLanes ? nextLanes = getHighestPriorityLanes(pingedLanes) : rootHasPendingCommit || (rootHasPendingCommit = pendingLanes & ~root2, 0 !== rootHasPendingCommit && (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));
          return 0 === nextLanes ? 0 : 0 !== wipLanes && wipLanes !== nextLanes && 0 === (wipLanes & suspendedLanes) && (suspendedLanes = nextLanes & -nextLanes, rootHasPendingCommit = wipLanes & -wipLanes, suspendedLanes >= rootHasPendingCommit || 32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)) ? wipLanes : nextLanes;
        }
        function checkIfRootIsPrerendering(root2, renderLanes2) {
          return 0 === (root2.pendingLanes & ~(root2.suspendedLanes & ~root2.pingedLanes) & renderLanes2);
        }
        function computeExpirationTime(lane, currentTime) {
          switch (lane) {
            case 1:
            case 2:
            case 4:
            case 8:
            case 64:
              return currentTime + 250;
            case 16:
            case 32:
            case 128:
            case 256:
            case 512:
            case 1024:
            case 2048:
            case 4096:
            case 8192:
            case 16384:
            case 32768:
            case 65536:
            case 131072:
            case 262144:
            case 524288:
            case 1048576:
            case 2097152:
              return currentTime + 5e3;
            case 4194304:
            case 8388608:
            case 16777216:
            case 33554432:
              return -1;
            case 67108864:
            case 134217728:
            case 268435456:
            case 536870912:
            case 1073741824:
              return -1;
            default:
              return -1;
          }
        }
        function claimNextRetryLane() {
          var lane = nextRetryLane;
          nextRetryLane <<= 1;
          0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);
          return lane;
        }
        function createLaneMap(initial) {
          for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);
          return laneMap;
        }
        function markRootUpdated$1(root2, updateLane) {
          root2.pendingLanes |= updateLane;
          268435456 !== updateLane && (root2.suspendedLanes = 0, root2.pingedLanes = 0, root2.warmLanes = 0);
        }
        function markRootFinished(root2, finishedLanes, remainingLanes, spawnedLane, updatedLanes, suspendedRetryLanes) {
          var previouslyPendingLanes = root2.pendingLanes;
          root2.pendingLanes = remainingLanes;
          root2.suspendedLanes = 0;
          root2.pingedLanes = 0;
          root2.warmLanes = 0;
          root2.expiredLanes &= remainingLanes;
          root2.entangledLanes &= remainingLanes;
          root2.errorRecoveryDisabledLanes &= remainingLanes;
          root2.shellSuspendCounter = 0;
          var entanglements = root2.entanglements, expirationTimes = root2.expirationTimes, hiddenUpdates = root2.hiddenUpdates;
          for (remainingLanes = previouslyPendingLanes & ~remainingLanes; 0 < remainingLanes; ) {
            var index$7 = 31 - clz32(remainingLanes), lane = 1 << index$7;
            entanglements[index$7] = 0;
            expirationTimes[index$7] = -1;
            var hiddenUpdatesForLane = hiddenUpdates[index$7];
            if (null !== hiddenUpdatesForLane)
              for (hiddenUpdates[index$7] = null, index$7 = 0; index$7 < hiddenUpdatesForLane.length; index$7++) {
                var update = hiddenUpdatesForLane[index$7];
                null !== update && (update.lane &= -536870913);
              }
            remainingLanes &= ~lane;
          }
          0 !== spawnedLane && markSpawnedDeferredLane(root2, spawnedLane, 0);
          0 !== suspendedRetryLanes && 0 === updatedLanes && 0 !== root2.tag && (root2.suspendedLanes |= suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));
        }
        function markSpawnedDeferredLane(root2, spawnedLane, entangledLanes) {
          root2.pendingLanes |= spawnedLane;
          root2.suspendedLanes &= ~spawnedLane;
          var spawnedLaneIndex = 31 - clz32(spawnedLane);
          root2.entangledLanes |= spawnedLane;
          root2.entanglements[spawnedLaneIndex] = root2.entanglements[spawnedLaneIndex] | 1073741824 | entangledLanes & 261930;
        }
        function markRootEntangled(root2, entangledLanes) {
          var rootEntangledLanes = root2.entangledLanes |= entangledLanes;
          for (root2 = root2.entanglements; rootEntangledLanes; ) {
            var index$8 = 31 - clz32(rootEntangledLanes), lane = 1 << index$8;
            lane & entangledLanes | root2[index$8] & entangledLanes && (root2[index$8] |= entangledLanes);
            rootEntangledLanes &= ~lane;
          }
        }
        function getBumpedLaneForHydration(root2, renderLanes2) {
          var renderLane = renderLanes2 & -renderLanes2;
          renderLane = 0 !== (renderLane & 42) ? 1 : getBumpedLaneForHydrationByLane(renderLane);
          return 0 !== (renderLane & (root2.suspendedLanes | renderLanes2)) ? 0 : renderLane;
        }
        function getBumpedLaneForHydrationByLane(lane) {
          switch (lane) {
            case 2:
              lane = 1;
              break;
            case 8:
              lane = 4;
              break;
            case 32:
              lane = 16;
              break;
            case 256:
            case 512:
            case 1024:
            case 2048:
            case 4096:
            case 8192:
            case 16384:
            case 32768:
            case 65536:
            case 131072:
            case 262144:
            case 524288:
            case 1048576:
            case 2097152:
            case 4194304:
            case 8388608:
            case 16777216:
            case 33554432:
              lane = 128;
              break;
            case 268435456:
              lane = 134217728;
              break;
            default:
              lane = 0;
          }
          return lane;
        }
        function lanesToEventPriority(lanes) {
          lanes &= -lanes;
          return 2 < lanes ? 8 < lanes ? 0 !== (lanes & 134217727) ? 32 : 268435456 : 8 : 2;
        }
        function resolveUpdatePriority() {
          var updatePriority = ReactDOMSharedInternals.p;
          if (0 !== updatePriority) return updatePriority;
          updatePriority = window.event;
          return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);
        }
        function runWithPriority(priority, fn) {
          var previousPriority = ReactDOMSharedInternals.p;
          try {
            return ReactDOMSharedInternals.p = priority, fn();
          } finally {
            ReactDOMSharedInternals.p = previousPriority;
          }
        }
        var randomKey = Math.random().toString(36).slice(2), internalInstanceKey = "__reactFiber$" + randomKey, internalPropsKey = "__reactProps$" + randomKey, internalContainerInstanceKey = "__reactContainer$" + randomKey, internalEventHandlersKey = "__reactEvents$" + randomKey, internalEventHandlerListenersKey = "__reactListeners$" + randomKey, internalEventHandlesSetKey = "__reactHandles$" + randomKey, internalRootNodeResourcesKey = "__reactResources$" + randomKey, internalHoistableMarker = "__reactMarker$" + randomKey;
        function detachDeletedInstance(node) {
          delete node[internalInstanceKey];
          delete node[internalPropsKey];
          delete node[internalEventHandlersKey];
          delete node[internalEventHandlerListenersKey];
          delete node[internalEventHandlesSetKey];
        }
        function getClosestInstanceFromNode(targetNode) {
          var targetInst = targetNode[internalInstanceKey];
          if (targetInst) return targetInst;
          for (var parentNode = targetNode.parentNode; parentNode; ) {
            if (targetInst = parentNode[internalContainerInstanceKey] || parentNode[internalInstanceKey]) {
              parentNode = targetInst.alternate;
              if (null !== targetInst.child || null !== parentNode && null !== parentNode.child)
                for (targetNode = getParentHydrationBoundary(targetNode); null !== targetNode; ) {
                  if (parentNode = targetNode[internalInstanceKey]) return parentNode;
                  targetNode = getParentHydrationBoundary(targetNode);
                }
              return targetInst;
            }
            targetNode = parentNode;
            parentNode = targetNode.parentNode;
          }
          return null;
        }
        function getInstanceFromNode(node) {
          if (node = node[internalInstanceKey] || node[internalContainerInstanceKey]) {
            var tag = node.tag;
            if (5 === tag || 6 === tag || 13 === tag || 31 === tag || 26 === tag || 27 === tag || 3 === tag)
              return node;
          }
          return null;
        }
        function getNodeFromInstance(inst) {
          var tag = inst.tag;
          if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;
          throw Error(formatProdErrorMessage(33));
        }
        function getResourcesFromRoot(root2) {
          var resources = root2[internalRootNodeResourcesKey];
          resources || (resources = root2[internalRootNodeResourcesKey] = { hoistableStyles: new Map(), hoistableScripts: new Map() });
          return resources;
        }
        function markNodeAsHoistable(node) {
          node[internalHoistableMarker] = true;
        }
        var allNativeEvents = new Set(), registrationNameDependencies = {};
        function registerTwoPhaseEvent(registrationName, dependencies) {
          registerDirectEvent(registrationName, dependencies);
          registerDirectEvent(registrationName + "Capture", dependencies);
        }
        function registerDirectEvent(registrationName, dependencies) {
          registrationNameDependencies[registrationName] = dependencies;
          for (registrationName = 0; registrationName < dependencies.length; registrationName++)
            allNativeEvents.add(dependencies[registrationName]);
        }
        var VALID_ATTRIBUTE_NAME_REGEX = RegExp(
          "^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"
        ), illegalAttributeNameCache = {}, validatedAttributeNameCache = {};
        function isAttributeNameSafe(attributeName) {
          if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))
            return true;
          if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return false;
          if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))
            return validatedAttributeNameCache[attributeName] = true;
          illegalAttributeNameCache[attributeName] = true;
          return false;
        }
        function setValueForAttribute(node, name, value) {
          if (isAttributeNameSafe(name))
            if (null === value) node.removeAttribute(name);
            else {
              switch (typeof value) {
                case "undefined":
                case "function":
                case "symbol":
                  node.removeAttribute(name);
                  return;
                case "boolean":
                  var prefix$10 = name.toLowerCase().slice(0, 5);
                  if ("data-" !== prefix$10 && "aria-" !== prefix$10) {
                    node.removeAttribute(name);
                    return;
                  }
              }
              node.setAttribute(name, "" + value);
            }
        }
        function setValueForKnownAttribute(node, name, value) {
          if (null === value) node.removeAttribute(name);
          else {
            switch (typeof value) {
              case "undefined":
              case "function":
              case "symbol":
              case "boolean":
                node.removeAttribute(name);
                return;
            }
            node.setAttribute(name, "" + value);
          }
        }
        function setValueForNamespacedAttribute(node, namespace, name, value) {
          if (null === value) node.removeAttribute(name);
          else {
            switch (typeof value) {
              case "undefined":
              case "function":
              case "symbol":
              case "boolean":
                node.removeAttribute(name);
                return;
            }
            node.setAttributeNS(namespace, name, "" + value);
          }
        }
        function getToStringValue(value) {
          switch (typeof value) {
            case "bigint":
            case "boolean":
            case "number":
            case "string":
            case "undefined":
              return value;
            case "object":
              return value;
            default:
              return "";
          }
        }
        function isCheckable(elem) {
          var type = elem.type;
          return (elem = elem.nodeName) && "input" === elem.toLowerCase() && ("checkbox" === type || "radio" === type);
        }
        function trackValueOnNode(node, valueField, currentValue) {
          var descriptor = Object.getOwnPropertyDescriptor(
            node.constructor.prototype,
            valueField
          );
          if (!node.hasOwnProperty(valueField) && "undefined" !== typeof descriptor && "function" === typeof descriptor.get && "function" === typeof descriptor.set) {
            var get = descriptor.get, set = descriptor.set;
            Object.defineProperty(node, valueField, {
              configurable: true,
              get: function() {
                return get.call(this);
              },
              set: function(value) {
                currentValue = "" + value;
                set.call(this, value);
              }
            });
            Object.defineProperty(node, valueField, {
              enumerable: descriptor.enumerable
            });
            return {
              getValue: function() {
                return currentValue;
              },
              setValue: function(value) {
                currentValue = "" + value;
              },
              stopTracking: function() {
                node._valueTracker = null;
                delete node[valueField];
              }
            };
          }
        }
        function track(node) {
          if (!node._valueTracker) {
            var valueField = isCheckable(node) ? "checked" : "value";
            node._valueTracker = trackValueOnNode(
              node,
              valueField,
              "" + node[valueField]
            );
          }
        }
        function updateValueIfChanged(node) {
          if (!node) return false;
          var tracker = node._valueTracker;
          if (!tracker) return true;
          var lastValue = tracker.getValue();
          var value = "";
          node && (value = isCheckable(node) ? node.checked ? "true" : "false" : node.value);
          node = value;
          return node !== lastValue ? (tracker.setValue(node), true) : false;
        }
        function getActiveElement(doc) {
          doc = doc || ("undefined" !== typeof document ? document : void 0);
          if ("undefined" === typeof doc) return null;
          try {
            return doc.activeElement || doc.body;
          } catch (e) {
            return doc.body;
          }
        }
        var escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\n"\\]/g;
        function escapeSelectorAttributeValueInsideDoubleQuotes(value) {
          return value.replace(
            escapeSelectorAttributeValueInsideDoubleQuotesRegex,
            function(ch) {
              return "\\" + ch.charCodeAt(0).toString(16) + " ";
            }
          );
        }
        function updateInput(element, value, defaultValue, lastDefaultValue, checked, defaultChecked, type, name) {
          element.name = "";
          null != type && "function" !== typeof type && "symbol" !== typeof type && "boolean" !== typeof type ? element.type = type : element.removeAttribute("type");
          if (null != value)
            if ("number" === type) {
              if (0 === value && "" === element.value || element.value != value)
                element.value = "" + getToStringValue(value);
            } else
              element.value !== "" + getToStringValue(value) && (element.value = "" + getToStringValue(value));
          else
            "submit" !== type && "reset" !== type || element.removeAttribute("value");
          null != value ? setDefaultValue(element, type, getToStringValue(value)) : null != defaultValue ? setDefaultValue(element, type, getToStringValue(defaultValue)) : null != lastDefaultValue && element.removeAttribute("value");
          null == checked && null != defaultChecked && (element.defaultChecked = !!defaultChecked);
          null != checked && (element.checked = checked && "function" !== typeof checked && "symbol" !== typeof checked);
          null != name && "function" !== typeof name && "symbol" !== typeof name && "boolean" !== typeof name ? element.name = "" + getToStringValue(name) : element.removeAttribute("name");
        }
        function initInput(element, value, defaultValue, checked, defaultChecked, type, name, isHydrating2) {
          null != type && "function" !== typeof type && "symbol" !== typeof type && "boolean" !== typeof type && (element.type = type);
          if (null != value || null != defaultValue) {
            if (!("submit" !== type && "reset" !== type || void 0 !== value && null !== value)) {
              track(element);
              return;
            }
            defaultValue = null != defaultValue ? "" + getToStringValue(defaultValue) : "";
            value = null != value ? "" + getToStringValue(value) : defaultValue;
            isHydrating2 || value === element.value || (element.value = value);
            element.defaultValue = value;
          }
          checked = null != checked ? checked : defaultChecked;
          checked = "function" !== typeof checked && "symbol" !== typeof checked && !!checked;
          element.checked = isHydrating2 ? element.checked : !!checked;
          element.defaultChecked = !!checked;
          null != name && "function" !== typeof name && "symbol" !== typeof name && "boolean" !== typeof name && (element.name = name);
          track(element);
        }
        function setDefaultValue(node, type, value) {
          "number" === type && getActiveElement(node.ownerDocument) === node || node.defaultValue === "" + value || (node.defaultValue = "" + value);
        }
        function updateOptions(node, multiple, propValue, setDefaultSelected) {
          node = node.options;
          if (multiple) {
            multiple = {};
            for (var i = 0; i < propValue.length; i++)
              multiple["$" + propValue[i]] = true;
            for (propValue = 0; propValue < node.length; propValue++)
              i = multiple.hasOwnProperty("$" + node[propValue].value), node[propValue].selected !== i && (node[propValue].selected = i), i && setDefaultSelected && (node[propValue].defaultSelected = true);
          } else {
            propValue = "" + getToStringValue(propValue);
            multiple = null;
            for (i = 0; i < node.length; i++) {
              if (node[i].value === propValue) {
                node[i].selected = true;
                setDefaultSelected && (node[i].defaultSelected = true);
                return;
              }
              null !== multiple || node[i].disabled || (multiple = node[i]);
            }
            null !== multiple && (multiple.selected = true);
          }
        }
        function updateTextarea(element, value, defaultValue) {
          if (null != value && (value = "" + getToStringValue(value), value !== element.value && (element.value = value), null == defaultValue)) {
            element.defaultValue !== value && (element.defaultValue = value);
            return;
          }
          element.defaultValue = null != defaultValue ? "" + getToStringValue(defaultValue) : "";
        }
        function initTextarea(element, value, defaultValue, children) {
          if (null == value) {
            if (null != children) {
              if (null != defaultValue) throw Error(formatProdErrorMessage(92));
              if (isArrayImpl(children)) {
                if (1 < children.length) throw Error(formatProdErrorMessage(93));
                children = children[0];
              }
              defaultValue = children;
            }
            null == defaultValue && (defaultValue = "");
            value = defaultValue;
          }
          defaultValue = getToStringValue(value);
          element.defaultValue = defaultValue;
          children = element.textContent;
          children === defaultValue && "" !== children && null !== children && (element.value = children);
          track(element);
        }
        function setTextContent(node, text) {
          if (text) {
            var firstChild = node.firstChild;
            if (firstChild && firstChild === node.lastChild && 3 === firstChild.nodeType) {
              firstChild.nodeValue = text;
              return;
            }
          }
          node.textContent = text;
        }
        var unitlessNumbers = new Set(
          "animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(
            " "
          )
        );
        function setValueForStyle(style2, styleName, value) {
          var isCustomProperty = 0 === styleName.indexOf("--");
          null == value || "boolean" === typeof value || "" === value ? isCustomProperty ? style2.setProperty(styleName, "") : "float" === styleName ? style2.cssFloat = "" : style2[styleName] = "" : isCustomProperty ? style2.setProperty(styleName, value) : "number" !== typeof value || 0 === value || unitlessNumbers.has(styleName) ? "float" === styleName ? style2.cssFloat = value : style2[styleName] = ("" + value).trim() : style2[styleName] = value + "px";
        }
        function setValueForStyles(node, styles, prevStyles) {
          if (null != styles && "object" !== typeof styles)
            throw Error(formatProdErrorMessage(62));
          node = node.style;
          if (null != prevStyles) {
            for (var styleName in prevStyles)
              !prevStyles.hasOwnProperty(styleName) || null != styles && styles.hasOwnProperty(styleName) || (0 === styleName.indexOf("--") ? node.setProperty(styleName, "") : "float" === styleName ? node.cssFloat = "" : node[styleName] = "");
            for (var styleName$16 in styles)
              styleName = styles[styleName$16], styles.hasOwnProperty(styleName$16) && prevStyles[styleName$16] !== styleName && setValueForStyle(node, styleName$16, styleName);
          } else
            for (var styleName$17 in styles)
              styles.hasOwnProperty(styleName$17) && setValueForStyle(node, styleName$17, styles[styleName$17]);
        }
        function isCustomElement(tagName) {
          if (-1 === tagName.indexOf("-")) return false;
          switch (tagName) {
            case "annotation-xml":
            case "color-profile":
            case "font-face":
            case "font-face-src":
            case "font-face-uri":
            case "font-face-format":
            case "font-face-name":
            case "missing-glyph":
              return false;
            default:
              return true;
          }
        }
        var aliases = new Map([
          ["acceptCharset", "accept-charset"],
          ["htmlFor", "for"],
          ["httpEquiv", "http-equiv"],
          ["crossOrigin", "crossorigin"],
          ["accentHeight", "accent-height"],
          ["alignmentBaseline", "alignment-baseline"],
          ["arabicForm", "arabic-form"],
          ["baselineShift", "baseline-shift"],
          ["capHeight", "cap-height"],
          ["clipPath", "clip-path"],
          ["clipRule", "clip-rule"],
          ["colorInterpolation", "color-interpolation"],
          ["colorInterpolationFilters", "color-interpolation-filters"],
          ["colorProfile", "color-profile"],
          ["colorRendering", "color-rendering"],
          ["dominantBaseline", "dominant-baseline"],
          ["enableBackground", "enable-background"],
          ["fillOpacity", "fill-opacity"],
          ["fillRule", "fill-rule"],
          ["floodColor", "flood-color"],
          ["floodOpacity", "flood-opacity"],
          ["fontFamily", "font-family"],
          ["fontSize", "font-size"],
          ["fontSizeAdjust", "font-size-adjust"],
          ["fontStretch", "font-stretch"],
          ["fontStyle", "font-style"],
          ["fontVariant", "font-variant"],
          ["fontWeight", "font-weight"],
          ["glyphName", "glyph-name"],
          ["glyphOrientationHorizontal", "glyph-orientation-horizontal"],
          ["glyphOrientationVertical", "glyph-orientation-vertical"],
          ["horizAdvX", "horiz-adv-x"],
          ["horizOriginX", "horiz-origin-x"],
          ["imageRendering", "image-rendering"],
          ["letterSpacing", "letter-spacing"],
          ["lightingColor", "lighting-color"],
          ["markerEnd", "marker-end"],
          ["markerMid", "marker-mid"],
          ["markerStart", "marker-start"],
          ["overlinePosition", "overline-position"],
          ["overlineThickness", "overline-thickness"],
          ["paintOrder", "paint-order"],
          ["panose-1", "panose-1"],
          ["pointerEvents", "pointer-events"],
          ["renderingIntent", "rendering-intent"],
          ["shapeRendering", "shape-rendering"],
          ["stopColor", "stop-color"],
          ["stopOpacity", "stop-opacity"],
          ["strikethroughPosition", "strikethrough-position"],
          ["strikethroughThickness", "strikethrough-thickness"],
          ["strokeDasharray", "stroke-dasharray"],
          ["strokeDashoffset", "stroke-dashoffset"],
          ["strokeLinecap", "stroke-linecap"],
          ["strokeLinejoin", "stroke-linejoin"],
          ["strokeMiterlimit", "stroke-miterlimit"],
          ["strokeOpacity", "stroke-opacity"],
          ["strokeWidth", "stroke-width"],
          ["textAnchor", "text-anchor"],
          ["textDecoration", "text-decoration"],
          ["textRendering", "text-rendering"],
          ["transformOrigin", "transform-origin"],
          ["underlinePosition", "underline-position"],
          ["underlineThickness", "underline-thickness"],
          ["unicodeBidi", "unicode-bidi"],
          ["unicodeRange", "unicode-range"],
          ["unitsPerEm", "units-per-em"],
          ["vAlphabetic", "v-alphabetic"],
          ["vHanging", "v-hanging"],
          ["vIdeographic", "v-ideographic"],
          ["vMathematical", "v-mathematical"],
          ["vectorEffect", "vector-effect"],
          ["vertAdvY", "vert-adv-y"],
          ["vertOriginX", "vert-origin-x"],
          ["vertOriginY", "vert-origin-y"],
          ["wordSpacing", "word-spacing"],
          ["writingMode", "writing-mode"],
          ["xmlnsXlink", "xmlns:xlink"],
          ["xHeight", "x-height"]
        ]), isJavaScriptProtocol = /^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;
        function sanitizeURL(url) {
          return isJavaScriptProtocol.test("" + url) ? "javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')" : url;
        }
        function noop$1() {
        }
        var currentReplayingEvent = null;
        function getEventTarget(nativeEvent) {
          nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;
          nativeEvent.correspondingUseElement && (nativeEvent = nativeEvent.correspondingUseElement);
          return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;
        }
        var restoreTarget = null, restoreQueue = null;
        function restoreStateOfTarget(target) {
          var internalInstance = getInstanceFromNode(target);
          if (internalInstance && (target = internalInstance.stateNode)) {
            var props = target[internalPropsKey] || null;
            a: switch (target = internalInstance.stateNode, internalInstance.type) {
              case "input":
                updateInput(
                  target,
                  props.value,
                  props.defaultValue,
                  props.defaultValue,
                  props.checked,
                  props.defaultChecked,
                  props.type,
                  props.name
                );
                internalInstance = props.name;
                if ("radio" === props.type && null != internalInstance) {
                  for (props = target; props.parentNode; ) props = props.parentNode;
                  props = props.querySelectorAll(
                    'input[name="' + escapeSelectorAttributeValueInsideDoubleQuotes(
                      "" + internalInstance
                    ) + '"][type="radio"]'
                  );
                  for (internalInstance = 0; internalInstance < props.length; internalInstance++) {
                    var otherNode = props[internalInstance];
                    if (otherNode !== target && otherNode.form === target.form) {
                      var otherProps = otherNode[internalPropsKey] || null;
                      if (!otherProps) throw Error(formatProdErrorMessage(90));
                      updateInput(
                        otherNode,
                        otherProps.value,
                        otherProps.defaultValue,
                        otherProps.defaultValue,
                        otherProps.checked,
                        otherProps.defaultChecked,
                        otherProps.type,
                        otherProps.name
                      );
                    }
                  }
                  for (internalInstance = 0; internalInstance < props.length; internalInstance++)
                    otherNode = props[internalInstance], otherNode.form === target.form && updateValueIfChanged(otherNode);
                }
                break a;
              case "textarea":
                updateTextarea(target, props.value, props.defaultValue);
                break a;
              case "select":
                internalInstance = props.value, null != internalInstance && updateOptions(target, !!props.multiple, internalInstance, false);
            }
          }
        }
        var isInsideEventHandler = false;
        function batchedUpdates$1(fn, a, b) {
          if (isInsideEventHandler) return fn(a, b);
          isInsideEventHandler = true;
          try {
            var JSCompiler_inline_result = fn(a);
            return JSCompiler_inline_result;
          } finally {
            if (isInsideEventHandler = false, null !== restoreTarget || null !== restoreQueue) {
              if (flushSyncWork$1(), restoreTarget && (a = restoreTarget, fn = restoreQueue, restoreQueue = restoreTarget = null, restoreStateOfTarget(a), fn))
                for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);
            }
          }
        }
        function getListener(inst, registrationName) {
          var stateNode = inst.stateNode;
          if (null === stateNode) return null;
          var props = stateNode[internalPropsKey] || null;
          if (null === props) return null;
          stateNode = props[registrationName];
          a: switch (registrationName) {
            case "onClick":
            case "onClickCapture":
            case "onDoubleClick":
            case "onDoubleClickCapture":
            case "onMouseDown":
            case "onMouseDownCapture":
            case "onMouseMove":
            case "onMouseMoveCapture":
            case "onMouseUp":
            case "onMouseUpCapture":
            case "onMouseEnter":
              (props = !props.disabled) || (inst = inst.type, props = !("button" === inst || "input" === inst || "select" === inst || "textarea" === inst));
              inst = !props;
              break a;
            default:
              inst = false;
          }
          if (inst) return null;
          if (stateNode && "function" !== typeof stateNode)
            throw Error(
              formatProdErrorMessage(231, registrationName, typeof stateNode)
            );
          return stateNode;
        }
        var canUseDOM = !("undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement), passiveBrowserEventsSupported = false;
        if (canUseDOM)
          try {
            var options = {};
            Object.defineProperty(options, "passive", {
              get: function() {
                passiveBrowserEventsSupported = true;
              }
            });
            window.addEventListener("test", options, options);
            window.removeEventListener("test", options, options);
          } catch (e) {
            passiveBrowserEventsSupported = false;
          }
        var root = null, startText = null, fallbackText = null;
        function getData() {
          if (fallbackText) return fallbackText;
          var start, startValue = startText, startLength = startValue.length, end, endValue = "value" in root ? root.value : root.textContent, endLength = endValue.length;
          for (start = 0; start < startLength && startValue[start] === endValue[start]; start++) ;
          var minEnd = startLength - start;
          for (end = 1; end <= minEnd && startValue[startLength - end] === endValue[endLength - end]; end++) ;
          return fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0);
        }
        function getEventCharCode(nativeEvent) {
          var keyCode = nativeEvent.keyCode;
          "charCode" in nativeEvent ? (nativeEvent = nativeEvent.charCode, 0 === nativeEvent && 13 === keyCode && (nativeEvent = 13)) : nativeEvent = keyCode;
          10 === nativeEvent && (nativeEvent = 13);
          return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;
        }
        function functionThatReturnsTrue() {
          return true;
        }
        function functionThatReturnsFalse() {
          return false;
        }
        function createSyntheticEvent(Interface) {
          function SyntheticBaseEvent(reactName, reactEventType, targetInst, nativeEvent, nativeEventTarget) {
            this._reactName = reactName;
            this._targetInst = targetInst;
            this.type = reactEventType;
            this.nativeEvent = nativeEvent;
            this.target = nativeEventTarget;
            this.currentTarget = null;
            for (var propName in Interface)
              Interface.hasOwnProperty(propName) && (reactName = Interface[propName], this[propName] = reactName ? reactName(nativeEvent) : nativeEvent[propName]);
            this.isDefaultPrevented = (null != nativeEvent.defaultPrevented ? nativeEvent.defaultPrevented : false === nativeEvent.returnValue) ? functionThatReturnsTrue : functionThatReturnsFalse;
            this.isPropagationStopped = functionThatReturnsFalse;
            return this;
          }
          assign(SyntheticBaseEvent.prototype, {
            preventDefault: function() {
              this.defaultPrevented = true;
              var event = this.nativeEvent;
              event && (event.preventDefault ? event.preventDefault() : "unknown" !== typeof event.returnValue && (event.returnValue = false), this.isDefaultPrevented = functionThatReturnsTrue);
            },
            stopPropagation: function() {
              var event = this.nativeEvent;
              event && (event.stopPropagation ? event.stopPropagation() : "unknown" !== typeof event.cancelBubble && (event.cancelBubble = true), this.isPropagationStopped = functionThatReturnsTrue);
            },
            persist: function() {
            },
            isPersistent: functionThatReturnsTrue
          });
          return SyntheticBaseEvent;
        }
        var EventInterface = {
          eventPhase: 0,
          bubbles: 0,
          cancelable: 0,
          timeStamp: function(event) {
            return event.timeStamp || Date.now();
          },
          defaultPrevented: 0,
          isTrusted: 0
        }, SyntheticEvent = createSyntheticEvent(EventInterface), UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }), SyntheticUIEvent = createSyntheticEvent(UIEventInterface), lastMovementX, lastMovementY, lastMouseEvent, MouseEventInterface = assign({}, UIEventInterface, {
          screenX: 0,
          screenY: 0,
          clientX: 0,
          clientY: 0,
          pageX: 0,
          pageY: 0,
          ctrlKey: 0,
          shiftKey: 0,
          altKey: 0,
          metaKey: 0,
          getModifierState: getEventModifierState,
          button: 0,
          buttons: 0,
          relatedTarget: function(event) {
            return void 0 === event.relatedTarget ? event.fromElement === event.srcElement ? event.toElement : event.fromElement : event.relatedTarget;
          },
          movementX: function(event) {
            if ("movementX" in event) return event.movementX;
            event !== lastMouseEvent && (lastMouseEvent && "mousemove" === event.type ? (lastMovementX = event.screenX - lastMouseEvent.screenX, lastMovementY = event.screenY - lastMouseEvent.screenY) : lastMovementY = lastMovementX = 0, lastMouseEvent = event);
            return lastMovementX;
          },
          movementY: function(event) {
            return "movementY" in event ? event.movementY : lastMovementY;
          }
        }), SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface), DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }), SyntheticDragEvent = createSyntheticEvent(DragEventInterface), FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }), SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface), AnimationEventInterface = assign({}, EventInterface, {
          animationName: 0,
          elapsedTime: 0,
          pseudoElement: 0
        }), SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface), ClipboardEventInterface = assign({}, EventInterface, {
          clipboardData: function(event) {
            return "clipboardData" in event ? event.clipboardData : window.clipboardData;
          }
        }), SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface), CompositionEventInterface = assign({}, EventInterface, { data: 0 }), SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface), normalizeKey = {
          Esc: "Escape",
          Spacebar: " ",
          Left: "ArrowLeft",
          Up: "ArrowUp",
          Right: "ArrowRight",
          Down: "ArrowDown",
          Del: "Delete",
          Win: "OS",
          Menu: "ContextMenu",
          Apps: "ContextMenu",
          Scroll: "ScrollLock",
          MozPrintableKey: "Unidentified"
        }, translateToKey = {
          8: "Backspace",
          9: "Tab",
          12: "Clear",
          13: "Enter",
          16: "Shift",
          17: "Control",
          18: "Alt",
          19: "Pause",
          20: "CapsLock",
          27: "Escape",
          32: " ",
          33: "PageUp",
          34: "PageDown",
          35: "End",
          36: "Home",
          37: "ArrowLeft",
          38: "ArrowUp",
          39: "ArrowRight",
          40: "ArrowDown",
          45: "Insert",
          46: "Delete",
          112: "F1",
          113: "F2",
          114: "F3",
          115: "F4",
          116: "F5",
          117: "F6",
          118: "F7",
          119: "F8",
          120: "F9",
          121: "F10",
          122: "F11",
          123: "F12",
          144: "NumLock",
          145: "ScrollLock",
          224: "Meta"
        }, modifierKeyToProp = {
          Alt: "altKey",
          Control: "ctrlKey",
          Meta: "metaKey",
          Shift: "shiftKey"
        };
        function modifierStateGetter(keyArg) {
          var nativeEvent = this.nativeEvent;
          return nativeEvent.getModifierState ? nativeEvent.getModifierState(keyArg) : (keyArg = modifierKeyToProp[keyArg]) ? !!nativeEvent[keyArg] : false;
        }
        function getEventModifierState() {
          return modifierStateGetter;
        }
        var KeyboardEventInterface = assign({}, UIEventInterface, {
          key: function(nativeEvent) {
            if (nativeEvent.key) {
              var key = normalizeKey[nativeEvent.key] || nativeEvent.key;
              if ("Unidentified" !== key) return key;
            }
            return "keypress" === nativeEvent.type ? (nativeEvent = getEventCharCode(nativeEvent), 13 === nativeEvent ? "Enter" : String.fromCharCode(nativeEvent)) : "keydown" === nativeEvent.type || "keyup" === nativeEvent.type ? translateToKey[nativeEvent.keyCode] || "Unidentified" : "";
          },
          code: 0,
          location: 0,
          ctrlKey: 0,
          shiftKey: 0,
          altKey: 0,
          metaKey: 0,
          repeat: 0,
          locale: 0,
          getModifierState: getEventModifierState,
          charCode: function(event) {
            return "keypress" === event.type ? getEventCharCode(event) : 0;
          },
          keyCode: function(event) {
            return "keydown" === event.type || "keyup" === event.type ? event.keyCode : 0;
          },
          which: function(event) {
            return "keypress" === event.type ? getEventCharCode(event) : "keydown" === event.type || "keyup" === event.type ? event.keyCode : 0;
          }
        }), SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface), PointerEventInterface = assign({}, MouseEventInterface, {
          pointerId: 0,
          width: 0,
          height: 0,
          pressure: 0,
          tangentialPressure: 0,
          tiltX: 0,
          tiltY: 0,
          twist: 0,
          pointerType: 0,
          isPrimary: 0
        }), SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface), TouchEventInterface = assign({}, UIEventInterface, {
          touches: 0,
          targetTouches: 0,
          changedTouches: 0,
          altKey: 0,
          metaKey: 0,
          ctrlKey: 0,
          shiftKey: 0,
          getModifierState: getEventModifierState
        }), SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface), TransitionEventInterface = assign({}, EventInterface, {
          propertyName: 0,
          elapsedTime: 0,
          pseudoElement: 0
        }), SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface), WheelEventInterface = assign({}, MouseEventInterface, {
          deltaX: function(event) {
            return "deltaX" in event ? event.deltaX : "wheelDeltaX" in event ? -event.wheelDeltaX : 0;
          },
          deltaY: function(event) {
            return "deltaY" in event ? event.deltaY : "wheelDeltaY" in event ? -event.wheelDeltaY : "wheelDelta" in event ? -event.wheelDelta : 0;
          },
          deltaZ: 0,
          deltaMode: 0
        }), SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface), ToggleEventInterface = assign({}, EventInterface, {
          newState: 0,
          oldState: 0
        }), SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface), END_KEYCODES = [9, 13, 27, 32], canUseCompositionEvent = canUseDOM && "CompositionEvent" in window, documentMode = null;
        canUseDOM && "documentMode" in document && (documentMode = document.documentMode);
        var canUseTextInputEvent = canUseDOM && "TextEvent" in window && !documentMode, useFallbackCompositionData = canUseDOM && (!canUseCompositionEvent || documentMode && 8 < documentMode && 11 >= documentMode), SPACEBAR_CHAR = String.fromCharCode(32), hasSpaceKeypress = false;
        function isFallbackCompositionEnd(domEventName, nativeEvent) {
          switch (domEventName) {
            case "keyup":
              return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);
            case "keydown":
              return 229 !== nativeEvent.keyCode;
            case "keypress":
            case "mousedown":
            case "focusout":
              return true;
            default:
              return false;
          }
        }
        function getDataFromCustomEvent(nativeEvent) {
          nativeEvent = nativeEvent.detail;
          return "object" === typeof nativeEvent && "data" in nativeEvent ? nativeEvent.data : null;
        }
        var isComposing = false;
        function getNativeBeforeInputChars(domEventName, nativeEvent) {
          switch (domEventName) {
            case "compositionend":
              return getDataFromCustomEvent(nativeEvent);
            case "keypress":
              if (32 !== nativeEvent.which) return null;
              hasSpaceKeypress = true;
              return SPACEBAR_CHAR;
            case "textInput":
              return domEventName = nativeEvent.data, domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName;
            default:
              return null;
          }
        }
        function getFallbackBeforeInputChars(domEventName, nativeEvent) {
          if (isComposing)
            return "compositionend" === domEventName || !canUseCompositionEvent && isFallbackCompositionEnd(domEventName, nativeEvent) ? (domEventName = getData(), fallbackText = startText = root = null, isComposing = false, domEventName) : null;
          switch (domEventName) {
            case "paste":
              return null;
            case "keypress":
              if (!(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) || nativeEvent.ctrlKey && nativeEvent.altKey) {
                if (nativeEvent.char && 1 < nativeEvent.char.length)
                  return nativeEvent.char;
                if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);
              }
              return null;
            case "compositionend":
              return useFallbackCompositionData && "ko" !== nativeEvent.locale ? null : nativeEvent.data;
            default:
              return null;
          }
        }
        var supportedInputTypes = {
          color: true,
          date: true,
          datetime: true,
          "datetime-local": true,
          email: true,
          month: true,
          number: true,
          password: true,
          range: true,
          search: true,
          tel: true,
          text: true,
          time: true,
          url: true,
          week: true
        };
        function isTextInputElement(elem) {
          var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
          return "input" === nodeName ? !!supportedInputTypes[elem.type] : "textarea" === nodeName ? true : false;
        }
        function createAndAccumulateChangeEvent(dispatchQueue, inst, nativeEvent, target) {
          restoreTarget ? restoreQueue ? restoreQueue.push(target) : restoreQueue = [target] : restoreTarget = target;
          inst = accumulateTwoPhaseListeners(inst, "onChange");
          0 < inst.length && (nativeEvent = new SyntheticEvent(
            "onChange",
            "change",
            null,
            nativeEvent,
            target
          ), dispatchQueue.push({ event: nativeEvent, listeners: inst }));
        }
        var activeElement$1 = null, activeElementInst$1 = null;
        function runEventInBatch(dispatchQueue) {
          processDispatchQueue(dispatchQueue, 0);
        }
        function getInstIfValueChanged(targetInst) {
          var targetNode = getNodeFromInstance(targetInst);
          if (updateValueIfChanged(targetNode)) return targetInst;
        }
        function getTargetInstForChangeEvent(domEventName, targetInst) {
          if ("change" === domEventName) return targetInst;
        }
        var isInputEventSupported = false;
        if (canUseDOM) {
          var JSCompiler_inline_result$jscomp$286;
          if (canUseDOM) {
            var isSupported$jscomp$inline_427 = "oninput" in document;
            if (!isSupported$jscomp$inline_427) {
              var element$jscomp$inline_428 = document.createElement("div");
              element$jscomp$inline_428.setAttribute("oninput", "return;");
              isSupported$jscomp$inline_427 = "function" === typeof element$jscomp$inline_428.oninput;
            }
            JSCompiler_inline_result$jscomp$286 = isSupported$jscomp$inline_427;
          } else JSCompiler_inline_result$jscomp$286 = false;
          isInputEventSupported = JSCompiler_inline_result$jscomp$286 && (!document.documentMode || 9 < document.documentMode);
        }
        function stopWatchingForValueChange() {
          activeElement$1 && (activeElement$1.detachEvent("onpropertychange", handlePropertyChange), activeElementInst$1 = activeElement$1 = null);
        }
        function handlePropertyChange(nativeEvent) {
          if ("value" === nativeEvent.propertyName && getInstIfValueChanged(activeElementInst$1)) {
            var dispatchQueue = [];
            createAndAccumulateChangeEvent(
              dispatchQueue,
              activeElementInst$1,
              nativeEvent,
              getEventTarget(nativeEvent)
            );
            batchedUpdates$1(runEventInBatch, dispatchQueue);
          }
        }
        function handleEventsForInputEventPolyfill(domEventName, target, targetInst) {
          "focusin" === domEventName ? (stopWatchingForValueChange(), activeElement$1 = target, activeElementInst$1 = targetInst, activeElement$1.attachEvent("onpropertychange", handlePropertyChange)) : "focusout" === domEventName && stopWatchingForValueChange();
        }
        function getTargetInstForInputEventPolyfill(domEventName) {
          if ("selectionchange" === domEventName || "keyup" === domEventName || "keydown" === domEventName)
            return getInstIfValueChanged(activeElementInst$1);
        }
        function getTargetInstForClickEvent(domEventName, targetInst) {
          if ("click" === domEventName) return getInstIfValueChanged(targetInst);
        }
        function getTargetInstForInputOrChangeEvent(domEventName, targetInst) {
          if ("input" === domEventName || "change" === domEventName)
            return getInstIfValueChanged(targetInst);
        }
        function is(x, y) {
          return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y;
        }
        var objectIs = "function" === typeof Object.is ? Object.is : is;
        function shallowEqual(objA, objB) {
          if (objectIs(objA, objB)) return true;
          if ("object" !== typeof objA || null === objA || "object" !== typeof objB || null === objB)
            return false;
          var keysA = Object.keys(objA), keysB = Object.keys(objB);
          if (keysA.length !== keysB.length) return false;
          for (keysB = 0; keysB < keysA.length; keysB++) {
            var currentKey = keysA[keysB];
            if (!hasOwnProperty.call(objB, currentKey) || !objectIs(objA[currentKey], objB[currentKey]))
              return false;
          }
          return true;
        }
        function getLeafNode(node) {
          for (; node && node.firstChild; ) node = node.firstChild;
          return node;
        }
        function getNodeForCharacterOffset(root2, offset) {
          var node = getLeafNode(root2);
          root2 = 0;
          for (var nodeEnd; node; ) {
            if (3 === node.nodeType) {
              nodeEnd = root2 + node.textContent.length;
              if (root2 <= offset && nodeEnd >= offset)
                return { node, offset: offset - root2 };
              root2 = nodeEnd;
            }
            a: {
              for (; node; ) {
                if (node.nextSibling) {
                  node = node.nextSibling;
                  break a;
                }
                node = node.parentNode;
              }
              node = void 0;
            }
            node = getLeafNode(node);
          }
        }
        function containsNode(outerNode, innerNode) {
          return outerNode && innerNode ? outerNode === innerNode ? true : outerNode && 3 === outerNode.nodeType ? false : innerNode && 3 === innerNode.nodeType ? containsNode(outerNode, innerNode.parentNode) : "contains" in outerNode ? outerNode.contains(innerNode) : outerNode.compareDocumentPosition ? !!(outerNode.compareDocumentPosition(innerNode) & 16) : false : false;
        }
        function getActiveElementDeep(containerInfo) {
          containerInfo = null != containerInfo && null != containerInfo.ownerDocument && null != containerInfo.ownerDocument.defaultView ? containerInfo.ownerDocument.defaultView : window;
          for (var element = getActiveElement(containerInfo.document); element instanceof containerInfo.HTMLIFrameElement; ) {
            try {
              var JSCompiler_inline_result = "string" === typeof element.contentWindow.location.href;
            } catch (err) {
              JSCompiler_inline_result = false;
            }
            if (JSCompiler_inline_result) containerInfo = element.contentWindow;
            else break;
            element = getActiveElement(containerInfo.document);
          }
          return element;
        }
        function hasSelectionCapabilities(elem) {
          var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
          return nodeName && ("input" === nodeName && ("text" === elem.type || "search" === elem.type || "tel" === elem.type || "url" === elem.type || "password" === elem.type) || "textarea" === nodeName || "true" === elem.contentEditable);
        }
        var skipSelectionChangeEvent = canUseDOM && "documentMode" in document && 11 >= document.documentMode, activeElement = null, activeElementInst = null, lastSelection = null, mouseDown = false;
        function constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {
          var doc = nativeEventTarget.window === nativeEventTarget ? nativeEventTarget.document : 9 === nativeEventTarget.nodeType ? nativeEventTarget : nativeEventTarget.ownerDocument;
          mouseDown || null == activeElement || activeElement !== getActiveElement(doc) || (doc = activeElement, "selectionStart" in doc && hasSelectionCapabilities(doc) ? doc = { start: doc.selectionStart, end: doc.selectionEnd } : (doc = (doc.ownerDocument && doc.ownerDocument.defaultView || window).getSelection(), doc = {
            anchorNode: doc.anchorNode,
            anchorOffset: doc.anchorOffset,
            focusNode: doc.focusNode,
            focusOffset: doc.focusOffset
          }), lastSelection && shallowEqual(lastSelection, doc) || (lastSelection = doc, doc = accumulateTwoPhaseListeners(activeElementInst, "onSelect"), 0 < doc.length && (nativeEvent = new SyntheticEvent(
            "onSelect",
            "select",
            null,
            nativeEvent,
            nativeEventTarget
          ), dispatchQueue.push({ event: nativeEvent, listeners: doc }), nativeEvent.target = activeElement)));
        }
        function makePrefixMap(styleProp, eventName) {
          var prefixes = {};
          prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();
          prefixes["Webkit" + styleProp] = "webkit" + eventName;
          prefixes["Moz" + styleProp] = "moz" + eventName;
          return prefixes;
        }
        var vendorPrefixes = {
          animationend: makePrefixMap("Animation", "AnimationEnd"),
          animationiteration: makePrefixMap("Animation", "AnimationIteration"),
          animationstart: makePrefixMap("Animation", "AnimationStart"),
          transitionrun: makePrefixMap("Transition", "TransitionRun"),
          transitionstart: makePrefixMap("Transition", "TransitionStart"),
          transitioncancel: makePrefixMap("Transition", "TransitionCancel"),
          transitionend: makePrefixMap("Transition", "TransitionEnd")
        }, prefixedEventNames = {}, style = {};
        canUseDOM && (style = document.createElement("div").style, "AnimationEvent" in window || (delete vendorPrefixes.animationend.animation, delete vendorPrefixes.animationiteration.animation, delete vendorPrefixes.animationstart.animation), "TransitionEvent" in window || delete vendorPrefixes.transitionend.transition);
        function getVendorPrefixedEventName(eventName) {
          if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];
          if (!vendorPrefixes[eventName]) return eventName;
          var prefixMap = vendorPrefixes[eventName], styleProp;
          for (styleProp in prefixMap)
            if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)
              return prefixedEventNames[eventName] = prefixMap[styleProp];
          return eventName;
        }
        var ANIMATION_END = getVendorPrefixedEventName("animationend"), ANIMATION_ITERATION = getVendorPrefixedEventName("animationiteration"), ANIMATION_START = getVendorPrefixedEventName("animationstart"), TRANSITION_RUN = getVendorPrefixedEventName("transitionrun"), TRANSITION_START = getVendorPrefixedEventName("transitionstart"), TRANSITION_CANCEL = getVendorPrefixedEventName("transitioncancel"), TRANSITION_END = getVendorPrefixedEventName("transitionend"), topLevelEventsToReactNames = new Map(), simpleEventPluginEvents = "abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(
          " "
        );
        simpleEventPluginEvents.push("scrollEnd");
        function registerSimpleEvent(domEventName, reactName) {
          topLevelEventsToReactNames.set(domEventName, reactName);
          registerTwoPhaseEvent(reactName, [domEventName]);
        }
        var reportGlobalError = "function" === typeof reportError ? reportError : function(error) {
          if ("object" === typeof window && "function" === typeof window.ErrorEvent) {
            var event = new window.ErrorEvent("error", {
              bubbles: true,
              cancelable: true,
              message: "object" === typeof error && null !== error && "string" === typeof error.message ? String(error.message) : String(error),
              error
            });
            if (!window.dispatchEvent(event)) return;
          } else if ("object" === typeof process && "function" === typeof process.emit) {
            process.emit("uncaughtException", error);
            return;
          }
          console.error(error);
        }, concurrentQueues = [], concurrentQueuesIndex = 0, concurrentlyUpdatedLanes = 0;
        function finishQueueingConcurrentUpdates() {
          for (var endIndex = concurrentQueuesIndex, i = concurrentlyUpdatedLanes = concurrentQueuesIndex = 0; i < endIndex; ) {
            var fiber = concurrentQueues[i];
            concurrentQueues[i++] = null;
            var queue = concurrentQueues[i];
            concurrentQueues[i++] = null;
            var update = concurrentQueues[i];
            concurrentQueues[i++] = null;
            var lane = concurrentQueues[i];
            concurrentQueues[i++] = null;
            if (null !== queue && null !== update) {
              var pending = queue.pending;
              null === pending ? update.next = update : (update.next = pending.next, pending.next = update);
              queue.pending = update;
            }
            0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);
          }
        }
        function enqueueUpdate$1(fiber, queue, update, lane) {
          concurrentQueues[concurrentQueuesIndex++] = fiber;
          concurrentQueues[concurrentQueuesIndex++] = queue;
          concurrentQueues[concurrentQueuesIndex++] = update;
          concurrentQueues[concurrentQueuesIndex++] = lane;
          concurrentlyUpdatedLanes |= lane;
          fiber.lanes |= lane;
          fiber = fiber.alternate;
          null !== fiber && (fiber.lanes |= lane);
        }
        function enqueueConcurrentHookUpdate(fiber, queue, update, lane) {
          enqueueUpdate$1(fiber, queue, update, lane);
          return getRootForUpdatedFiber(fiber);
        }
        function enqueueConcurrentRenderForLane(fiber, lane) {
          enqueueUpdate$1(fiber, null, null, lane);
          return getRootForUpdatedFiber(fiber);
        }
        function markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {
          sourceFiber.lanes |= lane;
          var alternate = sourceFiber.alternate;
          null !== alternate && (alternate.lanes |= lane);
          for (var isHidden = false, parent = sourceFiber.return; null !== parent; )
            parent.childLanes |= lane, alternate = parent.alternate, null !== alternate && (alternate.childLanes |= lane), 22 === parent.tag && (sourceFiber = parent.stateNode, null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = true)), sourceFiber = parent, parent = parent.return;
          return 3 === sourceFiber.tag ? (parent = sourceFiber.stateNode, isHidden && null !== update && (isHidden = 31 - clz32(lane), sourceFiber = parent.hiddenUpdates, alternate = sourceFiber[isHidden], null === alternate ? sourceFiber[isHidden] = [update] : alternate.push(update), update.lane = lane | 536870912), parent) : null;
        }
        function getRootForUpdatedFiber(sourceFiber) {
          if (50 < nestedUpdateCount)
            throw nestedUpdateCount = 0, rootWithNestedUpdates = null, Error(formatProdErrorMessage(185));
          for (var parent = sourceFiber.return; null !== parent; )
            sourceFiber = parent, parent = sourceFiber.return;
          return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;
        }
        var emptyContextObject = {};
        function FiberNode(tag, pendingProps, key, mode) {
          this.tag = tag;
          this.key = key;
          this.sibling = this.child = this.return = this.stateNode = this.type = this.elementType = null;
          this.index = 0;
          this.refCleanup = this.ref = null;
          this.pendingProps = pendingProps;
          this.dependencies = this.memoizedState = this.updateQueue = this.memoizedProps = null;
          this.mode = mode;
          this.subtreeFlags = this.flags = 0;
          this.deletions = null;
          this.childLanes = this.lanes = 0;
          this.alternate = null;
        }
        function createFiberImplClass(tag, pendingProps, key, mode) {
          return new FiberNode(tag, pendingProps, key, mode);
        }
        function shouldConstruct(Component) {
          Component = Component.prototype;
          return !(!Component || !Component.isReactComponent);
        }
        function createWorkInProgress(current, pendingProps) {
          var workInProgress2 = current.alternate;
          null === workInProgress2 ? (workInProgress2 = createFiberImplClass(
            current.tag,
            pendingProps,
            current.key,
            current.mode
          ), workInProgress2.elementType = current.elementType, workInProgress2.type = current.type, workInProgress2.stateNode = current.stateNode, workInProgress2.alternate = current, current.alternate = workInProgress2) : (workInProgress2.pendingProps = pendingProps, workInProgress2.type = current.type, workInProgress2.flags = 0, workInProgress2.subtreeFlags = 0, workInProgress2.deletions = null);
          workInProgress2.flags = current.flags & 65011712;
          workInProgress2.childLanes = current.childLanes;
          workInProgress2.lanes = current.lanes;
          workInProgress2.child = current.child;
          workInProgress2.memoizedProps = current.memoizedProps;
          workInProgress2.memoizedState = current.memoizedState;
          workInProgress2.updateQueue = current.updateQueue;
          pendingProps = current.dependencies;
          workInProgress2.dependencies = null === pendingProps ? null : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };
          workInProgress2.sibling = current.sibling;
          workInProgress2.index = current.index;
          workInProgress2.ref = current.ref;
          workInProgress2.refCleanup = current.refCleanup;
          return workInProgress2;
        }
        function resetWorkInProgress(workInProgress2, renderLanes2) {
          workInProgress2.flags &= 65011714;
          var current = workInProgress2.alternate;
          null === current ? (workInProgress2.childLanes = 0, workInProgress2.lanes = renderLanes2, workInProgress2.child = null, workInProgress2.subtreeFlags = 0, workInProgress2.memoizedProps = null, workInProgress2.memoizedState = null, workInProgress2.updateQueue = null, workInProgress2.dependencies = null, workInProgress2.stateNode = null) : (workInProgress2.childLanes = current.childLanes, workInProgress2.lanes = current.lanes, workInProgress2.child = current.child, workInProgress2.subtreeFlags = 0, workInProgress2.deletions = null, workInProgress2.memoizedProps = current.memoizedProps, workInProgress2.memoizedState = current.memoizedState, workInProgress2.updateQueue = current.updateQueue, workInProgress2.type = current.type, renderLanes2 = current.dependencies, workInProgress2.dependencies = null === renderLanes2 ? null : {
            lanes: renderLanes2.lanes,
            firstContext: renderLanes2.firstContext
          });
          return workInProgress2;
        }
        function createFiberFromTypeAndProps(type, key, pendingProps, owner, mode, lanes) {
          var fiberTag = 0;
          owner = type;
          if ("function" === typeof type) shouldConstruct(type) && (fiberTag = 1);
          else if ("string" === typeof type)
            fiberTag = isHostHoistableType(
              type,
              pendingProps,
              contextStackCursor.current
            ) ? 26 : "html" === type || "head" === type || "body" === type ? 27 : 5;
          else
            a: switch (type) {
              case REACT_ACTIVITY_TYPE:
                return type = createFiberImplClass(31, pendingProps, key, mode), type.elementType = REACT_ACTIVITY_TYPE, type.lanes = lanes, type;
              case REACT_FRAGMENT_TYPE:
                return createFiberFromFragment(pendingProps.children, mode, lanes, key);
              case REACT_STRICT_MODE_TYPE:
                fiberTag = 8;
                mode |= 24;
                break;
              case REACT_PROFILER_TYPE:
                return type = createFiberImplClass(12, pendingProps, key, mode | 2), type.elementType = REACT_PROFILER_TYPE, type.lanes = lanes, type;
              case REACT_SUSPENSE_TYPE:
                return type = createFiberImplClass(13, pendingProps, key, mode), type.elementType = REACT_SUSPENSE_TYPE, type.lanes = lanes, type;
              case REACT_SUSPENSE_LIST_TYPE:
                return type = createFiberImplClass(19, pendingProps, key, mode), type.elementType = REACT_SUSPENSE_LIST_TYPE, type.lanes = lanes, type;
              default:
                if ("object" === typeof type && null !== type)
                  switch (type.$$typeof) {
                    case REACT_CONTEXT_TYPE:
                      fiberTag = 10;
                      break a;
                    case REACT_CONSUMER_TYPE:
                      fiberTag = 9;
                      break a;
                    case REACT_FORWARD_REF_TYPE:
                      fiberTag = 11;
                      break a;
                    case REACT_MEMO_TYPE:
                      fiberTag = 14;
                      break a;
                    case REACT_LAZY_TYPE:
                      fiberTag = 16;
                      owner = null;
                      break a;
                  }
                fiberTag = 29;
                pendingProps = Error(
                  formatProdErrorMessage(130, null === type ? "null" : typeof type, "")
                );
                owner = null;
            }
          key = createFiberImplClass(fiberTag, pendingProps, key, mode);
          key.elementType = type;
          key.type = owner;
          key.lanes = lanes;
          return key;
        }
        function createFiberFromFragment(elements, mode, lanes, key) {
          elements = createFiberImplClass(7, elements, key, mode);
          elements.lanes = lanes;
          return elements;
        }
        function createFiberFromText(content, mode, lanes) {
          content = createFiberImplClass(6, content, null, mode);
          content.lanes = lanes;
          return content;
        }
        function createFiberFromDehydratedFragment(dehydratedNode) {
          var fiber = createFiberImplClass(18, null, null, 0);
          fiber.stateNode = dehydratedNode;
          return fiber;
        }
        function createFiberFromPortal(portal, mode, lanes) {
          mode = createFiberImplClass(
            4,
            null !== portal.children ? portal.children : [],
            portal.key,
            mode
          );
          mode.lanes = lanes;
          mode.stateNode = {
            containerInfo: portal.containerInfo,
            pendingChildren: null,
            implementation: portal.implementation
          };
          return mode;
        }
        var CapturedStacks = new WeakMap();
        function createCapturedValueAtFiber(value, source) {
          if ("object" === typeof value && null !== value) {
            var existing = CapturedStacks.get(value);
            if (void 0 !== existing) return existing;
            source = {
              value,
              source,
              stack: getStackByFiberInDevAndProd(source)
            };
            CapturedStacks.set(value, source);
            return source;
          }
          return {
            value,
            source,
            stack: getStackByFiberInDevAndProd(source)
          };
        }
        var forkStack = [], forkStackIndex = 0, treeForkProvider = null, treeForkCount = 0, idStack = [], idStackIndex = 0, treeContextProvider = null, treeContextId = 1, treeContextOverflow = "";
        function pushTreeFork(workInProgress2, totalChildren) {
          forkStack[forkStackIndex++] = treeForkCount;
          forkStack[forkStackIndex++] = treeForkProvider;
          treeForkProvider = workInProgress2;
          treeForkCount = totalChildren;
        }
        function pushTreeId(workInProgress2, totalChildren, index2) {
          idStack[idStackIndex++] = treeContextId;
          idStack[idStackIndex++] = treeContextOverflow;
          idStack[idStackIndex++] = treeContextProvider;
          treeContextProvider = workInProgress2;
          var baseIdWithLeadingBit = treeContextId;
          workInProgress2 = treeContextOverflow;
          var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;
          baseIdWithLeadingBit &= ~(1 << baseLength);
          index2 += 1;
          var length = 32 - clz32(totalChildren) + baseLength;
          if (30 < length) {
            var numberOfOverflowBits = baseLength - baseLength % 5;
            length = (baseIdWithLeadingBit & (1 << numberOfOverflowBits) - 1).toString(32);
            baseIdWithLeadingBit >>= numberOfOverflowBits;
            baseLength -= numberOfOverflowBits;
            treeContextId = 1 << 32 - clz32(totalChildren) + baseLength | index2 << baseLength | baseIdWithLeadingBit;
            treeContextOverflow = length + workInProgress2;
          } else
            treeContextId = 1 << length | index2 << baseLength | baseIdWithLeadingBit, treeContextOverflow = workInProgress2;
        }
        function pushMaterializedTreeId(workInProgress2) {
          null !== workInProgress2.return && (pushTreeFork(workInProgress2, 1), pushTreeId(workInProgress2, 1, 0));
        }
        function popTreeContext(workInProgress2) {
          for (; workInProgress2 === treeForkProvider; )
            treeForkProvider = forkStack[--forkStackIndex], forkStack[forkStackIndex] = null, treeForkCount = forkStack[--forkStackIndex], forkStack[forkStackIndex] = null;
          for (; workInProgress2 === treeContextProvider; )
            treeContextProvider = idStack[--idStackIndex], idStack[idStackIndex] = null, treeContextOverflow = idStack[--idStackIndex], idStack[idStackIndex] = null, treeContextId = idStack[--idStackIndex], idStack[idStackIndex] = null;
        }
        function restoreSuspendedTreeContext(workInProgress2, suspendedContext) {
          idStack[idStackIndex++] = treeContextId;
          idStack[idStackIndex++] = treeContextOverflow;
          idStack[idStackIndex++] = treeContextProvider;
          treeContextId = suspendedContext.id;
          treeContextOverflow = suspendedContext.overflow;
          treeContextProvider = workInProgress2;
        }
        var hydrationParentFiber = null, nextHydratableInstance = null, isHydrating = false, hydrationErrors = null, rootOrSingletonContext = false, HydrationMismatchException = Error(formatProdErrorMessage(519));
        function throwOnHydrationMismatch(fiber) {
          var error = Error(
            formatProdErrorMessage(
              418,
              1 < arguments.length && void 0 !== arguments[1] && arguments[1] ? "text" : "HTML",
              ""
            )
          );
          queueHydrationError(createCapturedValueAtFiber(error, fiber));
          throw HydrationMismatchException;
        }
        function prepareToHydrateHostInstance(fiber) {
          var instance = fiber.stateNode, type = fiber.type, props = fiber.memoizedProps;
          instance[internalInstanceKey] = fiber;
          instance[internalPropsKey] = props;
          switch (type) {
            case "dialog":
              listenToNonDelegatedEvent("cancel", instance);
              listenToNonDelegatedEvent("close", instance);
              break;
            case "iframe":
            case "object":
            case "embed":
              listenToNonDelegatedEvent("load", instance);
              break;
            case "video":
            case "audio":
              for (type = 0; type < mediaEventTypes.length; type++)
                listenToNonDelegatedEvent(mediaEventTypes[type], instance);
              break;
            case "source":
              listenToNonDelegatedEvent("error", instance);
              break;
            case "img":
            case "image":
            case "link":
              listenToNonDelegatedEvent("error", instance);
              listenToNonDelegatedEvent("load", instance);
              break;
            case "details":
              listenToNonDelegatedEvent("toggle", instance);
              break;
            case "input":
              listenToNonDelegatedEvent("invalid", instance);
              initInput(
                instance,
                props.value,
                props.defaultValue,
                props.checked,
                props.defaultChecked,
                props.type,
                props.name,
                true
              );
              break;
            case "select":
              listenToNonDelegatedEvent("invalid", instance);
              break;
            case "textarea":
              listenToNonDelegatedEvent("invalid", instance), initTextarea(instance, props.value, props.defaultValue, props.children);
          }
          type = props.children;
          "string" !== typeof type && "number" !== typeof type && "bigint" !== typeof type || instance.textContent === "" + type || true === props.suppressHydrationWarning || checkForUnmatchedText(instance.textContent, type) ? (null != props.popover && (listenToNonDelegatedEvent("beforetoggle", instance), listenToNonDelegatedEvent("toggle", instance)), null != props.onScroll && listenToNonDelegatedEvent("scroll", instance), null != props.onScrollEnd && listenToNonDelegatedEvent("scrollend", instance), null != props.onClick && (instance.onclick = noop$1), instance = true) : instance = false;
          instance || throwOnHydrationMismatch(fiber, true);
        }
        function popToNextHostParent(fiber) {
          for (hydrationParentFiber = fiber.return; hydrationParentFiber; )
            switch (hydrationParentFiber.tag) {
              case 5:
              case 31:
              case 13:
                rootOrSingletonContext = false;
                return;
              case 27:
              case 3:
                rootOrSingletonContext = true;
                return;
              default:
                hydrationParentFiber = hydrationParentFiber.return;
            }
        }
        function popHydrationState(fiber) {
          if (fiber !== hydrationParentFiber) return false;
          if (!isHydrating) return popToNextHostParent(fiber), isHydrating = true, false;
          var tag = fiber.tag, JSCompiler_temp;
          if (JSCompiler_temp = 3 !== tag && 27 !== tag) {
            if (JSCompiler_temp = 5 === tag)
              JSCompiler_temp = fiber.type, JSCompiler_temp = !("form" !== JSCompiler_temp && "button" !== JSCompiler_temp) || shouldSetTextContent(fiber.type, fiber.memoizedProps);
            JSCompiler_temp = !JSCompiler_temp;
          }
          JSCompiler_temp && nextHydratableInstance && throwOnHydrationMismatch(fiber);
          popToNextHostParent(fiber);
          if (13 === tag) {
            fiber = fiber.memoizedState;
            fiber = null !== fiber ? fiber.dehydrated : null;
            if (!fiber) throw Error(formatProdErrorMessage(317));
            nextHydratableInstance = getNextHydratableInstanceAfterHydrationBoundary(fiber);
          } else if (31 === tag) {
            fiber = fiber.memoizedState;
            fiber = null !== fiber ? fiber.dehydrated : null;
            if (!fiber) throw Error(formatProdErrorMessage(317));
            nextHydratableInstance = getNextHydratableInstanceAfterHydrationBoundary(fiber);
          } else
            27 === tag ? (tag = nextHydratableInstance, isSingletonScope(fiber.type) ? (fiber = previousHydratableOnEnteringScopedSingleton, previousHydratableOnEnteringScopedSingleton = null, nextHydratableInstance = fiber) : nextHydratableInstance = tag) : nextHydratableInstance = hydrationParentFiber ? getNextHydratable(fiber.stateNode.nextSibling) : null;
          return true;
        }
        function resetHydrationState() {
          nextHydratableInstance = hydrationParentFiber = null;
          isHydrating = false;
        }
        function upgradeHydrationErrorsToRecoverable() {
          var queuedErrors = hydrationErrors;
          null !== queuedErrors && (null === workInProgressRootRecoverableErrors ? workInProgressRootRecoverableErrors = queuedErrors : workInProgressRootRecoverableErrors.push.apply(
            workInProgressRootRecoverableErrors,
            queuedErrors
          ), hydrationErrors = null);
          return queuedErrors;
        }
        function queueHydrationError(error) {
          null === hydrationErrors ? hydrationErrors = [error] : hydrationErrors.push(error);
        }
        var valueCursor = createCursor(null), currentlyRenderingFiber$1 = null, lastContextDependency = null;
        function pushProvider(providerFiber, context, nextValue) {
          push(valueCursor, context._currentValue);
          context._currentValue = nextValue;
        }
        function popProvider(context) {
          context._currentValue = valueCursor.current;
          pop(valueCursor);
        }
        function scheduleContextWorkOnParentPath(parent, renderLanes2, propagationRoot) {
          for (; null !== parent; ) {
            var alternate = parent.alternate;
            (parent.childLanes & renderLanes2) !== renderLanes2 ? (parent.childLanes |= renderLanes2, null !== alternate && (alternate.childLanes |= renderLanes2)) : null !== alternate && (alternate.childLanes & renderLanes2) !== renderLanes2 && (alternate.childLanes |= renderLanes2);
            if (parent === propagationRoot) break;
            parent = parent.return;
          }
        }
        function propagateContextChanges(workInProgress2, contexts, renderLanes2, forcePropagateEntireTree) {
          var fiber = workInProgress2.child;
          null !== fiber && (fiber.return = workInProgress2);
          for (; null !== fiber; ) {
            var list = fiber.dependencies;
            if (null !== list) {
              var nextFiber = fiber.child;
              list = list.firstContext;
              a: for (; null !== list; ) {
                var dependency = list;
                list = fiber;
                for (var i = 0; i < contexts.length; i++)
                  if (dependency.context === contexts[i]) {
                    list.lanes |= renderLanes2;
                    dependency = list.alternate;
                    null !== dependency && (dependency.lanes |= renderLanes2);
                    scheduleContextWorkOnParentPath(
                      list.return,
                      renderLanes2,
                      workInProgress2
                    );
                    forcePropagateEntireTree || (nextFiber = null);
                    break a;
                  }
                list = dependency.next;
              }
            } else if (18 === fiber.tag) {
              nextFiber = fiber.return;
              if (null === nextFiber) throw Error(formatProdErrorMessage(341));
              nextFiber.lanes |= renderLanes2;
              list = nextFiber.alternate;
              null !== list && (list.lanes |= renderLanes2);
              scheduleContextWorkOnParentPath(nextFiber, renderLanes2, workInProgress2);
              nextFiber = null;
            } else nextFiber = fiber.child;
            if (null !== nextFiber) nextFiber.return = fiber;
            else
              for (nextFiber = fiber; null !== nextFiber; ) {
                if (nextFiber === workInProgress2) {
                  nextFiber = null;
                  break;
                }
                fiber = nextFiber.sibling;
                if (null !== fiber) {
                  fiber.return = nextFiber.return;
                  nextFiber = fiber;
                  break;
                }
                nextFiber = nextFiber.return;
              }
            fiber = nextFiber;
          }
        }
        function propagateParentContextChanges(current, workInProgress2, renderLanes2, forcePropagateEntireTree) {
          current = null;
          for (var parent = workInProgress2, isInsidePropagationBailout = false; null !== parent; ) {
            if (!isInsidePropagationBailout) {
              if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = true;
              else if (0 !== (parent.flags & 262144)) break;
            }
            if (10 === parent.tag) {
              var currentParent = parent.alternate;
              if (null === currentParent) throw Error(formatProdErrorMessage(387));
              currentParent = currentParent.memoizedProps;
              if (null !== currentParent) {
                var context = parent.type;
                objectIs(parent.pendingProps.value, currentParent.value) || (null !== current ? current.push(context) : current = [context]);
              }
            } else if (parent === hostTransitionProviderCursor.current) {
              currentParent = parent.alternate;
              if (null === currentParent) throw Error(formatProdErrorMessage(387));
              currentParent.memoizedState.memoizedState !== parent.memoizedState.memoizedState && (null !== current ? current.push(HostTransitionContext) : current = [HostTransitionContext]);
            }
            parent = parent.return;
          }
          null !== current && propagateContextChanges(
            workInProgress2,
            current,
            renderLanes2,
            forcePropagateEntireTree
          );
          workInProgress2.flags |= 262144;
        }
        function checkIfContextChanged(currentDependencies) {
          for (currentDependencies = currentDependencies.firstContext; null !== currentDependencies; ) {
            if (!objectIs(
              currentDependencies.context._currentValue,
              currentDependencies.memoizedValue
            ))
              return true;
            currentDependencies = currentDependencies.next;
          }
          return false;
        }
        function prepareToReadContext(workInProgress2) {
          currentlyRenderingFiber$1 = workInProgress2;
          lastContextDependency = null;
          workInProgress2 = workInProgress2.dependencies;
          null !== workInProgress2 && (workInProgress2.firstContext = null);
        }
        function readContext(context) {
          return readContextForConsumer(currentlyRenderingFiber$1, context);
        }
        function readContextDuringReconciliation(consumer, context) {
          null === currentlyRenderingFiber$1 && prepareToReadContext(consumer);
          return readContextForConsumer(consumer, context);
        }
        function readContextForConsumer(consumer, context) {
          var value = context._currentValue;
          context = { context, memoizedValue: value, next: null };
          if (null === lastContextDependency) {
            if (null === consumer) throw Error(formatProdErrorMessage(308));
            lastContextDependency = context;
            consumer.dependencies = { lanes: 0, firstContext: context };
            consumer.flags |= 524288;
          } else lastContextDependency = lastContextDependency.next = context;
          return value;
        }
        var AbortControllerLocal = "undefined" !== typeof AbortController ? AbortController : function() {
          var listeners = [], signal = this.signal = {
            aborted: false,
            addEventListener: function(type, listener) {
              listeners.push(listener);
            }
          };
          this.abort = function() {
            signal.aborted = true;
            listeners.forEach(function(listener) {
              return listener();
            });
          };
        }, scheduleCallback$2 = Scheduler.unstable_scheduleCallback, NormalPriority = Scheduler.unstable_NormalPriority, CacheContext = {
          $$typeof: REACT_CONTEXT_TYPE,
          Consumer: null,
          Provider: null,
          _currentValue: null,
          _currentValue2: null,
          _threadCount: 0
        };
        function createCache() {
          return {
            controller: new AbortControllerLocal(),
            data: new Map(),
            refCount: 0
          };
        }
        function releaseCache(cache) {
          cache.refCount--;
          0 === cache.refCount && scheduleCallback$2(NormalPriority, function() {
            cache.controller.abort();
          });
        }
        var currentEntangledListeners = null, currentEntangledPendingCount = 0, currentEntangledLane = 0, currentEntangledActionThenable = null;
        function entangleAsyncAction(transition, thenable) {
          if (null === currentEntangledListeners) {
            var entangledListeners = currentEntangledListeners = [];
            currentEntangledPendingCount = 0;
            currentEntangledLane = requestTransitionLane();
            currentEntangledActionThenable = {
              status: "pending",
              value: void 0,
              then: function(resolve) {
                entangledListeners.push(resolve);
              }
            };
          }
          currentEntangledPendingCount++;
          thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);
          return thenable;
        }
        function pingEngtangledActionScope() {
          if (0 === --currentEntangledPendingCount && null !== currentEntangledListeners) {
            null !== currentEntangledActionThenable && (currentEntangledActionThenable.status = "fulfilled");
            var listeners = currentEntangledListeners;
            currentEntangledListeners = null;
            currentEntangledLane = 0;
            currentEntangledActionThenable = null;
            for (var i = 0; i < listeners.length; i++) (0, listeners[i])();
          }
        }
        function chainThenableValue(thenable, result) {
          var listeners = [], thenableWithOverride = {
            status: "pending",
            value: null,
            reason: null,
            then: function(resolve) {
              listeners.push(resolve);
            }
          };
          thenable.then(
            function() {
              thenableWithOverride.status = "fulfilled";
              thenableWithOverride.value = result;
              for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);
            },
            function(error) {
              thenableWithOverride.status = "rejected";
              thenableWithOverride.reason = error;
              for (error = 0; error < listeners.length; error++)
                (0, listeners[error])(void 0);
            }
          );
          return thenableWithOverride;
        }
        var prevOnStartTransitionFinish = ReactSharedInternals.S;
        ReactSharedInternals.S = function(transition, returnValue) {
          globalMostRecentTransitionTime = now();
          "object" === typeof returnValue && null !== returnValue && "function" === typeof returnValue.then && entangleAsyncAction(transition, returnValue);
          null !== prevOnStartTransitionFinish && prevOnStartTransitionFinish(transition, returnValue);
        };
        var resumedCache = createCursor(null);
        function peekCacheFromPool() {
          var cacheResumedFromPreviousRender = resumedCache.current;
          return null !== cacheResumedFromPreviousRender ? cacheResumedFromPreviousRender : workInProgressRoot.pooledCache;
        }
        function pushTransition(offscreenWorkInProgress, prevCachePool) {
          null === prevCachePool ? push(resumedCache, resumedCache.current) : push(resumedCache, prevCachePool.pool);
        }
        function getSuspendedCache() {
          var cacheFromPool = peekCacheFromPool();
          return null === cacheFromPool ? null : { parent: CacheContext._currentValue, pool: cacheFromPool };
        }
        var SuspenseException = Error(formatProdErrorMessage(460)), SuspenseyCommitException = Error(formatProdErrorMessage(474)), SuspenseActionException = Error(formatProdErrorMessage(542)), noopSuspenseyCommitThenable = { then: function() {
        } };
        function isThenableResolved(thenable) {
          thenable = thenable.status;
          return "fulfilled" === thenable || "rejected" === thenable;
        }
        function trackUsedThenable(thenableState2, thenable, index2) {
          index2 = thenableState2[index2];
          void 0 === index2 ? thenableState2.push(thenable) : index2 !== thenable && (thenable.then(noop$1, noop$1), thenable = index2);
          switch (thenable.status) {
            case "fulfilled":
              return thenable.value;
            case "rejected":
              throw thenableState2 = thenable.reason, checkIfUseWrappedInAsyncCatch(thenableState2), thenableState2;
            default:
              if ("string" === typeof thenable.status) thenable.then(noop$1, noop$1);
              else {
                thenableState2 = workInProgressRoot;
                if (null !== thenableState2 && 100 < thenableState2.shellSuspendCounter)
                  throw Error(formatProdErrorMessage(482));
                thenableState2 = thenable;
                thenableState2.status = "pending";
                thenableState2.then(
                  function(fulfilledValue) {
                    if ("pending" === thenable.status) {
                      var fulfilledThenable = thenable;
                      fulfilledThenable.status = "fulfilled";
                      fulfilledThenable.value = fulfilledValue;
                    }
                  },
                  function(error) {
                    if ("pending" === thenable.status) {
                      var rejectedThenable = thenable;
                      rejectedThenable.status = "rejected";
                      rejectedThenable.reason = error;
                    }
                  }
                );
              }
              switch (thenable.status) {
                case "fulfilled":
                  return thenable.value;
                case "rejected":
                  throw thenableState2 = thenable.reason, checkIfUseWrappedInAsyncCatch(thenableState2), thenableState2;
              }
              suspendedThenable = thenable;
              throw SuspenseException;
          }
        }
        function resolveLazy(lazyType) {
          try {
            var init = lazyType._init;
            return init(lazyType._payload);
          } catch (x) {
            if (null !== x && "object" === typeof x && "function" === typeof x.then)
              throw suspendedThenable = x, SuspenseException;
            throw x;
          }
        }
        var suspendedThenable = null;
        function getSuspendedThenable() {
          if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));
          var thenable = suspendedThenable;
          suspendedThenable = null;
          return thenable;
        }
        function checkIfUseWrappedInAsyncCatch(rejectedReason) {
          if (rejectedReason === SuspenseException || rejectedReason === SuspenseActionException)
            throw Error(formatProdErrorMessage(483));
        }
        var thenableState$1 = null, thenableIndexCounter$1 = 0;
        function unwrapThenable(thenable) {
          var index2 = thenableIndexCounter$1;
          thenableIndexCounter$1 += 1;
          null === thenableState$1 && (thenableState$1 = []);
          return trackUsedThenable(thenableState$1, thenable, index2);
        }
        function coerceRef(workInProgress2, element) {
          element = element.props.ref;
          workInProgress2.ref = void 0 !== element ? element : null;
        }
        function throwOnInvalidObjectTypeImpl(returnFiber, newChild) {
          if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)
            throw Error(formatProdErrorMessage(525));
          returnFiber = Object.prototype.toString.call(newChild);
          throw Error(
            formatProdErrorMessage(
              31,
              "[object Object]" === returnFiber ? "object with keys {" + Object.keys(newChild).join(", ") + "}" : returnFiber
            )
          );
        }
        function createChildReconciler(shouldTrackSideEffects) {
          function deleteChild(returnFiber, childToDelete) {
            if (shouldTrackSideEffects) {
              var deletions = returnFiber.deletions;
              null === deletions ? (returnFiber.deletions = [childToDelete], returnFiber.flags |= 16) : deletions.push(childToDelete);
            }
          }
          function deleteRemainingChildren(returnFiber, currentFirstChild) {
            if (!shouldTrackSideEffects) return null;
            for (; null !== currentFirstChild; )
              deleteChild(returnFiber, currentFirstChild), currentFirstChild = currentFirstChild.sibling;
            return null;
          }
          function mapRemainingChildren(currentFirstChild) {
            for (var existingChildren = new Map(); null !== currentFirstChild; )
              null !== currentFirstChild.key ? existingChildren.set(currentFirstChild.key, currentFirstChild) : existingChildren.set(currentFirstChild.index, currentFirstChild), currentFirstChild = currentFirstChild.sibling;
            return existingChildren;
          }
          function useFiber(fiber, pendingProps) {
            fiber = createWorkInProgress(fiber, pendingProps);
            fiber.index = 0;
            fiber.sibling = null;
            return fiber;
          }
          function placeChild(newFiber, lastPlacedIndex, newIndex) {
            newFiber.index = newIndex;
            if (!shouldTrackSideEffects)
              return newFiber.flags |= 1048576, lastPlacedIndex;
            newIndex = newFiber.alternate;
            if (null !== newIndex)
              return newIndex = newIndex.index, newIndex < lastPlacedIndex ? (newFiber.flags |= 67108866, lastPlacedIndex) : newIndex;
            newFiber.flags |= 67108866;
            return lastPlacedIndex;
          }
          function placeSingleChild(newFiber) {
            shouldTrackSideEffects && null === newFiber.alternate && (newFiber.flags |= 67108866);
            return newFiber;
          }
          function updateTextNode(returnFiber, current, textContent, lanes) {
            if (null === current || 6 !== current.tag)
              return current = createFiberFromText(textContent, returnFiber.mode, lanes), current.return = returnFiber, current;
            current = useFiber(current, textContent);
            current.return = returnFiber;
            return current;
          }
          function updateElement(returnFiber, current, element, lanes) {
            var elementType = element.type;
            if (elementType === REACT_FRAGMENT_TYPE)
              return updateFragment(
                returnFiber,
                current,
                element.props.children,
                lanes,
                element.key
              );
            if (null !== current && (current.elementType === elementType || "object" === typeof elementType && null !== elementType && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === current.type))
              return current = useFiber(current, element.props), coerceRef(current, element), current.return = returnFiber, current;
            current = createFiberFromTypeAndProps(
              element.type,
              element.key,
              element.props,
              null,
              returnFiber.mode,
              lanes
            );
            coerceRef(current, element);
            current.return = returnFiber;
            return current;
          }
          function updatePortal(returnFiber, current, portal, lanes) {
            if (null === current || 4 !== current.tag || current.stateNode.containerInfo !== portal.containerInfo || current.stateNode.implementation !== portal.implementation)
              return current = createFiberFromPortal(portal, returnFiber.mode, lanes), current.return = returnFiber, current;
            current = useFiber(current, portal.children || []);
            current.return = returnFiber;
            return current;
          }
          function updateFragment(returnFiber, current, fragment, lanes, key) {
            if (null === current || 7 !== current.tag)
              return current = createFiberFromFragment(
                fragment,
                returnFiber.mode,
                lanes,
                key
              ), current.return = returnFiber, current;
            current = useFiber(current, fragment);
            current.return = returnFiber;
            return current;
          }
          function createChild(returnFiber, newChild, lanes) {
            if ("string" === typeof newChild && "" !== newChild || "number" === typeof newChild || "bigint" === typeof newChild)
              return newChild = createFiberFromText(
                "" + newChild,
                returnFiber.mode,
                lanes
              ), newChild.return = returnFiber, newChild;
            if ("object" === typeof newChild && null !== newChild) {
              switch (newChild.$$typeof) {
                case REACT_ELEMENT_TYPE:
                  return lanes = createFiberFromTypeAndProps(
                    newChild.type,
                    newChild.key,
                    newChild.props,
                    null,
                    returnFiber.mode,
                    lanes
                  ), coerceRef(lanes, newChild), lanes.return = returnFiber, lanes;
                case REACT_PORTAL_TYPE:
                  return newChild = createFiberFromPortal(
                    newChild,
                    returnFiber.mode,
                    lanes
                  ), newChild.return = returnFiber, newChild;
                case REACT_LAZY_TYPE:
                  return newChild = resolveLazy(newChild), createChild(returnFiber, newChild, lanes);
              }
              if (isArrayImpl(newChild) || getIteratorFn(newChild))
                return newChild = createFiberFromFragment(
                  newChild,
                  returnFiber.mode,
                  lanes,
                  null
                ), newChild.return = returnFiber, newChild;
              if ("function" === typeof newChild.then)
                return createChild(returnFiber, unwrapThenable(newChild), lanes);
              if (newChild.$$typeof === REACT_CONTEXT_TYPE)
                return createChild(
                  returnFiber,
                  readContextDuringReconciliation(returnFiber, newChild),
                  lanes
                );
              throwOnInvalidObjectTypeImpl(returnFiber, newChild);
            }
            return null;
          }
          function updateSlot(returnFiber, oldFiber, newChild, lanes) {
            var key = null !== oldFiber ? oldFiber.key : null;
            if ("string" === typeof newChild && "" !== newChild || "number" === typeof newChild || "bigint" === typeof newChild)
              return null !== key ? null : updateTextNode(returnFiber, oldFiber, "" + newChild, lanes);
            if ("object" === typeof newChild && null !== newChild) {
              switch (newChild.$$typeof) {
                case REACT_ELEMENT_TYPE:
                  return newChild.key === key ? updateElement(returnFiber, oldFiber, newChild, lanes) : null;
                case REACT_PORTAL_TYPE:
                  return newChild.key === key ? updatePortal(returnFiber, oldFiber, newChild, lanes) : null;
                case REACT_LAZY_TYPE:
                  return newChild = resolveLazy(newChild), updateSlot(returnFiber, oldFiber, newChild, lanes);
              }
              if (isArrayImpl(newChild) || getIteratorFn(newChild))
                return null !== key ? null : updateFragment(returnFiber, oldFiber, newChild, lanes, null);
              if ("function" === typeof newChild.then)
                return updateSlot(
                  returnFiber,
                  oldFiber,
                  unwrapThenable(newChild),
                  lanes
                );
              if (newChild.$$typeof === REACT_CONTEXT_TYPE)
                return updateSlot(
                  returnFiber,
                  oldFiber,
                  readContextDuringReconciliation(returnFiber, newChild),
                  lanes
                );
              throwOnInvalidObjectTypeImpl(returnFiber, newChild);
            }
            return null;
          }
          function updateFromMap(existingChildren, returnFiber, newIdx, newChild, lanes) {
            if ("string" === typeof newChild && "" !== newChild || "number" === typeof newChild || "bigint" === typeof newChild)
              return existingChildren = existingChildren.get(newIdx) || null, updateTextNode(returnFiber, existingChildren, "" + newChild, lanes);
            if ("object" === typeof newChild && null !== newChild) {
              switch (newChild.$$typeof) {
                case REACT_ELEMENT_TYPE:
                  return existingChildren = existingChildren.get(
                    null === newChild.key ? newIdx : newChild.key
                  ) || null, updateElement(returnFiber, existingChildren, newChild, lanes);
                case REACT_PORTAL_TYPE:
                  return existingChildren = existingChildren.get(
                    null === newChild.key ? newIdx : newChild.key
                  ) || null, updatePortal(returnFiber, existingChildren, newChild, lanes);
                case REACT_LAZY_TYPE:
                  return newChild = resolveLazy(newChild), updateFromMap(
                    existingChildren,
                    returnFiber,
                    newIdx,
                    newChild,
                    lanes
                  );
              }
              if (isArrayImpl(newChild) || getIteratorFn(newChild))
                return existingChildren = existingChildren.get(newIdx) || null, updateFragment(returnFiber, existingChildren, newChild, lanes, null);
              if ("function" === typeof newChild.then)
                return updateFromMap(
                  existingChildren,
                  returnFiber,
                  newIdx,
                  unwrapThenable(newChild),
                  lanes
                );
              if (newChild.$$typeof === REACT_CONTEXT_TYPE)
                return updateFromMap(
                  existingChildren,
                  returnFiber,
                  newIdx,
                  readContextDuringReconciliation(returnFiber, newChild),
                  lanes
                );
              throwOnInvalidObjectTypeImpl(returnFiber, newChild);
            }
            return null;
          }
          function reconcileChildrenArray(returnFiber, currentFirstChild, newChildren, lanes) {
            for (var resultingFirstChild = null, previousNewFiber = null, oldFiber = currentFirstChild, newIdx = currentFirstChild = 0, nextOldFiber = null; null !== oldFiber && newIdx < newChildren.length; newIdx++) {
              oldFiber.index > newIdx ? (nextOldFiber = oldFiber, oldFiber = null) : nextOldFiber = oldFiber.sibling;
              var newFiber = updateSlot(
                returnFiber,
                oldFiber,
                newChildren[newIdx],
                lanes
              );
              if (null === newFiber) {
                null === oldFiber && (oldFiber = nextOldFiber);
                break;
              }
              shouldTrackSideEffects && oldFiber && null === newFiber.alternate && deleteChild(returnFiber, oldFiber);
              currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);
              null === previousNewFiber ? resultingFirstChild = newFiber : previousNewFiber.sibling = newFiber;
              previousNewFiber = newFiber;
              oldFiber = nextOldFiber;
            }
            if (newIdx === newChildren.length)
              return deleteRemainingChildren(returnFiber, oldFiber), isHydrating && pushTreeFork(returnFiber, newIdx), resultingFirstChild;
            if (null === oldFiber) {
              for (; newIdx < newChildren.length; newIdx++)
                oldFiber = createChild(returnFiber, newChildren[newIdx], lanes), null !== oldFiber && (currentFirstChild = placeChild(
                  oldFiber,
                  currentFirstChild,
                  newIdx
                ), null === previousNewFiber ? resultingFirstChild = oldFiber : previousNewFiber.sibling = oldFiber, previousNewFiber = oldFiber);
              isHydrating && pushTreeFork(returnFiber, newIdx);
              return resultingFirstChild;
            }
            for (oldFiber = mapRemainingChildren(oldFiber); newIdx < newChildren.length; newIdx++)
              nextOldFiber = updateFromMap(
                oldFiber,
                returnFiber,
                newIdx,
                newChildren[newIdx],
                lanes
              ), null !== nextOldFiber && (shouldTrackSideEffects && null !== nextOldFiber.alternate && oldFiber.delete(
                null === nextOldFiber.key ? newIdx : nextOldFiber.key
              ), currentFirstChild = placeChild(
                nextOldFiber,
                currentFirstChild,
                newIdx
              ), null === previousNewFiber ? resultingFirstChild = nextOldFiber : previousNewFiber.sibling = nextOldFiber, previousNewFiber = nextOldFiber);
            shouldTrackSideEffects && oldFiber.forEach(function(child) {
              return deleteChild(returnFiber, child);
            });
            isHydrating && pushTreeFork(returnFiber, newIdx);
            return resultingFirstChild;
          }
          function reconcileChildrenIterator(returnFiber, currentFirstChild, newChildren, lanes) {
            if (null == newChildren) throw Error(formatProdErrorMessage(151));
            for (var resultingFirstChild = null, previousNewFiber = null, oldFiber = currentFirstChild, newIdx = currentFirstChild = 0, nextOldFiber = null, step = newChildren.next(); null !== oldFiber && !step.done; newIdx++, step = newChildren.next()) {
              oldFiber.index > newIdx ? (nextOldFiber = oldFiber, oldFiber = null) : nextOldFiber = oldFiber.sibling;
              var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);
              if (null === newFiber) {
                null === oldFiber && (oldFiber = nextOldFiber);
                break;
              }
              shouldTrackSideEffects && oldFiber && null === newFiber.alternate && deleteChild(returnFiber, oldFiber);
              currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);
              null === previousNewFiber ? resultingFirstChild = newFiber : previousNewFiber.sibling = newFiber;
              previousNewFiber = newFiber;
              oldFiber = nextOldFiber;
            }
            if (step.done)
              return deleteRemainingChildren(returnFiber, oldFiber), isHydrating && pushTreeFork(returnFiber, newIdx), resultingFirstChild;
            if (null === oldFiber) {
              for (; !step.done; newIdx++, step = newChildren.next())
                step = createChild(returnFiber, step.value, lanes), null !== step && (currentFirstChild = placeChild(step, currentFirstChild, newIdx), null === previousNewFiber ? resultingFirstChild = step : previousNewFiber.sibling = step, previousNewFiber = step);
              isHydrating && pushTreeFork(returnFiber, newIdx);
              return resultingFirstChild;
            }
            for (oldFiber = mapRemainingChildren(oldFiber); !step.done; newIdx++, step = newChildren.next())
              step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes), null !== step && (shouldTrackSideEffects && null !== step.alternate && oldFiber.delete(null === step.key ? newIdx : step.key), currentFirstChild = placeChild(step, currentFirstChild, newIdx), null === previousNewFiber ? resultingFirstChild = step : previousNewFiber.sibling = step, previousNewFiber = step);
            shouldTrackSideEffects && oldFiber.forEach(function(child) {
              return deleteChild(returnFiber, child);
            });
            isHydrating && pushTreeFork(returnFiber, newIdx);
            return resultingFirstChild;
          }
          function reconcileChildFibersImpl(returnFiber, currentFirstChild, newChild, lanes) {
            "object" === typeof newChild && null !== newChild && newChild.type === REACT_FRAGMENT_TYPE && null === newChild.key && (newChild = newChild.props.children);
            if ("object" === typeof newChild && null !== newChild) {
              switch (newChild.$$typeof) {
                case REACT_ELEMENT_TYPE:
                  a: {
                    for (var key = newChild.key; null !== currentFirstChild; ) {
                      if (currentFirstChild.key === key) {
                        key = newChild.type;
                        if (key === REACT_FRAGMENT_TYPE) {
                          if (7 === currentFirstChild.tag) {
                            deleteRemainingChildren(
                              returnFiber,
                              currentFirstChild.sibling
                            );
                            lanes = useFiber(
                              currentFirstChild,
                              newChild.props.children
                            );
                            lanes.return = returnFiber;
                            returnFiber = lanes;
                            break a;
                          }
                        } else if (currentFirstChild.elementType === key || "object" === typeof key && null !== key && key.$$typeof === REACT_LAZY_TYPE && resolveLazy(key) === currentFirstChild.type) {
                          deleteRemainingChildren(
                            returnFiber,
                            currentFirstChild.sibling
                          );
                          lanes = useFiber(currentFirstChild, newChild.props);
                          coerceRef(lanes, newChild);
                          lanes.return = returnFiber;
                          returnFiber = lanes;
                          break a;
                        }
                        deleteRemainingChildren(returnFiber, currentFirstChild);
                        break;
                      } else deleteChild(returnFiber, currentFirstChild);
                      currentFirstChild = currentFirstChild.sibling;
                    }
                    newChild.type === REACT_FRAGMENT_TYPE ? (lanes = createFiberFromFragment(
                      newChild.props.children,
                      returnFiber.mode,
                      lanes,
                      newChild.key
                    ), lanes.return = returnFiber, returnFiber = lanes) : (lanes = createFiberFromTypeAndProps(
                      newChild.type,
                      newChild.key,
                      newChild.props,
                      null,
                      returnFiber.mode,
                      lanes
                    ), coerceRef(lanes, newChild), lanes.return = returnFiber, returnFiber = lanes);
                  }
                  return placeSingleChild(returnFiber);
                case REACT_PORTAL_TYPE:
                  a: {
                    for (key = newChild.key; null !== currentFirstChild; ) {
                      if (currentFirstChild.key === key)
                        if (4 === currentFirstChild.tag && currentFirstChild.stateNode.containerInfo === newChild.containerInfo && currentFirstChild.stateNode.implementation === newChild.implementation) {
                          deleteRemainingChildren(
                            returnFiber,
                            currentFirstChild.sibling
                          );
                          lanes = useFiber(currentFirstChild, newChild.children || []);
                          lanes.return = returnFiber;
                          returnFiber = lanes;
                          break a;
                        } else {
                          deleteRemainingChildren(returnFiber, currentFirstChild);
                          break;
                        }
                      else deleteChild(returnFiber, currentFirstChild);
                      currentFirstChild = currentFirstChild.sibling;
                    }
                    lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);
                    lanes.return = returnFiber;
                    returnFiber = lanes;
                  }
                  return placeSingleChild(returnFiber);
                case REACT_LAZY_TYPE:
                  return newChild = resolveLazy(newChild), reconcileChildFibersImpl(
                    returnFiber,
                    currentFirstChild,
                    newChild,
                    lanes
                  );
              }
              if (isArrayImpl(newChild))
                return reconcileChildrenArray(
                  returnFiber,
                  currentFirstChild,
                  newChild,
                  lanes
                );
              if (getIteratorFn(newChild)) {
                key = getIteratorFn(newChild);
                if ("function" !== typeof key) throw Error(formatProdErrorMessage(150));
                newChild = key.call(newChild);
                return reconcileChildrenIterator(
                  returnFiber,
                  currentFirstChild,
                  newChild,
                  lanes
                );
              }
              if ("function" === typeof newChild.then)
                return reconcileChildFibersImpl(
                  returnFiber,
                  currentFirstChild,
                  unwrapThenable(newChild),
                  lanes
                );
              if (newChild.$$typeof === REACT_CONTEXT_TYPE)
                return reconcileChildFibersImpl(
                  returnFiber,
                  currentFirstChild,
                  readContextDuringReconciliation(returnFiber, newChild),
                  lanes
                );
              throwOnInvalidObjectTypeImpl(returnFiber, newChild);
            }
            return "string" === typeof newChild && "" !== newChild || "number" === typeof newChild || "bigint" === typeof newChild ? (newChild = "" + newChild, null !== currentFirstChild && 6 === currentFirstChild.tag ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling), lanes = useFiber(currentFirstChild, newChild), lanes.return = returnFiber, returnFiber = lanes) : (deleteRemainingChildren(returnFiber, currentFirstChild), lanes = createFiberFromText(newChild, returnFiber.mode, lanes), lanes.return = returnFiber, returnFiber = lanes), placeSingleChild(returnFiber)) : deleteRemainingChildren(returnFiber, currentFirstChild);
          }
          return function(returnFiber, currentFirstChild, newChild, lanes) {
            try {
              thenableIndexCounter$1 = 0;
              var firstChildFiber = reconcileChildFibersImpl(
                returnFiber,
                currentFirstChild,
                newChild,
                lanes
              );
              thenableState$1 = null;
              return firstChildFiber;
            } catch (x) {
              if (x === SuspenseException || x === SuspenseActionException) throw x;
              var fiber = createFiberImplClass(29, x, null, returnFiber.mode);
              fiber.lanes = lanes;
              fiber.return = returnFiber;
              return fiber;
            } finally {
            }
          };
        }
        var reconcileChildFibers = createChildReconciler(true), mountChildFibers = createChildReconciler(false), hasForceUpdate = false;
        function initializeUpdateQueue(fiber) {
          fiber.updateQueue = {
            baseState: fiber.memoizedState,
            firstBaseUpdate: null,
            lastBaseUpdate: null,
            shared: { pending: null, lanes: 0, hiddenCallbacks: null },
            callbacks: null
          };
        }
        function cloneUpdateQueue(current, workInProgress2) {
          current = current.updateQueue;
          workInProgress2.updateQueue === current && (workInProgress2.updateQueue = {
            baseState: current.baseState,
            firstBaseUpdate: current.firstBaseUpdate,
            lastBaseUpdate: current.lastBaseUpdate,
            shared: current.shared,
            callbacks: null
          });
        }
        function createUpdate(lane) {
          return { lane, tag: 0, payload: null, callback: null, next: null };
        }
        function enqueueUpdate(fiber, update, lane) {
          var updateQueue = fiber.updateQueue;
          if (null === updateQueue) return null;
          updateQueue = updateQueue.shared;
          if (0 !== (executionContext & 2)) {
            var pending = updateQueue.pending;
            null === pending ? update.next = update : (update.next = pending.next, pending.next = update);
            updateQueue.pending = update;
            update = getRootForUpdatedFiber(fiber);
            markUpdateLaneFromFiberToRoot(fiber, null, lane);
            return update;
          }
          enqueueUpdate$1(fiber, updateQueue, update, lane);
          return getRootForUpdatedFiber(fiber);
        }
        function entangleTransitions(root2, fiber, lane) {
          fiber = fiber.updateQueue;
          if (null !== fiber && (fiber = fiber.shared, 0 !== (lane & 4194048))) {
            var queueLanes = fiber.lanes;
            queueLanes &= root2.pendingLanes;
            lane |= queueLanes;
            fiber.lanes = lane;
            markRootEntangled(root2, lane);
          }
        }
        function enqueueCapturedUpdate(workInProgress2, capturedUpdate) {
          var queue = workInProgress2.updateQueue, current = workInProgress2.alternate;
          if (null !== current && (current = current.updateQueue, queue === current)) {
            var newFirst = null, newLast = null;
            queue = queue.firstBaseUpdate;
            if (null !== queue) {
              do {
                var clone = {
                  lane: queue.lane,
                  tag: queue.tag,
                  payload: queue.payload,
                  callback: null,
                  next: null
                };
                null === newLast ? newFirst = newLast = clone : newLast = newLast.next = clone;
                queue = queue.next;
              } while (null !== queue);
              null === newLast ? newFirst = newLast = capturedUpdate : newLast = newLast.next = capturedUpdate;
            } else newFirst = newLast = capturedUpdate;
            queue = {
              baseState: current.baseState,
              firstBaseUpdate: newFirst,
              lastBaseUpdate: newLast,
              shared: current.shared,
              callbacks: current.callbacks
            };
            workInProgress2.updateQueue = queue;
            return;
          }
          workInProgress2 = queue.lastBaseUpdate;
          null === workInProgress2 ? queue.firstBaseUpdate = capturedUpdate : workInProgress2.next = capturedUpdate;
          queue.lastBaseUpdate = capturedUpdate;
        }
        var didReadFromEntangledAsyncAction = false;
        function suspendIfUpdateReadFromEntangledAsyncAction() {
          if (didReadFromEntangledAsyncAction) {
            var entangledActionThenable = currentEntangledActionThenable;
            if (null !== entangledActionThenable) throw entangledActionThenable;
          }
        }
        function processUpdateQueue(workInProgress$jscomp$0, props, instance$jscomp$0, renderLanes2) {
          didReadFromEntangledAsyncAction = false;
          var queue = workInProgress$jscomp$0.updateQueue;
          hasForceUpdate = false;
          var firstBaseUpdate = queue.firstBaseUpdate, lastBaseUpdate = queue.lastBaseUpdate, pendingQueue = queue.shared.pending;
          if (null !== pendingQueue) {
            queue.shared.pending = null;
            var lastPendingUpdate = pendingQueue, firstPendingUpdate = lastPendingUpdate.next;
            lastPendingUpdate.next = null;
            null === lastBaseUpdate ? firstBaseUpdate = firstPendingUpdate : lastBaseUpdate.next = firstPendingUpdate;
            lastBaseUpdate = lastPendingUpdate;
            var current = workInProgress$jscomp$0.alternate;
            null !== current && (current = current.updateQueue, pendingQueue = current.lastBaseUpdate, pendingQueue !== lastBaseUpdate && (null === pendingQueue ? current.firstBaseUpdate = firstPendingUpdate : pendingQueue.next = firstPendingUpdate, current.lastBaseUpdate = lastPendingUpdate));
          }
          if (null !== firstBaseUpdate) {
            var newState = queue.baseState;
            lastBaseUpdate = 0;
            current = firstPendingUpdate = lastPendingUpdate = null;
            pendingQueue = firstBaseUpdate;
            do {
              var updateLane = pendingQueue.lane & -536870913, isHiddenUpdate = updateLane !== pendingQueue.lane;
              if (isHiddenUpdate ? (workInProgressRootRenderLanes & updateLane) === updateLane : (renderLanes2 & updateLane) === updateLane) {
                0 !== updateLane && updateLane === currentEntangledLane && (didReadFromEntangledAsyncAction = true);
                null !== current && (current = current.next = {
                  lane: 0,
                  tag: pendingQueue.tag,
                  payload: pendingQueue.payload,
                  callback: null,
                  next: null
                });
                a: {
                  var workInProgress2 = workInProgress$jscomp$0, update = pendingQueue;
                  updateLane = props;
                  var instance = instance$jscomp$0;
                  switch (update.tag) {
                    case 1:
                      workInProgress2 = update.payload;
                      if ("function" === typeof workInProgress2) {
                        newState = workInProgress2.call(instance, newState, updateLane);
                        break a;
                      }
                      newState = workInProgress2;
                      break a;
                    case 3:
                      workInProgress2.flags = workInProgress2.flags & -65537 | 128;
                    case 0:
                      workInProgress2 = update.payload;
                      updateLane = "function" === typeof workInProgress2 ? workInProgress2.call(instance, newState, updateLane) : workInProgress2;
                      if (null === updateLane || void 0 === updateLane) break a;
                      newState = assign({}, newState, updateLane);
                      break a;
                    case 2:
                      hasForceUpdate = true;
                  }
                }
                updateLane = pendingQueue.callback;
                null !== updateLane && (workInProgress$jscomp$0.flags |= 64, isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192), isHiddenUpdate = queue.callbacks, null === isHiddenUpdate ? queue.callbacks = [updateLane] : isHiddenUpdate.push(updateLane));
              } else
                isHiddenUpdate = {
                  lane: updateLane,
                  tag: pendingQueue.tag,
                  payload: pendingQueue.payload,
                  callback: pendingQueue.callback,
                  next: null
                }, null === current ? (firstPendingUpdate = current = isHiddenUpdate, lastPendingUpdate = newState) : current = current.next = isHiddenUpdate, lastBaseUpdate |= updateLane;
              pendingQueue = pendingQueue.next;
              if (null === pendingQueue)
                if (pendingQueue = queue.shared.pending, null === pendingQueue)
                  break;
                else
                  isHiddenUpdate = pendingQueue, pendingQueue = isHiddenUpdate.next, isHiddenUpdate.next = null, queue.lastBaseUpdate = isHiddenUpdate, queue.shared.pending = null;
            } while (1);
            null === current && (lastPendingUpdate = newState);
            queue.baseState = lastPendingUpdate;
            queue.firstBaseUpdate = firstPendingUpdate;
            queue.lastBaseUpdate = current;
            null === firstBaseUpdate && (queue.shared.lanes = 0);
            workInProgressRootSkippedLanes |= lastBaseUpdate;
            workInProgress$jscomp$0.lanes = lastBaseUpdate;
            workInProgress$jscomp$0.memoizedState = newState;
          }
        }
        function callCallback(callback, context) {
          if ("function" !== typeof callback)
            throw Error(formatProdErrorMessage(191, callback));
          callback.call(context);
        }
        function commitCallbacks(updateQueue, context) {
          var callbacks = updateQueue.callbacks;
          if (null !== callbacks)
            for (updateQueue.callbacks = null, updateQueue = 0; updateQueue < callbacks.length; updateQueue++)
              callCallback(callbacks[updateQueue], context);
        }
        var currentTreeHiddenStackCursor = createCursor(null), prevEntangledRenderLanesCursor = createCursor(0);
        function pushHiddenContext(fiber, context) {
          fiber = entangledRenderLanes;
          push(prevEntangledRenderLanesCursor, fiber);
          push(currentTreeHiddenStackCursor, context);
          entangledRenderLanes = fiber | context.baseLanes;
        }
        function reuseHiddenContextOnStack() {
          push(prevEntangledRenderLanesCursor, entangledRenderLanes);
          push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);
        }
        function popHiddenContext() {
          entangledRenderLanes = prevEntangledRenderLanesCursor.current;
          pop(currentTreeHiddenStackCursor);
          pop(prevEntangledRenderLanesCursor);
        }
        var suspenseHandlerStackCursor = createCursor(null), shellBoundary = null;
        function pushPrimaryTreeSuspenseHandler(handler) {
          var current = handler.alternate;
          push(suspenseStackCursor, suspenseStackCursor.current & 1);
          push(suspenseHandlerStackCursor, handler);
          null === shellBoundary && (null === current || null !== currentTreeHiddenStackCursor.current ? shellBoundary = handler : null !== current.memoizedState && (shellBoundary = handler));
        }
        function pushDehydratedActivitySuspenseHandler(fiber) {
          push(suspenseStackCursor, suspenseStackCursor.current);
          push(suspenseHandlerStackCursor, fiber);
          null === shellBoundary && (shellBoundary = fiber);
        }
        function pushOffscreenSuspenseHandler(fiber) {
          22 === fiber.tag ? (push(suspenseStackCursor, suspenseStackCursor.current), push(suspenseHandlerStackCursor, fiber), null === shellBoundary && (shellBoundary = fiber)) : reuseSuspenseHandlerOnStack();
        }
        function reuseSuspenseHandlerOnStack() {
          push(suspenseStackCursor, suspenseStackCursor.current);
          push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);
        }
        function popSuspenseHandler(fiber) {
          pop(suspenseHandlerStackCursor);
          shellBoundary === fiber && (shellBoundary = null);
          pop(suspenseStackCursor);
        }
        var suspenseStackCursor = createCursor(0);
        function findFirstSuspended(row) {
          for (var node = row; null !== node; ) {
            if (13 === node.tag) {
              var state = node.memoizedState;
              if (null !== state && (state = state.dehydrated, null === state || isSuspenseInstancePending(state) || isSuspenseInstanceFallback(state)))
                return node;
            } else if (19 === node.tag && ("forwards" === node.memoizedProps.revealOrder || "backwards" === node.memoizedProps.revealOrder || "unstable_legacy-backwards" === node.memoizedProps.revealOrder || "together" === node.memoizedProps.revealOrder)) {
              if (0 !== (node.flags & 128)) return node;
            } else if (null !== node.child) {
              node.child.return = node;
              node = node.child;
              continue;
            }
            if (node === row) break;
            for (; null === node.sibling; ) {
              if (null === node.return || node.return === row) return null;
              node = node.return;
            }
            node.sibling.return = node.return;
            node = node.sibling;
          }
          return null;
        }
        var renderLanes = 0, currentlyRenderingFiber = null, currentHook = null, workInProgressHook = null, didScheduleRenderPhaseUpdate = false, didScheduleRenderPhaseUpdateDuringThisPass = false, shouldDoubleInvokeUserFnsInHooksDEV = false, localIdCounter = 0, thenableIndexCounter = 0, thenableState = null, globalClientIdCounter = 0;
        function throwInvalidHookError() {
          throw Error(formatProdErrorMessage(321));
        }
        function areHookInputsEqual(nextDeps, prevDeps) {
          if (null === prevDeps) return false;
          for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)
            if (!objectIs(nextDeps[i], prevDeps[i])) return false;
          return true;
        }
        function renderWithHooks(current, workInProgress2, Component, props, secondArg, nextRenderLanes) {
          renderLanes = nextRenderLanes;
          currentlyRenderingFiber = workInProgress2;
          workInProgress2.memoizedState = null;
          workInProgress2.updateQueue = null;
          workInProgress2.lanes = 0;
          ReactSharedInternals.H = null === current || null === current.memoizedState ? HooksDispatcherOnMount : HooksDispatcherOnUpdate;
          shouldDoubleInvokeUserFnsInHooksDEV = false;
          nextRenderLanes = Component(props, secondArg);
          shouldDoubleInvokeUserFnsInHooksDEV = false;
          didScheduleRenderPhaseUpdateDuringThisPass && (nextRenderLanes = renderWithHooksAgain(
            workInProgress2,
            Component,
            props,
            secondArg
          ));
          finishRenderingHooks(current);
          return nextRenderLanes;
        }
        function finishRenderingHooks(current) {
          ReactSharedInternals.H = ContextOnlyDispatcher;
          var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;
          renderLanes = 0;
          workInProgressHook = currentHook = currentlyRenderingFiber = null;
          didScheduleRenderPhaseUpdate = false;
          thenableIndexCounter = 0;
          thenableState = null;
          if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));
          null === current || didReceiveUpdate || (current = current.dependencies, null !== current && checkIfContextChanged(current) && (didReceiveUpdate = true));
        }
        function renderWithHooksAgain(workInProgress2, Component, props, secondArg) {
          currentlyRenderingFiber = workInProgress2;
          var numberOfReRenders = 0;
          do {
            didScheduleRenderPhaseUpdateDuringThisPass && (thenableState = null);
            thenableIndexCounter = 0;
            didScheduleRenderPhaseUpdateDuringThisPass = false;
            if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));
            numberOfReRenders += 1;
            workInProgressHook = currentHook = null;
            if (null != workInProgress2.updateQueue) {
              var children = workInProgress2.updateQueue;
              children.lastEffect = null;
              children.events = null;
              children.stores = null;
              null != children.memoCache && (children.memoCache.index = 0);
            }
            ReactSharedInternals.H = HooksDispatcherOnRerender;
            children = Component(props, secondArg);
          } while (didScheduleRenderPhaseUpdateDuringThisPass);
          return children;
        }
        function TransitionAwareHostComponent() {
          var dispatcher = ReactSharedInternals.H, maybeThenable = dispatcher.useState()[0];
          maybeThenable = "function" === typeof maybeThenable.then ? useThenable(maybeThenable) : maybeThenable;
          dispatcher = dispatcher.useState()[0];
          (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher && (currentlyRenderingFiber.flags |= 1024);
          return maybeThenable;
        }
        function checkDidRenderIdHook() {
          var didRenderIdHook = 0 !== localIdCounter;
          localIdCounter = 0;
          return didRenderIdHook;
        }
        function bailoutHooks(current, workInProgress2, lanes) {
          workInProgress2.updateQueue = current.updateQueue;
          workInProgress2.flags &= -2053;
          current.lanes &= ~lanes;
        }
        function resetHooksOnUnwind(workInProgress2) {
          if (didScheduleRenderPhaseUpdate) {
            for (workInProgress2 = workInProgress2.memoizedState; null !== workInProgress2; ) {
              var queue = workInProgress2.queue;
              null !== queue && (queue.pending = null);
              workInProgress2 = workInProgress2.next;
            }
            didScheduleRenderPhaseUpdate = false;
          }
          renderLanes = 0;
          workInProgressHook = currentHook = currentlyRenderingFiber = null;
          didScheduleRenderPhaseUpdateDuringThisPass = false;
          thenableIndexCounter = localIdCounter = 0;
          thenableState = null;
        }
        function mountWorkInProgressHook() {
          var hook = {
            memoizedState: null,
            baseState: null,
            baseQueue: null,
            queue: null,
            next: null
          };
          null === workInProgressHook ? currentlyRenderingFiber.memoizedState = workInProgressHook = hook : workInProgressHook = workInProgressHook.next = hook;
          return workInProgressHook;
        }
        function updateWorkInProgressHook() {
          if (null === currentHook) {
            var nextCurrentHook = currentlyRenderingFiber.alternate;
            nextCurrentHook = null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;
          } else nextCurrentHook = currentHook.next;
          var nextWorkInProgressHook = null === workInProgressHook ? currentlyRenderingFiber.memoizedState : workInProgressHook.next;
          if (null !== nextWorkInProgressHook)
            workInProgressHook = nextWorkInProgressHook, currentHook = nextCurrentHook;
          else {
            if (null === nextCurrentHook) {
              if (null === currentlyRenderingFiber.alternate)
                throw Error(formatProdErrorMessage(467));
              throw Error(formatProdErrorMessage(310));
            }
            currentHook = nextCurrentHook;
            nextCurrentHook = {
              memoizedState: currentHook.memoizedState,
              baseState: currentHook.baseState,
              baseQueue: currentHook.baseQueue,
              queue: currentHook.queue,
              next: null
            };
            null === workInProgressHook ? currentlyRenderingFiber.memoizedState = workInProgressHook = nextCurrentHook : workInProgressHook = workInProgressHook.next = nextCurrentHook;
          }
          return workInProgressHook;
        }
        function createFunctionComponentUpdateQueue() {
          return { lastEffect: null, events: null, stores: null, memoCache: null };
        }
        function useThenable(thenable) {
          var index2 = thenableIndexCounter;
          thenableIndexCounter += 1;
          null === thenableState && (thenableState = []);
          thenable = trackUsedThenable(thenableState, thenable, index2);
          index2 = currentlyRenderingFiber;
          null === (null === workInProgressHook ? index2.memoizedState : workInProgressHook.next) && (index2 = index2.alternate, ReactSharedInternals.H = null === index2 || null === index2.memoizedState ? HooksDispatcherOnMount : HooksDispatcherOnUpdate);
          return thenable;
        }
        function use(usable) {
          if (null !== usable && "object" === typeof usable) {
            if ("function" === typeof usable.then) return useThenable(usable);
            if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);
          }
          throw Error(formatProdErrorMessage(438, String(usable)));
        }
        function useMemoCache(size) {
          var memoCache = null, updateQueue = currentlyRenderingFiber.updateQueue;
          null !== updateQueue && (memoCache = updateQueue.memoCache);
          if (null == memoCache) {
            var current = currentlyRenderingFiber.alternate;
            null !== current && (current = current.updateQueue, null !== current && (current = current.memoCache, null != current && (memoCache = {
              data: current.data.map(function(array) {
                return array.slice();
              }),
              index: 0
            })));
          }
          null == memoCache && (memoCache = { data: [], index: 0 });
          null === updateQueue && (updateQueue = createFunctionComponentUpdateQueue(), currentlyRenderingFiber.updateQueue = updateQueue);
          updateQueue.memoCache = memoCache;
          updateQueue = memoCache.data[memoCache.index];
          if (void 0 === updateQueue)
            for (updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0; current < size; current++)
              updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;
          memoCache.index++;
          return updateQueue;
        }
        function basicStateReducer(state, action) {
          return "function" === typeof action ? action(state) : action;
        }
        function updateReducer(reducer) {
          var hook = updateWorkInProgressHook();
          return updateReducerImpl(hook, currentHook, reducer);
        }
        function updateReducerImpl(hook, current, reducer) {
          var queue = hook.queue;
          if (null === queue) throw Error(formatProdErrorMessage(311));
          queue.lastRenderedReducer = reducer;
          var baseQueue = hook.baseQueue, pendingQueue = queue.pending;
          if (null !== pendingQueue) {
            if (null !== baseQueue) {
              var baseFirst = baseQueue.next;
              baseQueue.next = pendingQueue.next;
              pendingQueue.next = baseFirst;
            }
            current.baseQueue = baseQueue = pendingQueue;
            queue.pending = null;
          }
          pendingQueue = hook.baseState;
          if (null === baseQueue) hook.memoizedState = pendingQueue;
          else {
            current = baseQueue.next;
            var newBaseQueueFirst = baseFirst = null, newBaseQueueLast = null, update = current, didReadFromEntangledAsyncAction$60 = false;
            do {
              var updateLane = update.lane & -536870913;
              if (updateLane !== update.lane ? (workInProgressRootRenderLanes & updateLane) === updateLane : (renderLanes & updateLane) === updateLane) {
                var revertLane = update.revertLane;
                if (0 === revertLane)
                  null !== newBaseQueueLast && (newBaseQueueLast = newBaseQueueLast.next = {
                    lane: 0,
                    revertLane: 0,
                    gesture: null,
                    action: update.action,
                    hasEagerState: update.hasEagerState,
                    eagerState: update.eagerState,
                    next: null
                  }), updateLane === currentEntangledLane && (didReadFromEntangledAsyncAction$60 = true);
                else if ((renderLanes & revertLane) === revertLane) {
                  update = update.next;
                  revertLane === currentEntangledLane && (didReadFromEntangledAsyncAction$60 = true);
                  continue;
                } else
                  updateLane = {
                    lane: 0,
                    revertLane: update.revertLane,
                    gesture: null,
                    action: update.action,
                    hasEagerState: update.hasEagerState,
                    eagerState: update.eagerState,
                    next: null
                  }, null === newBaseQueueLast ? (newBaseQueueFirst = newBaseQueueLast = updateLane, baseFirst = pendingQueue) : newBaseQueueLast = newBaseQueueLast.next = updateLane, currentlyRenderingFiber.lanes |= revertLane, workInProgressRootSkippedLanes |= revertLane;
                updateLane = update.action;
                shouldDoubleInvokeUserFnsInHooksDEV && reducer(pendingQueue, updateLane);
                pendingQueue = update.hasEagerState ? update.eagerState : reducer(pendingQueue, updateLane);
              } else
                revertLane = {
                  lane: updateLane,
                  revertLane: update.revertLane,
                  gesture: update.gesture,
                  action: update.action,
                  hasEagerState: update.hasEagerState,
                  eagerState: update.eagerState,
                  next: null
                }, null === newBaseQueueLast ? (newBaseQueueFirst = newBaseQueueLast = revertLane, baseFirst = pendingQueue) : newBaseQueueLast = newBaseQueueLast.next = revertLane, currentlyRenderingFiber.lanes |= updateLane, workInProgressRootSkippedLanes |= updateLane;
              update = update.next;
            } while (null !== update && update !== current);
            null === newBaseQueueLast ? baseFirst = pendingQueue : newBaseQueueLast.next = newBaseQueueFirst;
            if (!objectIs(pendingQueue, hook.memoizedState) && (didReceiveUpdate = true, didReadFromEntangledAsyncAction$60 && (reducer = currentEntangledActionThenable, null !== reducer)))
              throw reducer;
            hook.memoizedState = pendingQueue;
            hook.baseState = baseFirst;
            hook.baseQueue = newBaseQueueLast;
            queue.lastRenderedState = pendingQueue;
          }
          null === baseQueue && (queue.lanes = 0);
          return [hook.memoizedState, queue.dispatch];
        }
        function rerenderReducer(reducer) {
          var hook = updateWorkInProgressHook(), queue = hook.queue;
          if (null === queue) throw Error(formatProdErrorMessage(311));
          queue.lastRenderedReducer = reducer;
          var dispatch = queue.dispatch, lastRenderPhaseUpdate = queue.pending, newState = hook.memoizedState;
          if (null !== lastRenderPhaseUpdate) {
            queue.pending = null;
            var update = lastRenderPhaseUpdate = lastRenderPhaseUpdate.next;
            do
              newState = reducer(newState, update.action), update = update.next;
            while (update !== lastRenderPhaseUpdate);
            objectIs(newState, hook.memoizedState) || (didReceiveUpdate = true);
            hook.memoizedState = newState;
            null === hook.baseQueue && (hook.baseState = newState);
            queue.lastRenderedState = newState;
          }
          return [newState, dispatch];
        }
        function updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {
          var fiber = currentlyRenderingFiber, hook = updateWorkInProgressHook(), isHydrating$jscomp$0 = isHydrating;
          if (isHydrating$jscomp$0) {
            if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));
            getServerSnapshot = getServerSnapshot();
          } else getServerSnapshot = getSnapshot();
          var snapshotChanged = !objectIs(
            (currentHook || hook).memoizedState,
            getServerSnapshot
          );
          snapshotChanged && (hook.memoizedState = getServerSnapshot, didReceiveUpdate = true);
          hook = hook.queue;
          updateEffect(subscribeToStore.bind(null, fiber, hook, subscribe), [
            subscribe
          ]);
          if (hook.getSnapshot !== getSnapshot || snapshotChanged || null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1) {
            fiber.flags |= 2048;
            pushSimpleEffect(
              9,
              { destroy: void 0 },
              updateStoreInstance.bind(
                null,
                fiber,
                hook,
                getServerSnapshot,
                getSnapshot
              ),
              null
            );
            if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));
            isHydrating$jscomp$0 || 0 !== (renderLanes & 127) || pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);
          }
          return getServerSnapshot;
        }
        function pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {
          fiber.flags |= 16384;
          fiber = { getSnapshot, value: renderedSnapshot };
          getSnapshot = currentlyRenderingFiber.updateQueue;
          null === getSnapshot ? (getSnapshot = createFunctionComponentUpdateQueue(), currentlyRenderingFiber.updateQueue = getSnapshot, getSnapshot.stores = [fiber]) : (renderedSnapshot = getSnapshot.stores, null === renderedSnapshot ? getSnapshot.stores = [fiber] : renderedSnapshot.push(fiber));
        }
        function updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {
          inst.value = nextSnapshot;
          inst.getSnapshot = getSnapshot;
          checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);
        }
        function subscribeToStore(fiber, inst, subscribe) {
          return subscribe(function() {
            checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);
          });
        }
        function checkIfSnapshotChanged(inst) {
          var latestGetSnapshot = inst.getSnapshot;
          inst = inst.value;
          try {
            var nextValue = latestGetSnapshot();
            return !objectIs(inst, nextValue);
          } catch (error) {
            return true;
          }
        }
        function forceStoreRerender(fiber) {
          var root2 = enqueueConcurrentRenderForLane(fiber, 2);
          null !== root2 && scheduleUpdateOnFiber(root2, fiber, 2);
        }
        function mountStateImpl(initialState) {
          var hook = mountWorkInProgressHook();
          if ("function" === typeof initialState) {
            var initialStateInitializer = initialState;
            initialState = initialStateInitializer();
            if (shouldDoubleInvokeUserFnsInHooksDEV) {
              setIsStrictModeForDevtools(true);
              try {
                initialStateInitializer();
              } finally {
                setIsStrictModeForDevtools(false);
              }
            }
          }
          hook.memoizedState = hook.baseState = initialState;
          hook.queue = {
            pending: null,
            lanes: 0,
            dispatch: null,
            lastRenderedReducer: basicStateReducer,
            lastRenderedState: initialState
          };
          return hook;
        }
        function updateOptimisticImpl(hook, current, passthrough, reducer) {
          hook.baseState = passthrough;
          return updateReducerImpl(
            hook,
            currentHook,
            "function" === typeof reducer ? reducer : basicStateReducer
          );
        }
        function dispatchActionState(fiber, actionQueue, setPendingState, setState, payload) {
          if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));
          fiber = actionQueue.action;
          if (null !== fiber) {
            var actionNode = {
              payload,
              action: fiber,
              next: null,
              isTransition: true,
              status: "pending",
              value: null,
              reason: null,
              listeners: [],
              then: function(listener) {
                actionNode.listeners.push(listener);
              }
            };
            null !== ReactSharedInternals.T ? setPendingState(true) : actionNode.isTransition = false;
            setState(actionNode);
            setPendingState = actionQueue.pending;
            null === setPendingState ? (actionNode.next = actionQueue.pending = actionNode, runActionStateAction(actionQueue, actionNode)) : (actionNode.next = setPendingState.next, actionQueue.pending = setPendingState.next = actionNode);
          }
        }
        function runActionStateAction(actionQueue, node) {
          var action = node.action, payload = node.payload, prevState = actionQueue.state;
          if (node.isTransition) {
            var prevTransition = ReactSharedInternals.T, currentTransition = {};
            ReactSharedInternals.T = currentTransition;
            try {
              var returnValue = action(prevState, payload), onStartTransitionFinish = ReactSharedInternals.S;
              null !== onStartTransitionFinish && onStartTransitionFinish(currentTransition, returnValue);
              handleActionReturnValue(actionQueue, node, returnValue);
            } catch (error) {
              onActionError(actionQueue, node, error);
            } finally {
              null !== prevTransition && null !== currentTransition.types && (prevTransition.types = currentTransition.types), ReactSharedInternals.T = prevTransition;
            }
          } else
            try {
              prevTransition = action(prevState, payload), handleActionReturnValue(actionQueue, node, prevTransition);
            } catch (error$66) {
              onActionError(actionQueue, node, error$66);
            }
        }
        function handleActionReturnValue(actionQueue, node, returnValue) {
          null !== returnValue && "object" === typeof returnValue && "function" === typeof returnValue.then ? returnValue.then(
            function(nextState) {
              onActionSuccess(actionQueue, node, nextState);
            },
            function(error) {
              return onActionError(actionQueue, node, error);
            }
          ) : onActionSuccess(actionQueue, node, returnValue);
        }
        function onActionSuccess(actionQueue, actionNode, nextState) {
          actionNode.status = "fulfilled";
          actionNode.value = nextState;
          notifyActionListeners(actionNode);
          actionQueue.state = nextState;
          actionNode = actionQueue.pending;
          null !== actionNode && (nextState = actionNode.next, nextState === actionNode ? actionQueue.pending = null : (nextState = nextState.next, actionNode.next = nextState, runActionStateAction(actionQueue, nextState)));
        }
        function onActionError(actionQueue, actionNode, error) {
          var last = actionQueue.pending;
          actionQueue.pending = null;
          if (null !== last) {
            last = last.next;
            do
              actionNode.status = "rejected", actionNode.reason = error, notifyActionListeners(actionNode), actionNode = actionNode.next;
            while (actionNode !== last);
          }
          actionQueue.action = null;
        }
        function notifyActionListeners(actionNode) {
          actionNode = actionNode.listeners;
          for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();
        }
        function actionStateReducer(oldState, newState) {
          return newState;
        }
        function mountActionState(action, initialStateProp) {
          if (isHydrating) {
            var ssrFormState = workInProgressRoot.formState;
            if (null !== ssrFormState) {
              a: {
                var JSCompiler_inline_result = currentlyRenderingFiber;
                if (isHydrating) {
                  if (nextHydratableInstance) {
                    b: {
                      var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;
                      for (var inRootOrSingleton = rootOrSingletonContext; 8 !== JSCompiler_inline_result$jscomp$0.nodeType; ) {
                        if (!inRootOrSingleton) {
                          JSCompiler_inline_result$jscomp$0 = null;
                          break b;
                        }
                        JSCompiler_inline_result$jscomp$0 = getNextHydratable(
                          JSCompiler_inline_result$jscomp$0.nextSibling
                        );
                        if (null === JSCompiler_inline_result$jscomp$0) {
                          JSCompiler_inline_result$jscomp$0 = null;
                          break b;
                        }
                      }
                      inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;
                      JSCompiler_inline_result$jscomp$0 = "F!" === inRootOrSingleton || "F" === inRootOrSingleton ? JSCompiler_inline_result$jscomp$0 : null;
                    }
                    if (JSCompiler_inline_result$jscomp$0) {
                      nextHydratableInstance = getNextHydratable(
                        JSCompiler_inline_result$jscomp$0.nextSibling
                      );
                      JSCompiler_inline_result = "F!" === JSCompiler_inline_result$jscomp$0.data;
                      break a;
                    }
                  }
                  throwOnHydrationMismatch(JSCompiler_inline_result);
                }
                JSCompiler_inline_result = false;
              }
              JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);
            }
          }
          ssrFormState = mountWorkInProgressHook();
          ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;
          JSCompiler_inline_result = {
            pending: null,
            lanes: 0,
            dispatch: null,
            lastRenderedReducer: actionStateReducer,
            lastRenderedState: initialStateProp
          };
          ssrFormState.queue = JSCompiler_inline_result;
          ssrFormState = dispatchSetState.bind(
            null,
            currentlyRenderingFiber,
            JSCompiler_inline_result
          );
          JSCompiler_inline_result.dispatch = ssrFormState;
          JSCompiler_inline_result = mountStateImpl(false);
          inRootOrSingleton = dispatchOptimisticSetState.bind(
            null,
            currentlyRenderingFiber,
            false,
            JSCompiler_inline_result.queue
          );
          JSCompiler_inline_result = mountWorkInProgressHook();
          JSCompiler_inline_result$jscomp$0 = {
            state: initialStateProp,
            dispatch: null,
            action,
            pending: null
          };
          JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;
          ssrFormState = dispatchActionState.bind(
            null,
            currentlyRenderingFiber,
            JSCompiler_inline_result$jscomp$0,
            inRootOrSingleton,
            ssrFormState
          );
          JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;
          JSCompiler_inline_result.memoizedState = action;
          return [initialStateProp, ssrFormState, false];
        }
        function updateActionState(action) {
          var stateHook = updateWorkInProgressHook();
          return updateActionStateImpl(stateHook, currentHook, action);
        }
        function updateActionStateImpl(stateHook, currentStateHook, action) {
          currentStateHook = updateReducerImpl(
            stateHook,
            currentStateHook,
            actionStateReducer
          )[0];
          stateHook = updateReducer(basicStateReducer)[0];
          if ("object" === typeof currentStateHook && null !== currentStateHook && "function" === typeof currentStateHook.then)
            try {
              var state = useThenable(currentStateHook);
            } catch (x) {
              if (x === SuspenseException) throw SuspenseActionException;
              throw x;
            }
          else state = currentStateHook;
          currentStateHook = updateWorkInProgressHook();
          var actionQueue = currentStateHook.queue, dispatch = actionQueue.dispatch;
          action !== currentStateHook.memoizedState && (currentlyRenderingFiber.flags |= 2048, pushSimpleEffect(
            9,
            { destroy: void 0 },
            actionStateActionEffect.bind(null, actionQueue, action),
            null
          ));
          return [state, dispatch, stateHook];
        }
        function actionStateActionEffect(actionQueue, action) {
          actionQueue.action = action;
        }
        function rerenderActionState(action) {
          var stateHook = updateWorkInProgressHook(), currentStateHook = currentHook;
          if (null !== currentStateHook)
            return updateActionStateImpl(stateHook, currentStateHook, action);
          updateWorkInProgressHook();
          stateHook = stateHook.memoizedState;
          currentStateHook = updateWorkInProgressHook();
          var dispatch = currentStateHook.queue.dispatch;
          currentStateHook.memoizedState = action;
          return [stateHook, dispatch, false];
        }
        function pushSimpleEffect(tag, inst, create, deps) {
          tag = { tag, create, deps, inst, next: null };
          inst = currentlyRenderingFiber.updateQueue;
          null === inst && (inst = createFunctionComponentUpdateQueue(), currentlyRenderingFiber.updateQueue = inst);
          create = inst.lastEffect;
          null === create ? inst.lastEffect = tag.next = tag : (deps = create.next, create.next = tag, tag.next = deps, inst.lastEffect = tag);
          return tag;
        }
        function updateRef() {
          return updateWorkInProgressHook().memoizedState;
        }
        function mountEffectImpl(fiberFlags, hookFlags, create, deps) {
          var hook = mountWorkInProgressHook();
          currentlyRenderingFiber.flags |= fiberFlags;
          hook.memoizedState = pushSimpleEffect(
            1 | hookFlags,
            { destroy: void 0 },
            create,
            void 0 === deps ? null : deps
          );
        }
        function updateEffectImpl(fiberFlags, hookFlags, create, deps) {
          var hook = updateWorkInProgressHook();
          deps = void 0 === deps ? null : deps;
          var inst = hook.memoizedState.inst;
          null !== currentHook && null !== deps && areHookInputsEqual(deps, currentHook.memoizedState.deps) ? hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps) : (currentlyRenderingFiber.flags |= fiberFlags, hook.memoizedState = pushSimpleEffect(
            1 | hookFlags,
            inst,
            create,
            deps
          ));
        }
        function mountEffect(create, deps) {
          mountEffectImpl(8390656, 8, create, deps);
        }
        function updateEffect(create, deps) {
          updateEffectImpl(2048, 8, create, deps);
        }
        function useEffectEventImpl(payload) {
          currentlyRenderingFiber.flags |= 4;
          var componentUpdateQueue = currentlyRenderingFiber.updateQueue;
          if (null === componentUpdateQueue)
            componentUpdateQueue = createFunctionComponentUpdateQueue(), currentlyRenderingFiber.updateQueue = componentUpdateQueue, componentUpdateQueue.events = [payload];
          else {
            var events = componentUpdateQueue.events;
            null === events ? componentUpdateQueue.events = [payload] : events.push(payload);
          }
        }
        function updateEvent(callback) {
          var ref = updateWorkInProgressHook().memoizedState;
          useEffectEventImpl({ ref, nextImpl: callback });
          return function() {
            if (0 !== (executionContext & 2)) throw Error(formatProdErrorMessage(440));
            return ref.impl.apply(void 0, arguments);
          };
        }
        function updateInsertionEffect(create, deps) {
          return updateEffectImpl(4, 2, create, deps);
        }
        function updateLayoutEffect(create, deps) {
          return updateEffectImpl(4, 4, create, deps);
        }
        function imperativeHandleEffect(create, ref) {
          if ("function" === typeof ref) {
            create = create();
            var refCleanup = ref(create);
            return function() {
              "function" === typeof refCleanup ? refCleanup() : ref(null);
            };
          }
          if (null !== ref && void 0 !== ref)
            return create = create(), ref.current = create, function() {
              ref.current = null;
            };
        }
        function updateImperativeHandle(ref, create, deps) {
          deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;
          updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);
        }
        function mountDebugValue() {
        }
        function updateCallback(callback, deps) {
          var hook = updateWorkInProgressHook();
          deps = void 0 === deps ? null : deps;
          var prevState = hook.memoizedState;
          if (null !== deps && areHookInputsEqual(deps, prevState[1]))
            return prevState[0];
          hook.memoizedState = [callback, deps];
          return callback;
        }
        function updateMemo(nextCreate, deps) {
          var hook = updateWorkInProgressHook();
          deps = void 0 === deps ? null : deps;
          var prevState = hook.memoizedState;
          if (null !== deps && areHookInputsEqual(deps, prevState[1]))
            return prevState[0];
          prevState = nextCreate();
          if (shouldDoubleInvokeUserFnsInHooksDEV) {
            setIsStrictModeForDevtools(true);
            try {
              nextCreate();
            } finally {
              setIsStrictModeForDevtools(false);
            }
          }
          hook.memoizedState = [prevState, deps];
          return prevState;
        }
        function mountDeferredValueImpl(hook, value, initialValue) {
          if (void 0 === initialValue || 0 !== (renderLanes & 1073741824) && 0 === (workInProgressRootRenderLanes & 261930))
            return hook.memoizedState = value;
          hook.memoizedState = initialValue;
          hook = requestDeferredLane();
          currentlyRenderingFiber.lanes |= hook;
          workInProgressRootSkippedLanes |= hook;
          return initialValue;
        }
        function updateDeferredValueImpl(hook, prevValue, value, initialValue) {
          if (objectIs(value, prevValue)) return value;
          if (null !== currentTreeHiddenStackCursor.current)
            return hook = mountDeferredValueImpl(hook, value, initialValue), objectIs(hook, prevValue) || (didReceiveUpdate = true), hook;
          if (0 === (renderLanes & 42) || 0 !== (renderLanes & 1073741824) && 0 === (workInProgressRootRenderLanes & 261930))
            return didReceiveUpdate = true, hook.memoizedState = value;
          hook = requestDeferredLane();
          currentlyRenderingFiber.lanes |= hook;
          workInProgressRootSkippedLanes |= hook;
          return prevValue;
        }
        function startTransition(fiber, queue, pendingState, finishedState, callback) {
          var previousPriority = ReactDOMSharedInternals.p;
          ReactDOMSharedInternals.p = 0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;
          var prevTransition = ReactSharedInternals.T, currentTransition = {};
          ReactSharedInternals.T = currentTransition;
          dispatchOptimisticSetState(fiber, false, queue, pendingState);
          try {
            var returnValue = callback(), onStartTransitionFinish = ReactSharedInternals.S;
            null !== onStartTransitionFinish && onStartTransitionFinish(currentTransition, returnValue);
            if (null !== returnValue && "object" === typeof returnValue && "function" === typeof returnValue.then) {
              var thenableForFinishedState = chainThenableValue(
                returnValue,
                finishedState
              );
              dispatchSetStateInternal(
                fiber,
                queue,
                thenableForFinishedState,
                requestUpdateLane(fiber)
              );
            } else
              dispatchSetStateInternal(
                fiber,
                queue,
                finishedState,
                requestUpdateLane(fiber)
              );
          } catch (error) {
            dispatchSetStateInternal(
              fiber,
              queue,
              { then: function() {
              }, status: "rejected", reason: error },
              requestUpdateLane()
            );
          } finally {
            ReactDOMSharedInternals.p = previousPriority, null !== prevTransition && null !== currentTransition.types && (prevTransition.types = currentTransition.types), ReactSharedInternals.T = prevTransition;
          }
        }
        function noop() {
        }
        function startHostTransition(formFiber, pendingState, action, formData) {
          if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));
          var queue = ensureFormComponentIsStateful(formFiber).queue;
          startTransition(
            formFiber,
            queue,
            pendingState,
            sharedNotPendingObject,
            null === action ? noop : function() {
              requestFormReset$1(formFiber);
              return action(formData);
            }
          );
        }
        function ensureFormComponentIsStateful(formFiber) {
          var existingStateHook = formFiber.memoizedState;
          if (null !== existingStateHook) return existingStateHook;
          existingStateHook = {
            memoizedState: sharedNotPendingObject,
            baseState: sharedNotPendingObject,
            baseQueue: null,
            queue: {
              pending: null,
              lanes: 0,
              dispatch: null,
              lastRenderedReducer: basicStateReducer,
              lastRenderedState: sharedNotPendingObject
            },
            next: null
          };
          var initialResetState = {};
          existingStateHook.next = {
            memoizedState: initialResetState,
            baseState: initialResetState,
            baseQueue: null,
            queue: {
              pending: null,
              lanes: 0,
              dispatch: null,
              lastRenderedReducer: basicStateReducer,
              lastRenderedState: initialResetState
            },
            next: null
          };
          formFiber.memoizedState = existingStateHook;
          formFiber = formFiber.alternate;
          null !== formFiber && (formFiber.memoizedState = existingStateHook);
          return existingStateHook;
        }
        function requestFormReset$1(formFiber) {
          var stateHook = ensureFormComponentIsStateful(formFiber);
          null === stateHook.next && (stateHook = formFiber.alternate.memoizedState);
          dispatchSetStateInternal(
            formFiber,
            stateHook.next.queue,
            {},
            requestUpdateLane()
          );
        }
        function useHostTransitionStatus() {
          return readContext(HostTransitionContext);
        }
        function updateId() {
          return updateWorkInProgressHook().memoizedState;
        }
        function updateRefresh() {
          return updateWorkInProgressHook().memoizedState;
        }
        function refreshCache(fiber) {
          for (var provider2 = fiber.return; null !== provider2; ) {
            switch (provider2.tag) {
              case 24:
              case 3:
                var lane = requestUpdateLane();
                fiber = createUpdate(lane);
                var root$69 = enqueueUpdate(provider2, fiber, lane);
                null !== root$69 && (scheduleUpdateOnFiber(root$69, provider2, lane), entangleTransitions(root$69, provider2, lane));
                provider2 = { cache: createCache() };
                fiber.payload = provider2;
                return;
            }
            provider2 = provider2.return;
          }
        }
        function dispatchReducerAction(fiber, queue, action) {
          var lane = requestUpdateLane();
          action = {
            lane,
            revertLane: 0,
            gesture: null,
            action,
            hasEagerState: false,
            eagerState: null,
            next: null
          };
          isRenderPhaseUpdate(fiber) ? enqueueRenderPhaseUpdate(queue, action) : (action = enqueueConcurrentHookUpdate(fiber, queue, action, lane), null !== action && (scheduleUpdateOnFiber(action, fiber, lane), entangleTransitionUpdate(action, queue, lane)));
        }
        function dispatchSetState(fiber, queue, action) {
          var lane = requestUpdateLane();
          dispatchSetStateInternal(fiber, queue, action, lane);
        }
        function dispatchSetStateInternal(fiber, queue, action, lane) {
          var update = {
            lane,
            revertLane: 0,
            gesture: null,
            action,
            hasEagerState: false,
            eagerState: null,
            next: null
          };
          if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);
          else {
            var alternate = fiber.alternate;
            if (0 === fiber.lanes && (null === alternate || 0 === alternate.lanes) && (alternate = queue.lastRenderedReducer, null !== alternate))
              try {
                var currentState = queue.lastRenderedState, eagerState = alternate(currentState, action);
                update.hasEagerState = true;
                update.eagerState = eagerState;
                if (objectIs(eagerState, currentState))
                  return enqueueUpdate$1(fiber, queue, update, 0), null === workInProgressRoot && finishQueueingConcurrentUpdates(), false;
              } catch (error) {
              } finally {
              }
            action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);
            if (null !== action)
              return scheduleUpdateOnFiber(action, fiber, lane), entangleTransitionUpdate(action, queue, lane), true;
          }
          return false;
        }
        function dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {
          action = {
            lane: 2,
            revertLane: requestTransitionLane(),
            gesture: null,
            action,
            hasEagerState: false,
            eagerState: null,
            next: null
          };
          if (isRenderPhaseUpdate(fiber)) {
            if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));
          } else
            throwIfDuringRender = enqueueConcurrentHookUpdate(
              fiber,
              queue,
              action,
              2
            ), null !== throwIfDuringRender && scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);
        }
        function isRenderPhaseUpdate(fiber) {
          var alternate = fiber.alternate;
          return fiber === currentlyRenderingFiber || null !== alternate && alternate === currentlyRenderingFiber;
        }
        function enqueueRenderPhaseUpdate(queue, update) {
          didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate = true;
          var pending = queue.pending;
          null === pending ? update.next = update : (update.next = pending.next, pending.next = update);
          queue.pending = update;
        }
        function entangleTransitionUpdate(root2, queue, lane) {
          if (0 !== (lane & 4194048)) {
            var queueLanes = queue.lanes;
            queueLanes &= root2.pendingLanes;
            lane |= queueLanes;
            queue.lanes = lane;
            markRootEntangled(root2, lane);
          }
        }
        var ContextOnlyDispatcher = {
          readContext,
          use,
          useCallback: throwInvalidHookError,
          useContext: throwInvalidHookError,
          useEffect: throwInvalidHookError,
          useImperativeHandle: throwInvalidHookError,
          useLayoutEffect: throwInvalidHookError,
          useInsertionEffect: throwInvalidHookError,
          useMemo: throwInvalidHookError,
          useReducer: throwInvalidHookError,
          useRef: throwInvalidHookError,
          useState: throwInvalidHookError,
          useDebugValue: throwInvalidHookError,
          useDeferredValue: throwInvalidHookError,
          useTransition: throwInvalidHookError,
          useSyncExternalStore: throwInvalidHookError,
          useId: throwInvalidHookError,
          useHostTransitionStatus: throwInvalidHookError,
          useFormState: throwInvalidHookError,
          useActionState: throwInvalidHookError,
          useOptimistic: throwInvalidHookError,
          useMemoCache: throwInvalidHookError,
          useCacheRefresh: throwInvalidHookError
        };
        ContextOnlyDispatcher.useEffectEvent = throwInvalidHookError;
        var HooksDispatcherOnMount = {
          readContext,
          use,
          useCallback: function(callback, deps) {
            mountWorkInProgressHook().memoizedState = [
              callback,
              void 0 === deps ? null : deps
            ];
            return callback;
          },
          useContext: readContext,
          useEffect: mountEffect,
          useImperativeHandle: function(ref, create, deps) {
            deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;
            mountEffectImpl(
              4194308,
              4,
              imperativeHandleEffect.bind(null, create, ref),
              deps
            );
          },
          useLayoutEffect: function(create, deps) {
            return mountEffectImpl(4194308, 4, create, deps);
          },
          useInsertionEffect: function(create, deps) {
            mountEffectImpl(4, 2, create, deps);
          },
          useMemo: function(nextCreate, deps) {
            var hook = mountWorkInProgressHook();
            deps = void 0 === deps ? null : deps;
            var nextValue = nextCreate();
            if (shouldDoubleInvokeUserFnsInHooksDEV) {
              setIsStrictModeForDevtools(true);
              try {
                nextCreate();
              } finally {
                setIsStrictModeForDevtools(false);
              }
            }
            hook.memoizedState = [nextValue, deps];
            return nextValue;
          },
          useReducer: function(reducer, initialArg, init) {
            var hook = mountWorkInProgressHook();
            if (void 0 !== init) {
              var initialState = init(initialArg);
              if (shouldDoubleInvokeUserFnsInHooksDEV) {
                setIsStrictModeForDevtools(true);
                try {
                  init(initialArg);
                } finally {
                  setIsStrictModeForDevtools(false);
                }
              }
            } else initialState = initialArg;
            hook.memoizedState = hook.baseState = initialState;
            reducer = {
              pending: null,
              lanes: 0,
              dispatch: null,
              lastRenderedReducer: reducer,
              lastRenderedState: initialState
            };
            hook.queue = reducer;
            reducer = reducer.dispatch = dispatchReducerAction.bind(
              null,
              currentlyRenderingFiber,
              reducer
            );
            return [hook.memoizedState, reducer];
          },
          useRef: function(initialValue) {
            var hook = mountWorkInProgressHook();
            initialValue = { current: initialValue };
            return hook.memoizedState = initialValue;
          },
          useState: function(initialState) {
            initialState = mountStateImpl(initialState);
            var queue = initialState.queue, dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);
            queue.dispatch = dispatch;
            return [initialState.memoizedState, dispatch];
          },
          useDebugValue: mountDebugValue,
          useDeferredValue: function(value, initialValue) {
            var hook = mountWorkInProgressHook();
            return mountDeferredValueImpl(hook, value, initialValue);
          },
          useTransition: function() {
            var stateHook = mountStateImpl(false);
            stateHook = startTransition.bind(
              null,
              currentlyRenderingFiber,
              stateHook.queue,
              true,
              false
            );
            mountWorkInProgressHook().memoizedState = stateHook;
            return [false, stateHook];
          },
          useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {
            var fiber = currentlyRenderingFiber, hook = mountWorkInProgressHook();
            if (isHydrating) {
              if (void 0 === getServerSnapshot)
                throw Error(formatProdErrorMessage(407));
              getServerSnapshot = getServerSnapshot();
            } else {
              getServerSnapshot = getSnapshot();
              if (null === workInProgressRoot)
                throw Error(formatProdErrorMessage(349));
              0 !== (workInProgressRootRenderLanes & 127) || pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);
            }
            hook.memoizedState = getServerSnapshot;
            var inst = { value: getServerSnapshot, getSnapshot };
            hook.queue = inst;
            mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [
              subscribe
            ]);
            fiber.flags |= 2048;
            pushSimpleEffect(
              9,
              { destroy: void 0 },
              updateStoreInstance.bind(
                null,
                fiber,
                inst,
                getServerSnapshot,
                getSnapshot
              ),
              null
            );
            return getServerSnapshot;
          },
          useId: function() {
            var hook = mountWorkInProgressHook(), identifierPrefix = workInProgressRoot.identifierPrefix;
            if (isHydrating) {
              var JSCompiler_inline_result = treeContextOverflow;
              var idWithLeadingBit = treeContextId;
              JSCompiler_inline_result = (idWithLeadingBit & ~(1 << 32 - clz32(idWithLeadingBit) - 1)).toString(32) + JSCompiler_inline_result;
              identifierPrefix = "_" + identifierPrefix + "R_" + JSCompiler_inline_result;
              JSCompiler_inline_result = localIdCounter++;
              0 < JSCompiler_inline_result && (identifierPrefix += "H" + JSCompiler_inline_result.toString(32));
              identifierPrefix += "_";
            } else
              JSCompiler_inline_result = globalClientIdCounter++, identifierPrefix = "_" + identifierPrefix + "r_" + JSCompiler_inline_result.toString(32) + "_";
            return hook.memoizedState = identifierPrefix;
          },
          useHostTransitionStatus,
          useFormState: mountActionState,
          useActionState: mountActionState,
          useOptimistic: function(passthrough) {
            var hook = mountWorkInProgressHook();
            hook.memoizedState = hook.baseState = passthrough;
            var queue = {
              pending: null,
              lanes: 0,
              dispatch: null,
              lastRenderedReducer: null,
              lastRenderedState: null
            };
            hook.queue = queue;
            hook = dispatchOptimisticSetState.bind(
              null,
              currentlyRenderingFiber,
              true,
              queue
            );
            queue.dispatch = hook;
            return [passthrough, hook];
          },
          useMemoCache,
          useCacheRefresh: function() {
            return mountWorkInProgressHook().memoizedState = refreshCache.bind(
              null,
              currentlyRenderingFiber
            );
          },
          useEffectEvent: function(callback) {
            var hook = mountWorkInProgressHook(), ref = { impl: callback };
            hook.memoizedState = ref;
            return function() {
              if (0 !== (executionContext & 2))
                throw Error(formatProdErrorMessage(440));
              return ref.impl.apply(void 0, arguments);
            };
          }
        }, HooksDispatcherOnUpdate = {
          readContext,
          use,
          useCallback: updateCallback,
          useContext: readContext,
          useEffect: updateEffect,
          useImperativeHandle: updateImperativeHandle,
          useInsertionEffect: updateInsertionEffect,
          useLayoutEffect: updateLayoutEffect,
          useMemo: updateMemo,
          useReducer: updateReducer,
          useRef: updateRef,
          useState: function() {
            return updateReducer(basicStateReducer);
          },
          useDebugValue: mountDebugValue,
          useDeferredValue: function(value, initialValue) {
            var hook = updateWorkInProgressHook();
            return updateDeferredValueImpl(
              hook,
              currentHook.memoizedState,
              value,
              initialValue
            );
          },
          useTransition: function() {
            var booleanOrThenable = updateReducer(basicStateReducer)[0], start = updateWorkInProgressHook().memoizedState;
            return [
              "boolean" === typeof booleanOrThenable ? booleanOrThenable : useThenable(booleanOrThenable),
              start
            ];
          },
          useSyncExternalStore: updateSyncExternalStore,
          useId: updateId,
          useHostTransitionStatus,
          useFormState: updateActionState,
          useActionState: updateActionState,
          useOptimistic: function(passthrough, reducer) {
            var hook = updateWorkInProgressHook();
            return updateOptimisticImpl(hook, currentHook, passthrough, reducer);
          },
          useMemoCache,
          useCacheRefresh: updateRefresh
        };
        HooksDispatcherOnUpdate.useEffectEvent = updateEvent;
        var HooksDispatcherOnRerender = {
          readContext,
          use,
          useCallback: updateCallback,
          useContext: readContext,
          useEffect: updateEffect,
          useImperativeHandle: updateImperativeHandle,
          useInsertionEffect: updateInsertionEffect,
          useLayoutEffect: updateLayoutEffect,
          useMemo: updateMemo,
          useReducer: rerenderReducer,
          useRef: updateRef,
          useState: function() {
            return rerenderReducer(basicStateReducer);
          },
          useDebugValue: mountDebugValue,
          useDeferredValue: function(value, initialValue) {
            var hook = updateWorkInProgressHook();
            return null === currentHook ? mountDeferredValueImpl(hook, value, initialValue) : updateDeferredValueImpl(
              hook,
              currentHook.memoizedState,
              value,
              initialValue
            );
          },
          useTransition: function() {
            var booleanOrThenable = rerenderReducer(basicStateReducer)[0], start = updateWorkInProgressHook().memoizedState;
            return [
              "boolean" === typeof booleanOrThenable ? booleanOrThenable : useThenable(booleanOrThenable),
              start
            ];
          },
          useSyncExternalStore: updateSyncExternalStore,
          useId: updateId,
          useHostTransitionStatus,
          useFormState: rerenderActionState,
          useActionState: rerenderActionState,
          useOptimistic: function(passthrough, reducer) {
            var hook = updateWorkInProgressHook();
            if (null !== currentHook)
              return updateOptimisticImpl(hook, currentHook, passthrough, reducer);
            hook.baseState = passthrough;
            return [passthrough, hook.queue.dispatch];
          },
          useMemoCache,
          useCacheRefresh: updateRefresh
        };
        HooksDispatcherOnRerender.useEffectEvent = updateEvent;
        function applyDerivedStateFromProps(workInProgress2, ctor, getDerivedStateFromProps, nextProps) {
          ctor = workInProgress2.memoizedState;
          getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);
          getDerivedStateFromProps = null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps ? ctor : assign({}, ctor, getDerivedStateFromProps);
          workInProgress2.memoizedState = getDerivedStateFromProps;
          0 === workInProgress2.lanes && (workInProgress2.updateQueue.baseState = getDerivedStateFromProps);
        }
        var classComponentUpdater = {
          enqueueSetState: function(inst, payload, callback) {
            inst = inst._reactInternals;
            var lane = requestUpdateLane(), update = createUpdate(lane);
            update.payload = payload;
            void 0 !== callback && null !== callback && (update.callback = callback);
            payload = enqueueUpdate(inst, update, lane);
            null !== payload && (scheduleUpdateOnFiber(payload, inst, lane), entangleTransitions(payload, inst, lane));
          },
          enqueueReplaceState: function(inst, payload, callback) {
            inst = inst._reactInternals;
            var lane = requestUpdateLane(), update = createUpdate(lane);
            update.tag = 1;
            update.payload = payload;
            void 0 !== callback && null !== callback && (update.callback = callback);
            payload = enqueueUpdate(inst, update, lane);
            null !== payload && (scheduleUpdateOnFiber(payload, inst, lane), entangleTransitions(payload, inst, lane));
          },
          enqueueForceUpdate: function(inst, callback) {
            inst = inst._reactInternals;
            var lane = requestUpdateLane(), update = createUpdate(lane);
            update.tag = 2;
            void 0 !== callback && null !== callback && (update.callback = callback);
            callback = enqueueUpdate(inst, update, lane);
            null !== callback && (scheduleUpdateOnFiber(callback, inst, lane), entangleTransitions(callback, inst, lane));
          }
        };
        function checkShouldComponentUpdate(workInProgress2, ctor, oldProps, newProps, oldState, newState, nextContext) {
          workInProgress2 = workInProgress2.stateNode;
          return "function" === typeof workInProgress2.shouldComponentUpdate ? workInProgress2.shouldComponentUpdate(newProps, newState, nextContext) : ctor.prototype && ctor.prototype.isPureReactComponent ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState) : true;
        }
        function callComponentWillReceiveProps(workInProgress2, instance, newProps, nextContext) {
          workInProgress2 = instance.state;
          "function" === typeof instance.componentWillReceiveProps && instance.componentWillReceiveProps(newProps, nextContext);
          "function" === typeof instance.UNSAFE_componentWillReceiveProps && instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);
          instance.state !== workInProgress2 && classComponentUpdater.enqueueReplaceState(instance, instance.state, null);
        }
        function resolveClassComponentProps(Component, baseProps) {
          var newProps = baseProps;
          if ("ref" in baseProps) {
            newProps = {};
            for (var propName in baseProps)
              "ref" !== propName && (newProps[propName] = baseProps[propName]);
          }
          if (Component = Component.defaultProps) {
            newProps === baseProps && (newProps = assign({}, newProps));
            for (var propName$73 in Component)
              void 0 === newProps[propName$73] && (newProps[propName$73] = Component[propName$73]);
          }
          return newProps;
        }
        function defaultOnUncaughtError(error) {
          reportGlobalError(error);
        }
        function defaultOnCaughtError(error) {
          console.error(error);
        }
        function defaultOnRecoverableError(error) {
          reportGlobalError(error);
        }
        function logUncaughtError(root2, errorInfo) {
          try {
            var onUncaughtError = root2.onUncaughtError;
            onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });
          } catch (e$74) {
            setTimeout(function() {
              throw e$74;
            });
          }
        }
        function logCaughtError(root2, boundary, errorInfo) {
          try {
            var onCaughtError = root2.onCaughtError;
            onCaughtError(errorInfo.value, {
              componentStack: errorInfo.stack,
              errorBoundary: 1 === boundary.tag ? boundary.stateNode : null
            });
          } catch (e$75) {
            setTimeout(function() {
              throw e$75;
            });
          }
        }
        function createRootErrorUpdate(root2, errorInfo, lane) {
          lane = createUpdate(lane);
          lane.tag = 3;
          lane.payload = { element: null };
          lane.callback = function() {
            logUncaughtError(root2, errorInfo);
          };
          return lane;
        }
        function createClassErrorUpdate(lane) {
          lane = createUpdate(lane);
          lane.tag = 3;
          return lane;
        }
        function initializeClassErrorUpdate(update, root2, fiber, errorInfo) {
          var getDerivedStateFromError = fiber.type.getDerivedStateFromError;
          if ("function" === typeof getDerivedStateFromError) {
            var error = errorInfo.value;
            update.payload = function() {
              return getDerivedStateFromError(error);
            };
            update.callback = function() {
              logCaughtError(root2, fiber, errorInfo);
            };
          }
          var inst = fiber.stateNode;
          null !== inst && "function" === typeof inst.componentDidCatch && (update.callback = function() {
            logCaughtError(root2, fiber, errorInfo);
            "function" !== typeof getDerivedStateFromError && (null === legacyErrorBoundariesThatAlreadyFailed ? legacyErrorBoundariesThatAlreadyFailed = new Set([this]) : legacyErrorBoundariesThatAlreadyFailed.add(this));
            var stack = errorInfo.stack;
            this.componentDidCatch(errorInfo.value, {
              componentStack: null !== stack ? stack : ""
            });
          });
        }
        function throwException(root2, returnFiber, sourceFiber, value, rootRenderLanes) {
          sourceFiber.flags |= 32768;
          if (null !== value && "object" === typeof value && "function" === typeof value.then) {
            returnFiber = sourceFiber.alternate;
            null !== returnFiber && propagateParentContextChanges(
              returnFiber,
              sourceFiber,
              rootRenderLanes,
              true
            );
            sourceFiber = suspenseHandlerStackCursor.current;
            if (null !== sourceFiber) {
              switch (sourceFiber.tag) {
                case 31:
                case 13:
                  return null === shellBoundary ? renderDidSuspendDelayIfPossible() : null === sourceFiber.alternate && 0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 3), sourceFiber.flags &= -257, sourceFiber.flags |= 65536, sourceFiber.lanes = rootRenderLanes, value === noopSuspenseyCommitThenable ? sourceFiber.flags |= 16384 : (returnFiber = sourceFiber.updateQueue, null === returnFiber ? sourceFiber.updateQueue = new Set([value]) : returnFiber.add(value), attachPingListener(root2, value, rootRenderLanes)), false;
                case 22:
                  return sourceFiber.flags |= 65536, value === noopSuspenseyCommitThenable ? sourceFiber.flags |= 16384 : (returnFiber = sourceFiber.updateQueue, null === returnFiber ? (returnFiber = {
                    transitions: null,
                    markerInstances: null,
                    retryQueue: new Set([value])
                  }, sourceFiber.updateQueue = returnFiber) : (sourceFiber = returnFiber.retryQueue, null === sourceFiber ? returnFiber.retryQueue = new Set([value]) : sourceFiber.add(value)), attachPingListener(root2, value, rootRenderLanes)), false;
              }
              throw Error(formatProdErrorMessage(435, sourceFiber.tag));
            }
            attachPingListener(root2, value, rootRenderLanes);
            renderDidSuspendDelayIfPossible();
            return false;
          }
          if (isHydrating)
            return returnFiber = suspenseHandlerStackCursor.current, null !== returnFiber ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256), returnFiber.flags |= 65536, returnFiber.lanes = rootRenderLanes, value !== HydrationMismatchException && (root2 = Error(formatProdErrorMessage(422), { cause: value }), queueHydrationError(createCapturedValueAtFiber(root2, sourceFiber)))) : (value !== HydrationMismatchException && (returnFiber = Error(formatProdErrorMessage(423), {
              cause: value
            }), queueHydrationError(
              createCapturedValueAtFiber(returnFiber, sourceFiber)
            )), root2 = root2.current.alternate, root2.flags |= 65536, rootRenderLanes &= -rootRenderLanes, root2.lanes |= rootRenderLanes, value = createCapturedValueAtFiber(value, sourceFiber), rootRenderLanes = createRootErrorUpdate(
              root2.stateNode,
              value,
              rootRenderLanes
            ), enqueueCapturedUpdate(root2, rootRenderLanes), 4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2)), false;
          var wrapperError = Error(formatProdErrorMessage(520), { cause: value });
          wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);
          null === workInProgressRootConcurrentErrors ? workInProgressRootConcurrentErrors = [wrapperError] : workInProgressRootConcurrentErrors.push(wrapperError);
          4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);
          if (null === returnFiber) return true;
          value = createCapturedValueAtFiber(value, sourceFiber);
          sourceFiber = returnFiber;
          do {
            switch (sourceFiber.tag) {
              case 3:
                return sourceFiber.flags |= 65536, root2 = rootRenderLanes & -rootRenderLanes, sourceFiber.lanes |= root2, root2 = createRootErrorUpdate(sourceFiber.stateNode, value, root2), enqueueCapturedUpdate(sourceFiber, root2), false;
              case 1:
                if (returnFiber = sourceFiber.type, wrapperError = sourceFiber.stateNode, 0 === (sourceFiber.flags & 128) && ("function" === typeof returnFiber.getDerivedStateFromError || null !== wrapperError && "function" === typeof wrapperError.componentDidCatch && (null === legacyErrorBoundariesThatAlreadyFailed || !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError))))
                  return sourceFiber.flags |= 65536, rootRenderLanes &= -rootRenderLanes, sourceFiber.lanes |= rootRenderLanes, rootRenderLanes = createClassErrorUpdate(rootRenderLanes), initializeClassErrorUpdate(
                    rootRenderLanes,
                    root2,
                    sourceFiber,
                    value
                  ), enqueueCapturedUpdate(sourceFiber, rootRenderLanes), false;
            }
            sourceFiber = sourceFiber.return;
          } while (null !== sourceFiber);
          return false;
        }
        var SelectiveHydrationException = Error(formatProdErrorMessage(461)), didReceiveUpdate = false;
        function reconcileChildren(current, workInProgress2, nextChildren, renderLanes2) {
          workInProgress2.child = null === current ? mountChildFibers(workInProgress2, null, nextChildren, renderLanes2) : reconcileChildFibers(
            workInProgress2,
            current.child,
            nextChildren,
            renderLanes2
          );
        }
        function updateForwardRef(current, workInProgress2, Component, nextProps, renderLanes2) {
          Component = Component.render;
          var ref = workInProgress2.ref;
          if ("ref" in nextProps) {
            var propsWithoutRef = {};
            for (var key in nextProps)
              "ref" !== key && (propsWithoutRef[key] = nextProps[key]);
          } else propsWithoutRef = nextProps;
          prepareToReadContext(workInProgress2);
          nextProps = renderWithHooks(
            current,
            workInProgress2,
            Component,
            propsWithoutRef,
            ref,
            renderLanes2
          );
          key = checkDidRenderIdHook();
          if (null !== current && !didReceiveUpdate)
            return bailoutHooks(current, workInProgress2, renderLanes2), bailoutOnAlreadyFinishedWork(current, workInProgress2, renderLanes2);
          isHydrating && key && pushMaterializedTreeId(workInProgress2);
          workInProgress2.flags |= 1;
          reconcileChildren(current, workInProgress2, nextProps, renderLanes2);
          return workInProgress2.child;
        }
        function updateMemoComponent(current, workInProgress2, Component, nextProps, renderLanes2) {
          if (null === current) {
            var type = Component.type;
            if ("function" === typeof type && !shouldConstruct(type) && void 0 === type.defaultProps && null === Component.compare)
              return workInProgress2.tag = 15, workInProgress2.type = type, updateSimpleMemoComponent(
                current,
                workInProgress2,
                type,
                nextProps,
                renderLanes2
              );
            current = createFiberFromTypeAndProps(
              Component.type,
              null,
              nextProps,
              workInProgress2,
              workInProgress2.mode,
              renderLanes2
            );
            current.ref = workInProgress2.ref;
            current.return = workInProgress2;
            return workInProgress2.child = current;
          }
          type = current.child;
          if (!checkScheduledUpdateOrContext(current, renderLanes2)) {
            var prevProps = type.memoizedProps;
            Component = Component.compare;
            Component = null !== Component ? Component : shallowEqual;
            if (Component(prevProps, nextProps) && current.ref === workInProgress2.ref)
              return bailoutOnAlreadyFinishedWork(current, workInProgress2, renderLanes2);
          }
          workInProgress2.flags |= 1;
          current = createWorkInProgress(type, nextProps);
          current.ref = workInProgress2.ref;
          current.return = workInProgress2;
          return workInProgress2.child = current;
        }
        function updateSimpleMemoComponent(current, workInProgress2, Component, nextProps, renderLanes2) {
          if (null !== current) {
            var prevProps = current.memoizedProps;
            if (shallowEqual(prevProps, nextProps) && current.ref === workInProgress2.ref)
              if (didReceiveUpdate = false, workInProgress2.pendingProps = nextProps = prevProps, checkScheduledUpdateOrContext(current, renderLanes2))
                0 !== (current.flags & 131072) && (didReceiveUpdate = true);
              else
                return workInProgress2.lanes = current.lanes, bailoutOnAlreadyFinishedWork(current, workInProgress2, renderLanes2);
          }
          return updateFunctionComponent(
            current,
            workInProgress2,
            Component,
            nextProps,
            renderLanes2
          );
        }
        function updateOffscreenComponent(current, workInProgress2, renderLanes2, nextProps) {
          var nextChildren = nextProps.children, prevState = null !== current ? current.memoizedState : null;
          null === current && null === workInProgress2.stateNode && (workInProgress2.stateNode = {
            _visibility: 1,
            _pendingMarkers: null,
            _retryCache: null,
            _transitions: null
          });
          if ("hidden" === nextProps.mode) {
            if (0 !== (workInProgress2.flags & 128)) {
              prevState = null !== prevState ? prevState.baseLanes | renderLanes2 : renderLanes2;
              if (null !== current) {
                nextProps = workInProgress2.child = current.child;
                for (nextChildren = 0; null !== nextProps; )
                  nextChildren = nextChildren | nextProps.lanes | nextProps.childLanes, nextProps = nextProps.sibling;
                nextProps = nextChildren & ~prevState;
              } else nextProps = 0, workInProgress2.child = null;
              return deferHiddenOffscreenComponent(
                current,
                workInProgress2,
                prevState,
                renderLanes2,
                nextProps
              );
            }
            if (0 !== (renderLanes2 & 536870912))
              workInProgress2.memoizedState = { baseLanes: 0, cachePool: null }, null !== current && pushTransition(
                workInProgress2,
                null !== prevState ? prevState.cachePool : null
              ), null !== prevState ? pushHiddenContext(workInProgress2, prevState) : reuseHiddenContextOnStack(), pushOffscreenSuspenseHandler(workInProgress2);
            else
              return nextProps = workInProgress2.lanes = 536870912, deferHiddenOffscreenComponent(
                current,
                workInProgress2,
                null !== prevState ? prevState.baseLanes | renderLanes2 : renderLanes2,
                renderLanes2,
                nextProps
              );
          } else
            null !== prevState ? (pushTransition(workInProgress2, prevState.cachePool), pushHiddenContext(workInProgress2, prevState), reuseSuspenseHandlerOnStack(), workInProgress2.memoizedState = null) : (null !== current && pushTransition(workInProgress2, null), reuseHiddenContextOnStack(), reuseSuspenseHandlerOnStack());
          reconcileChildren(current, workInProgress2, nextChildren, renderLanes2);
          return workInProgress2.child;
        }
        function bailoutOffscreenComponent(current, workInProgress2) {
          null !== current && 22 === current.tag || null !== workInProgress2.stateNode || (workInProgress2.stateNode = {
            _visibility: 1,
            _pendingMarkers: null,
            _retryCache: null,
            _transitions: null
          });
          return workInProgress2.sibling;
        }
        function deferHiddenOffscreenComponent(current, workInProgress2, nextBaseLanes, renderLanes2, remainingChildLanes) {
          var JSCompiler_inline_result = peekCacheFromPool();
          JSCompiler_inline_result = null === JSCompiler_inline_result ? null : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };
          workInProgress2.memoizedState = {
            baseLanes: nextBaseLanes,
            cachePool: JSCompiler_inline_result
          };
          null !== current && pushTransition(workInProgress2, null);
          reuseHiddenContextOnStack();
          pushOffscreenSuspenseHandler(workInProgress2);
          null !== current && propagateParentContextChanges(current, workInProgress2, renderLanes2, true);
          workInProgress2.childLanes = remainingChildLanes;
          return null;
        }
        function mountActivityChildren(workInProgress2, nextProps) {
          nextProps = mountWorkInProgressOffscreenFiber(
            { mode: nextProps.mode, children: nextProps.children },
            workInProgress2.mode
          );
          nextProps.ref = workInProgress2.ref;
          workInProgress2.child = nextProps;
          nextProps.return = workInProgress2;
          return nextProps;
        }
        function retryActivityComponentWithoutHydrating(current, workInProgress2, renderLanes2) {
          reconcileChildFibers(workInProgress2, current.child, null, renderLanes2);
          current = mountActivityChildren(workInProgress2, workInProgress2.pendingProps);
          current.flags |= 2;
          popSuspenseHandler(workInProgress2);
          workInProgress2.memoizedState = null;
          return current;
        }
        function updateActivityComponent(current, workInProgress2, renderLanes2) {
          var nextProps = workInProgress2.pendingProps, didSuspend = 0 !== (workInProgress2.flags & 128);
          workInProgress2.flags &= -129;
          if (null === current) {
            if (isHydrating) {
              if ("hidden" === nextProps.mode)
                return current = mountActivityChildren(workInProgress2, nextProps), workInProgress2.lanes = 536870912, bailoutOffscreenComponent(null, current);
              pushDehydratedActivitySuspenseHandler(workInProgress2);
              (current = nextHydratableInstance) ? (current = canHydrateHydrationBoundary(
                current,
                rootOrSingletonContext
              ), current = null !== current && "&" === current.data ? current : null, null !== current && (workInProgress2.memoizedState = {
                dehydrated: current,
                treeContext: null !== treeContextProvider ? { id: treeContextId, overflow: treeContextOverflow } : null,
                retryLane: 536870912,
                hydrationErrors: null
              }, renderLanes2 = createFiberFromDehydratedFragment(current), renderLanes2.return = workInProgress2, workInProgress2.child = renderLanes2, hydrationParentFiber = workInProgress2, nextHydratableInstance = null)) : current = null;
              if (null === current) throw throwOnHydrationMismatch(workInProgress2);
              workInProgress2.lanes = 536870912;
              return null;
            }
            return mountActivityChildren(workInProgress2, nextProps);
          }
          var prevState = current.memoizedState;
          if (null !== prevState) {
            var dehydrated = prevState.dehydrated;
            pushDehydratedActivitySuspenseHandler(workInProgress2);
            if (didSuspend)
              if (workInProgress2.flags & 256)
                workInProgress2.flags &= -257, workInProgress2 = retryActivityComponentWithoutHydrating(
                  current,
                  workInProgress2,
                  renderLanes2
                );
              else if (null !== workInProgress2.memoizedState)
                workInProgress2.child = current.child, workInProgress2.flags |= 128, workInProgress2 = null;
              else throw Error(formatProdErrorMessage(558));
            else if (didReceiveUpdate || propagateParentContextChanges(current, workInProgress2, renderLanes2, false), didSuspend = 0 !== (renderLanes2 & current.childLanes), didReceiveUpdate || didSuspend) {
              nextProps = workInProgressRoot;
              if (null !== nextProps && (dehydrated = getBumpedLaneForHydration(nextProps, renderLanes2), 0 !== dehydrated && dehydrated !== prevState.retryLane))
                throw prevState.retryLane = dehydrated, enqueueConcurrentRenderForLane(current, dehydrated), scheduleUpdateOnFiber(nextProps, current, dehydrated), SelectiveHydrationException;
              renderDidSuspendDelayIfPossible();
              workInProgress2 = retryActivityComponentWithoutHydrating(
                current,
                workInProgress2,
                renderLanes2
              );
            } else
              current = prevState.treeContext, nextHydratableInstance = getNextHydratable(dehydrated.nextSibling), hydrationParentFiber = workInProgress2, isHydrating = true, hydrationErrors = null, rootOrSingletonContext = false, null !== current && restoreSuspendedTreeContext(workInProgress2, current), workInProgress2 = mountActivityChildren(workInProgress2, nextProps), workInProgress2.flags |= 4096;
            return workInProgress2;
          }
          current = createWorkInProgress(current.child, {
            mode: nextProps.mode,
            children: nextProps.children
          });
          current.ref = workInProgress2.ref;
          workInProgress2.child = current;
          current.return = workInProgress2;
          return current;
        }
        function markRef(current, workInProgress2) {
          var ref = workInProgress2.ref;
          if (null === ref)
            null !== current && null !== current.ref && (workInProgress2.flags |= 4194816);
          else {
            if ("function" !== typeof ref && "object" !== typeof ref)
              throw Error(formatProdErrorMessage(284));
            if (null === current || current.ref !== ref)
              workInProgress2.flags |= 4194816;
          }
        }
        function updateFunctionComponent(current, workInProgress2, Component, nextProps, renderLanes2) {
          prepareToReadContext(workInProgress2);
          Component = renderWithHooks(
            current,
            workInProgress2,
            Component,
            nextProps,
            void 0,
            renderLanes2
          );
          nextProps = checkDidRenderIdHook();
          if (null !== current && !didReceiveUpdate)
            return bailoutHooks(current, workInProgress2, renderLanes2), bailoutOnAlreadyFinishedWork(current, workInProgress2, renderLanes2);
          isHydrating && nextProps && pushMaterializedTreeId(workInProgress2);
          workInProgress2.flags |= 1;
          reconcileChildren(current, workInProgress2, Component, renderLanes2);
          return workInProgress2.child;
        }
        function replayFunctionComponent(current, workInProgress2, nextProps, Component, secondArg, renderLanes2) {
          prepareToReadContext(workInProgress2);
          workInProgress2.updateQueue = null;
          nextProps = renderWithHooksAgain(
            workInProgress2,
            Component,
            nextProps,
            secondArg
          );
          finishRenderingHooks(current);
          Component = checkDidRenderIdHook();
          if (null !== current && !didReceiveUpdate)
            return bailoutHooks(current, workInProgress2, renderLanes2), bailoutOnAlreadyFinishedWork(current, workInProgress2, renderLanes2);
          isHydrating && Component && pushMaterializedTreeId(workInProgress2);
          workInProgress2.flags |= 1;
          reconcileChildren(current, workInProgress2, nextProps, renderLanes2);
          return workInProgress2.child;
        }
        function updateClassComponent(current, workInProgress2, Component, nextProps, renderLanes2) {
          prepareToReadContext(workInProgress2);
          if (null === workInProgress2.stateNode) {
            var context = emptyContextObject, contextType = Component.contextType;
            "object" === typeof contextType && null !== contextType && (context = readContext(contextType));
            context = new Component(nextProps, context);
            workInProgress2.memoizedState = null !== context.state && void 0 !== context.state ? context.state : null;
            context.updater = classComponentUpdater;
            workInProgress2.stateNode = context;
            context._reactInternals = workInProgress2;
            context = workInProgress2.stateNode;
            context.props = nextProps;
            context.state = workInProgress2.memoizedState;
            context.refs = {};
            initializeUpdateQueue(workInProgress2);
            contextType = Component.contextType;
            context.context = "object" === typeof contextType && null !== contextType ? readContext(contextType) : emptyContextObject;
            context.state = workInProgress2.memoizedState;
            contextType = Component.getDerivedStateFromProps;
            "function" === typeof contextType && (applyDerivedStateFromProps(
              workInProgress2,
              Component,
              contextType,
              nextProps
            ), context.state = workInProgress2.memoizedState);
            "function" === typeof Component.getDerivedStateFromProps || "function" === typeof context.getSnapshotBeforeUpdate || "function" !== typeof context.UNSAFE_componentWillMount && "function" !== typeof context.componentWillMount || (contextType = context.state, "function" === typeof context.componentWillMount && context.componentWillMount(), "function" === typeof context.UNSAFE_componentWillMount && context.UNSAFE_componentWillMount(), contextType !== context.state && classComponentUpdater.enqueueReplaceState(context, context.state, null), processUpdateQueue(workInProgress2, nextProps, context, renderLanes2), suspendIfUpdateReadFromEntangledAsyncAction(), context.state = workInProgress2.memoizedState);
            "function" === typeof context.componentDidMount && (workInProgress2.flags |= 4194308);
            nextProps = true;
          } else if (null === current) {
            context = workInProgress2.stateNode;
            var unresolvedOldProps = workInProgress2.memoizedProps, oldProps = resolveClassComponentProps(Component, unresolvedOldProps);
            context.props = oldProps;
            var oldContext = context.context, contextType$jscomp$0 = Component.contextType;
            contextType = emptyContextObject;
            "object" === typeof contextType$jscomp$0 && null !== contextType$jscomp$0 && (contextType = readContext(contextType$jscomp$0));
            var getDerivedStateFromProps = Component.getDerivedStateFromProps;
            contextType$jscomp$0 = "function" === typeof getDerivedStateFromProps || "function" === typeof context.getSnapshotBeforeUpdate;
            unresolvedOldProps = workInProgress2.pendingProps !== unresolvedOldProps;
            contextType$jscomp$0 || "function" !== typeof context.UNSAFE_componentWillReceiveProps && "function" !== typeof context.componentWillReceiveProps || (unresolvedOldProps || oldContext !== contextType) && callComponentWillReceiveProps(
              workInProgress2,
              context,
              nextProps,
              contextType
            );
            hasForceUpdate = false;
            var oldState = workInProgress2.memoizedState;
            context.state = oldState;
            processUpdateQueue(workInProgress2, nextProps, context, renderLanes2);
            suspendIfUpdateReadFromEntangledAsyncAction();
            oldContext = workInProgress2.memoizedState;
            unresolvedOldProps || oldState !== oldContext || hasForceUpdate ? ("function" === typeof getDerivedStateFromProps && (applyDerivedStateFromProps(
              workInProgress2,
              Component,
              getDerivedStateFromProps,
              nextProps
            ), oldContext = workInProgress2.memoizedState), (oldProps = hasForceUpdate || checkShouldComponentUpdate(
              workInProgress2,
              Component,
              oldProps,
              nextProps,
              oldState,
              oldContext,
              contextType
            )) ? (contextType$jscomp$0 || "function" !== typeof context.UNSAFE_componentWillMount && "function" !== typeof context.componentWillMount || ("function" === typeof context.componentWillMount && context.componentWillMount(), "function" === typeof context.UNSAFE_componentWillMount && context.UNSAFE_componentWillMount()), "function" === typeof context.componentDidMount && (workInProgress2.flags |= 4194308)) : ("function" === typeof context.componentDidMount && (workInProgress2.flags |= 4194308), workInProgress2.memoizedProps = nextProps, workInProgress2.memoizedState = oldContext), context.props = nextProps, context.state = oldContext, context.context = contextType, nextProps = oldProps) : ("function" === typeof context.componentDidMount && (workInProgress2.flags |= 4194308), nextProps = false);
          } else {
            context = workInProgress2.stateNode;
            cloneUpdateQueue(current, workInProgress2);
            contextType = workInProgress2.memoizedProps;
            contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);
            context.props = contextType$jscomp$0;
            getDerivedStateFromProps = workInProgress2.pendingProps;
            oldState = context.context;
            oldContext = Component.contextType;
            oldProps = emptyContextObject;
            "object" === typeof oldContext && null !== oldContext && (oldProps = readContext(oldContext));
            unresolvedOldProps = Component.getDerivedStateFromProps;
            (oldContext = "function" === typeof unresolvedOldProps || "function" === typeof context.getSnapshotBeforeUpdate) || "function" !== typeof context.UNSAFE_componentWillReceiveProps && "function" !== typeof context.componentWillReceiveProps || (contextType !== getDerivedStateFromProps || oldState !== oldProps) && callComponentWillReceiveProps(
              workInProgress2,
              context,
              nextProps,
              oldProps
            );
            hasForceUpdate = false;
            oldState = workInProgress2.memoizedState;
            context.state = oldState;
            processUpdateQueue(workInProgress2, nextProps, context, renderLanes2);
            suspendIfUpdateReadFromEntangledAsyncAction();
            var newState = workInProgress2.memoizedState;
            contextType !== getDerivedStateFromProps || oldState !== newState || hasForceUpdate || null !== current && null !== current.dependencies && checkIfContextChanged(current.dependencies) ? ("function" === typeof unresolvedOldProps && (applyDerivedStateFromProps(
              workInProgress2,
              Component,
              unresolvedOldProps,
              nextProps
            ), newState = workInProgress2.memoizedState), (contextType$jscomp$0 = hasForceUpdate || checkShouldComponentUpdate(
              workInProgress2,
              Component,
              contextType$jscomp$0,
              nextProps,
              oldState,
              newState,
              oldProps
            ) || null !== current && null !== current.dependencies && checkIfContextChanged(current.dependencies)) ? (oldContext || "function" !== typeof context.UNSAFE_componentWillUpdate && "function" !== typeof context.componentWillUpdate || ("function" === typeof context.componentWillUpdate && context.componentWillUpdate(nextProps, newState, oldProps), "function" === typeof context.UNSAFE_componentWillUpdate && context.UNSAFE_componentWillUpdate(
              nextProps,
              newState,
              oldProps
            )), "function" === typeof context.componentDidUpdate && (workInProgress2.flags |= 4), "function" === typeof context.getSnapshotBeforeUpdate && (workInProgress2.flags |= 1024)) : ("function" !== typeof context.componentDidUpdate || contextType === current.memoizedProps && oldState === current.memoizedState || (workInProgress2.flags |= 4), "function" !== typeof context.getSnapshotBeforeUpdate || contextType === current.memoizedProps && oldState === current.memoizedState || (workInProgress2.flags |= 1024), workInProgress2.memoizedProps = nextProps, workInProgress2.memoizedState = newState), context.props = nextProps, context.state = newState, context.context = oldProps, nextProps = contextType$jscomp$0) : ("function" !== typeof context.componentDidUpdate || contextType === current.memoizedProps && oldState === current.memoizedState || (workInProgress2.flags |= 4), "function" !== typeof context.getSnapshotBeforeUpdate || contextType === current.memoizedProps && oldState === current.memoizedState || (workInProgress2.flags |= 1024), nextProps = false);
          }
          context = nextProps;
          markRef(current, workInProgress2);
          nextProps = 0 !== (workInProgress2.flags & 128);
          context || nextProps ? (context = workInProgress2.stateNode, Component = nextProps && "function" !== typeof Component.getDerivedStateFromError ? null : context.render(), workInProgress2.flags |= 1, null !== current && nextProps ? (workInProgress2.child = reconcileChildFibers(
            workInProgress2,
            current.child,
            null,
            renderLanes2
          ), workInProgress2.child = reconcileChildFibers(
            workInProgress2,
            null,
            Component,
            renderLanes2
          )) : reconcileChildren(current, workInProgress2, Component, renderLanes2), workInProgress2.memoizedState = context.state, current = workInProgress2.child) : current = bailoutOnAlreadyFinishedWork(
            current,
            workInProgress2,
            renderLanes2
          );
          return current;
        }
        function mountHostRootWithoutHydrating(current, workInProgress2, nextChildren, renderLanes2) {
          resetHydrationState();
          workInProgress2.flags |= 256;
          reconcileChildren(current, workInProgress2, nextChildren, renderLanes2);
          return workInProgress2.child;
        }
        var SUSPENDED_MARKER = {
          dehydrated: null,
          treeContext: null,
          retryLane: 0,
          hydrationErrors: null
        };
        function mountSuspenseOffscreenState(renderLanes2) {
          return { baseLanes: renderLanes2, cachePool: getSuspendedCache() };
        }
        function getRemainingWorkInPrimaryTree(current, primaryTreeDidDefer, renderLanes2) {
          current = null !== current ? current.childLanes & ~renderLanes2 : 0;
          primaryTreeDidDefer && (current |= workInProgressDeferredLane);
          return current;
        }
        function updateSuspenseComponent(current, workInProgress2, renderLanes2) {
          var nextProps = workInProgress2.pendingProps, showFallback = false, didSuspend = 0 !== (workInProgress2.flags & 128), JSCompiler_temp;
          (JSCompiler_temp = didSuspend) || (JSCompiler_temp = null !== current && null === current.memoizedState ? false : 0 !== (suspenseStackCursor.current & 2));
          JSCompiler_temp && (showFallback = true, workInProgress2.flags &= -129);
          JSCompiler_temp = 0 !== (workInProgress2.flags & 32);
          workInProgress2.flags &= -33;
          if (null === current) {
            if (isHydrating) {
              showFallback ? pushPrimaryTreeSuspenseHandler(workInProgress2) : reuseSuspenseHandlerOnStack();
              (current = nextHydratableInstance) ? (current = canHydrateHydrationBoundary(
                current,
                rootOrSingletonContext
              ), current = null !== current && "&" !== current.data ? current : null, null !== current && (workInProgress2.memoizedState = {
                dehydrated: current,
                treeContext: null !== treeContextProvider ? { id: treeContextId, overflow: treeContextOverflow } : null,
                retryLane: 536870912,
                hydrationErrors: null
              }, renderLanes2 = createFiberFromDehydratedFragment(current), renderLanes2.return = workInProgress2, workInProgress2.child = renderLanes2, hydrationParentFiber = workInProgress2, nextHydratableInstance = null)) : current = null;
              if (null === current) throw throwOnHydrationMismatch(workInProgress2);
              isSuspenseInstanceFallback(current) ? workInProgress2.lanes = 32 : workInProgress2.lanes = 536870912;
              return null;
            }
            var nextPrimaryChildren = nextProps.children;
            nextProps = nextProps.fallback;
            if (showFallback)
              return reuseSuspenseHandlerOnStack(), showFallback = workInProgress2.mode, nextPrimaryChildren = mountWorkInProgressOffscreenFiber(
                { mode: "hidden", children: nextPrimaryChildren },
                showFallback
              ), nextProps = createFiberFromFragment(
                nextProps,
                showFallback,
                renderLanes2,
                null
              ), nextPrimaryChildren.return = workInProgress2, nextProps.return = workInProgress2, nextPrimaryChildren.sibling = nextProps, workInProgress2.child = nextPrimaryChildren, nextProps = workInProgress2.child, nextProps.memoizedState = mountSuspenseOffscreenState(renderLanes2), nextProps.childLanes = getRemainingWorkInPrimaryTree(
                current,
                JSCompiler_temp,
                renderLanes2
              ), workInProgress2.memoizedState = SUSPENDED_MARKER, bailoutOffscreenComponent(null, nextProps);
            pushPrimaryTreeSuspenseHandler(workInProgress2);
            return mountSuspensePrimaryChildren(workInProgress2, nextPrimaryChildren);
          }
          var prevState = current.memoizedState;
          if (null !== prevState && (nextPrimaryChildren = prevState.dehydrated, null !== nextPrimaryChildren)) {
            if (didSuspend)
              workInProgress2.flags & 256 ? (pushPrimaryTreeSuspenseHandler(workInProgress2), workInProgress2.flags &= -257, workInProgress2 = retrySuspenseComponentWithoutHydrating(
                current,
                workInProgress2,
                renderLanes2
              )) : null !== workInProgress2.memoizedState ? (reuseSuspenseHandlerOnStack(), workInProgress2.child = current.child, workInProgress2.flags |= 128, workInProgress2 = null) : (reuseSuspenseHandlerOnStack(), nextPrimaryChildren = nextProps.fallback, showFallback = workInProgress2.mode, nextProps = mountWorkInProgressOffscreenFiber(
                { mode: "visible", children: nextProps.children },
                showFallback
              ), nextPrimaryChildren = createFiberFromFragment(
                nextPrimaryChildren,
                showFallback,
                renderLanes2,
                null
              ), nextPrimaryChildren.flags |= 2, nextProps.return = workInProgress2, nextPrimaryChildren.return = workInProgress2, nextProps.sibling = nextPrimaryChildren, workInProgress2.child = nextProps, reconcileChildFibers(
                workInProgress2,
                current.child,
                null,
                renderLanes2
              ), nextProps = workInProgress2.child, nextProps.memoizedState = mountSuspenseOffscreenState(renderLanes2), nextProps.childLanes = getRemainingWorkInPrimaryTree(
                current,
                JSCompiler_temp,
                renderLanes2
              ), workInProgress2.memoizedState = SUSPENDED_MARKER, workInProgress2 = bailoutOffscreenComponent(null, nextProps));
            else if (pushPrimaryTreeSuspenseHandler(workInProgress2), isSuspenseInstanceFallback(nextPrimaryChildren)) {
              JSCompiler_temp = nextPrimaryChildren.nextSibling && nextPrimaryChildren.nextSibling.dataset;
              if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;
              JSCompiler_temp = digest;
              nextProps = Error(formatProdErrorMessage(419));
              nextProps.stack = "";
              nextProps.digest = JSCompiler_temp;
              queueHydrationError({ value: nextProps, source: null, stack: null });
              workInProgress2 = retrySuspenseComponentWithoutHydrating(
                current,
                workInProgress2,
                renderLanes2
              );
            } else if (didReceiveUpdate || propagateParentContextChanges(current, workInProgress2, renderLanes2, false), JSCompiler_temp = 0 !== (renderLanes2 & current.childLanes), didReceiveUpdate || JSCompiler_temp) {
              JSCompiler_temp = workInProgressRoot;
              if (null !== JSCompiler_temp && (nextProps = getBumpedLaneForHydration(JSCompiler_temp, renderLanes2), 0 !== nextProps && nextProps !== prevState.retryLane))
                throw prevState.retryLane = nextProps, enqueueConcurrentRenderForLane(current, nextProps), scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps), SelectiveHydrationException;
              isSuspenseInstancePending(nextPrimaryChildren) || renderDidSuspendDelayIfPossible();
              workInProgress2 = retrySuspenseComponentWithoutHydrating(
                current,
                workInProgress2,
                renderLanes2
              );
            } else
              isSuspenseInstancePending(nextPrimaryChildren) ? (workInProgress2.flags |= 192, workInProgress2.child = current.child, workInProgress2 = null) : (current = prevState.treeContext, nextHydratableInstance = getNextHydratable(
                nextPrimaryChildren.nextSibling
              ), hydrationParentFiber = workInProgress2, isHydrating = true, hydrationErrors = null, rootOrSingletonContext = false, null !== current && restoreSuspendedTreeContext(workInProgress2, current), workInProgress2 = mountSuspensePrimaryChildren(
                workInProgress2,
                nextProps.children
              ), workInProgress2.flags |= 4096);
            return workInProgress2;
          }
          if (showFallback)
            return reuseSuspenseHandlerOnStack(), nextPrimaryChildren = nextProps.fallback, showFallback = workInProgress2.mode, prevState = current.child, digest = prevState.sibling, nextProps = createWorkInProgress(prevState, {
              mode: "hidden",
              children: nextProps.children
            }), nextProps.subtreeFlags = prevState.subtreeFlags & 65011712, null !== digest ? nextPrimaryChildren = createWorkInProgress(
              digest,
              nextPrimaryChildren
            ) : (nextPrimaryChildren = createFiberFromFragment(
              nextPrimaryChildren,
              showFallback,
              renderLanes2,
              null
            ), nextPrimaryChildren.flags |= 2), nextPrimaryChildren.return = workInProgress2, nextProps.return = workInProgress2, nextProps.sibling = nextPrimaryChildren, workInProgress2.child = nextProps, bailoutOffscreenComponent(null, nextProps), nextProps = workInProgress2.child, nextPrimaryChildren = current.child.memoizedState, null === nextPrimaryChildren ? nextPrimaryChildren = mountSuspenseOffscreenState(renderLanes2) : (showFallback = nextPrimaryChildren.cachePool, null !== showFallback ? (prevState = CacheContext._currentValue, showFallback = showFallback.parent !== prevState ? { parent: prevState, pool: prevState } : showFallback) : showFallback = getSuspendedCache(), nextPrimaryChildren = {
              baseLanes: nextPrimaryChildren.baseLanes | renderLanes2,
              cachePool: showFallback
            }), nextProps.memoizedState = nextPrimaryChildren, nextProps.childLanes = getRemainingWorkInPrimaryTree(
              current,
              JSCompiler_temp,
              renderLanes2
            ), workInProgress2.memoizedState = SUSPENDED_MARKER, bailoutOffscreenComponent(current.child, nextProps);
          pushPrimaryTreeSuspenseHandler(workInProgress2);
          renderLanes2 = current.child;
          current = renderLanes2.sibling;
          renderLanes2 = createWorkInProgress(renderLanes2, {
            mode: "visible",
            children: nextProps.children
          });
          renderLanes2.return = workInProgress2;
          renderLanes2.sibling = null;
          null !== current && (JSCompiler_temp = workInProgress2.deletions, null === JSCompiler_temp ? (workInProgress2.deletions = [current], workInProgress2.flags |= 16) : JSCompiler_temp.push(current));
          workInProgress2.child = renderLanes2;
          workInProgress2.memoizedState = null;
          return renderLanes2;
        }
        function mountSuspensePrimaryChildren(workInProgress2, primaryChildren) {
          primaryChildren = mountWorkInProgressOffscreenFiber(
            { mode: "visible", children: primaryChildren },
            workInProgress2.mode
          );
          primaryChildren.return = workInProgress2;
          return workInProgress2.child = primaryChildren;
        }
        function mountWorkInProgressOffscreenFiber(offscreenProps, mode) {
          offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);
          offscreenProps.lanes = 0;
          return offscreenProps;
        }
        function retrySuspenseComponentWithoutHydrating(current, workInProgress2, renderLanes2) {
          reconcileChildFibers(workInProgress2, current.child, null, renderLanes2);
          current = mountSuspensePrimaryChildren(
            workInProgress2,
            workInProgress2.pendingProps.children
          );
          current.flags |= 2;
          workInProgress2.memoizedState = null;
          return current;
        }
        function scheduleSuspenseWorkOnFiber(fiber, renderLanes2, propagationRoot) {
          fiber.lanes |= renderLanes2;
          var alternate = fiber.alternate;
          null !== alternate && (alternate.lanes |= renderLanes2);
          scheduleContextWorkOnParentPath(fiber.return, renderLanes2, propagationRoot);
        }
        function initSuspenseListRenderState(workInProgress2, isBackwards, tail, lastContentRow, tailMode, treeForkCount2) {
          var renderState = workInProgress2.memoizedState;
          null === renderState ? workInProgress2.memoizedState = {
            isBackwards,
            rendering: null,
            renderingStartTime: 0,
            last: lastContentRow,
            tail,
            tailMode,
            treeForkCount: treeForkCount2
          } : (renderState.isBackwards = isBackwards, renderState.rendering = null, renderState.renderingStartTime = 0, renderState.last = lastContentRow, renderState.tail = tail, renderState.tailMode = tailMode, renderState.treeForkCount = treeForkCount2);
        }
        function updateSuspenseListComponent(current, workInProgress2, renderLanes2) {
          var nextProps = workInProgress2.pendingProps, revealOrder = nextProps.revealOrder, tailMode = nextProps.tail;
          nextProps = nextProps.children;
          var suspenseContext = suspenseStackCursor.current, shouldForceFallback = 0 !== (suspenseContext & 2);
          shouldForceFallback ? (suspenseContext = suspenseContext & 1 | 2, workInProgress2.flags |= 128) : suspenseContext &= 1;
          push(suspenseStackCursor, suspenseContext);
          reconcileChildren(current, workInProgress2, nextProps, renderLanes2);
          nextProps = isHydrating ? treeForkCount : 0;
          if (!shouldForceFallback && null !== current && 0 !== (current.flags & 128))
            a: for (current = workInProgress2.child; null !== current; ) {
              if (13 === current.tag)
                null !== current.memoizedState && scheduleSuspenseWorkOnFiber(current, renderLanes2, workInProgress2);
              else if (19 === current.tag)
                scheduleSuspenseWorkOnFiber(current, renderLanes2, workInProgress2);
              else if (null !== current.child) {
                current.child.return = current;
                current = current.child;
                continue;
              }
              if (current === workInProgress2) break a;
              for (; null === current.sibling; ) {
                if (null === current.return || current.return === workInProgress2)
                  break a;
                current = current.return;
              }
              current.sibling.return = current.return;
              current = current.sibling;
            }
          switch (revealOrder) {
            case "forwards":
              renderLanes2 = workInProgress2.child;
              for (revealOrder = null; null !== renderLanes2; )
                current = renderLanes2.alternate, null !== current && null === findFirstSuspended(current) && (revealOrder = renderLanes2), renderLanes2 = renderLanes2.sibling;
              renderLanes2 = revealOrder;
              null === renderLanes2 ? (revealOrder = workInProgress2.child, workInProgress2.child = null) : (revealOrder = renderLanes2.sibling, renderLanes2.sibling = null);
              initSuspenseListRenderState(
                workInProgress2,
                false,
                revealOrder,
                renderLanes2,
                tailMode,
                nextProps
              );
              break;
            case "backwards":
            case "unstable_legacy-backwards":
              renderLanes2 = null;
              revealOrder = workInProgress2.child;
              for (workInProgress2.child = null; null !== revealOrder; ) {
                current = revealOrder.alternate;
                if (null !== current && null === findFirstSuspended(current)) {
                  workInProgress2.child = revealOrder;
                  break;
                }
                current = revealOrder.sibling;
                revealOrder.sibling = renderLanes2;
                renderLanes2 = revealOrder;
                revealOrder = current;
              }
              initSuspenseListRenderState(
                workInProgress2,
                true,
                renderLanes2,
                null,
                tailMode,
                nextProps
              );
              break;
            case "together":
              initSuspenseListRenderState(
                workInProgress2,
                false,
                null,
                null,
                void 0,
                nextProps
              );
              break;
            default:
              workInProgress2.memoizedState = null;
          }
          return workInProgress2.child;
        }
        function bailoutOnAlreadyFinishedWork(current, workInProgress2, renderLanes2) {
          null !== current && (workInProgress2.dependencies = current.dependencies);
          workInProgressRootSkippedLanes |= workInProgress2.lanes;
          if (0 === (renderLanes2 & workInProgress2.childLanes))
            if (null !== current) {
              if (propagateParentContextChanges(
                current,
                workInProgress2,
                renderLanes2,
                false
              ), 0 === (renderLanes2 & workInProgress2.childLanes))
                return null;
            } else return null;
          if (null !== current && workInProgress2.child !== current.child)
            throw Error(formatProdErrorMessage(153));
          if (null !== workInProgress2.child) {
            current = workInProgress2.child;
            renderLanes2 = createWorkInProgress(current, current.pendingProps);
            workInProgress2.child = renderLanes2;
            for (renderLanes2.return = workInProgress2; null !== current.sibling; )
              current = current.sibling, renderLanes2 = renderLanes2.sibling = createWorkInProgress(current, current.pendingProps), renderLanes2.return = workInProgress2;
            renderLanes2.sibling = null;
          }
          return workInProgress2.child;
        }
        function checkScheduledUpdateOrContext(current, renderLanes2) {
          if (0 !== (current.lanes & renderLanes2)) return true;
          current = current.dependencies;
          return null !== current && checkIfContextChanged(current) ? true : false;
        }
        function attemptEarlyBailoutIfNoScheduledUpdate(current, workInProgress2, renderLanes2) {
          switch (workInProgress2.tag) {
            case 3:
              pushHostContainer(workInProgress2, workInProgress2.stateNode.containerInfo);
              pushProvider(workInProgress2, CacheContext, current.memoizedState.cache);
              resetHydrationState();
              break;
            case 27:
            case 5:
              pushHostContext(workInProgress2);
              break;
            case 4:
              pushHostContainer(workInProgress2, workInProgress2.stateNode.containerInfo);
              break;
            case 10:
              pushProvider(
                workInProgress2,
                workInProgress2.type,
                workInProgress2.memoizedProps.value
              );
              break;
            case 31:
              if (null !== workInProgress2.memoizedState)
                return workInProgress2.flags |= 128, pushDehydratedActivitySuspenseHandler(workInProgress2), null;
              break;
            case 13:
              var state$102 = workInProgress2.memoizedState;
              if (null !== state$102) {
                if (null !== state$102.dehydrated)
                  return pushPrimaryTreeSuspenseHandler(workInProgress2), workInProgress2.flags |= 128, null;
                if (0 !== (renderLanes2 & workInProgress2.child.childLanes))
                  return updateSuspenseComponent(current, workInProgress2, renderLanes2);
                pushPrimaryTreeSuspenseHandler(workInProgress2);
                current = bailoutOnAlreadyFinishedWork(
                  current,
                  workInProgress2,
                  renderLanes2
                );
                return null !== current ? current.sibling : null;
              }
              pushPrimaryTreeSuspenseHandler(workInProgress2);
              break;
            case 19:
              var didSuspendBefore = 0 !== (current.flags & 128);
              state$102 = 0 !== (renderLanes2 & workInProgress2.childLanes);
              state$102 || (propagateParentContextChanges(
                current,
                workInProgress2,
                renderLanes2,
                false
              ), state$102 = 0 !== (renderLanes2 & workInProgress2.childLanes));
              if (didSuspendBefore) {
                if (state$102)
                  return updateSuspenseListComponent(
                    current,
                    workInProgress2,
                    renderLanes2
                  );
                workInProgress2.flags |= 128;
              }
              didSuspendBefore = workInProgress2.memoizedState;
              null !== didSuspendBefore && (didSuspendBefore.rendering = null, didSuspendBefore.tail = null, didSuspendBefore.lastEffect = null);
              push(suspenseStackCursor, suspenseStackCursor.current);
              if (state$102) break;
              else return null;
            case 22:
              return workInProgress2.lanes = 0, updateOffscreenComponent(
                current,
                workInProgress2,
                renderLanes2,
                workInProgress2.pendingProps
              );
            case 24:
              pushProvider(workInProgress2, CacheContext, current.memoizedState.cache);
          }
          return bailoutOnAlreadyFinishedWork(current, workInProgress2, renderLanes2);
        }
        function beginWork(current, workInProgress2, renderLanes2) {
          if (null !== current)
            if (current.memoizedProps !== workInProgress2.pendingProps)
              didReceiveUpdate = true;
            else {
              if (!checkScheduledUpdateOrContext(current, renderLanes2) && 0 === (workInProgress2.flags & 128))
                return didReceiveUpdate = false, attemptEarlyBailoutIfNoScheduledUpdate(
                  current,
                  workInProgress2,
                  renderLanes2
                );
              didReceiveUpdate = 0 !== (current.flags & 131072) ? true : false;
            }
          else
            didReceiveUpdate = false, isHydrating && 0 !== (workInProgress2.flags & 1048576) && pushTreeId(workInProgress2, treeForkCount, workInProgress2.index);
          workInProgress2.lanes = 0;
          switch (workInProgress2.tag) {
            case 16:
              a: {
                var props = workInProgress2.pendingProps;
                current = resolveLazy(workInProgress2.elementType);
                workInProgress2.type = current;
                if ("function" === typeof current)
                  shouldConstruct(current) ? (props = resolveClassComponentProps(current, props), workInProgress2.tag = 1, workInProgress2 = updateClassComponent(
                    null,
                    workInProgress2,
                    current,
                    props,
                    renderLanes2
                  )) : (workInProgress2.tag = 0, workInProgress2 = updateFunctionComponent(
                    null,
                    workInProgress2,
                    current,
                    props,
                    renderLanes2
                  ));
                else {
                  if (void 0 !== current && null !== current) {
                    var $$typeof = current.$$typeof;
                    if ($$typeof === REACT_FORWARD_REF_TYPE) {
                      workInProgress2.tag = 11;
                      workInProgress2 = updateForwardRef(
                        null,
                        workInProgress2,
                        current,
                        props,
                        renderLanes2
                      );
                      break a;
                    } else if ($$typeof === REACT_MEMO_TYPE) {
                      workInProgress2.tag = 14;
                      workInProgress2 = updateMemoComponent(
                        null,
                        workInProgress2,
                        current,
                        props,
                        renderLanes2
                      );
                      break a;
                    }
                  }
                  workInProgress2 = getComponentNameFromType(current) || current;
                  throw Error(formatProdErrorMessage(306, workInProgress2, ""));
                }
              }
              return workInProgress2;
            case 0:
              return updateFunctionComponent(
                current,
                workInProgress2,
                workInProgress2.type,
                workInProgress2.pendingProps,
                renderLanes2
              );
            case 1:
              return props = workInProgress2.type, $$typeof = resolveClassComponentProps(
                props,
                workInProgress2.pendingProps
              ), updateClassComponent(
                current,
                workInProgress2,
                props,
                $$typeof,
                renderLanes2
              );
            case 3:
              a: {
                pushHostContainer(
                  workInProgress2,
                  workInProgress2.stateNode.containerInfo
                );
                if (null === current) throw Error(formatProdErrorMessage(387));
                props = workInProgress2.pendingProps;
                var prevState = workInProgress2.memoizedState;
                $$typeof = prevState.element;
                cloneUpdateQueue(current, workInProgress2);
                processUpdateQueue(workInProgress2, props, null, renderLanes2);
                var nextState = workInProgress2.memoizedState;
                props = nextState.cache;
                pushProvider(workInProgress2, CacheContext, props);
                props !== prevState.cache && propagateContextChanges(
                  workInProgress2,
                  [CacheContext],
                  renderLanes2,
                  true
                );
                suspendIfUpdateReadFromEntangledAsyncAction();
                props = nextState.element;
                if (prevState.isDehydrated)
                  if (prevState = {
                    element: props,
                    isDehydrated: false,
                    cache: nextState.cache
                  }, workInProgress2.updateQueue.baseState = prevState, workInProgress2.memoizedState = prevState, workInProgress2.flags & 256) {
                    workInProgress2 = mountHostRootWithoutHydrating(
                      current,
                      workInProgress2,
                      props,
                      renderLanes2
                    );
                    break a;
                  } else if (props !== $$typeof) {
                    $$typeof = createCapturedValueAtFiber(
                      Error(formatProdErrorMessage(424)),
                      workInProgress2
                    );
                    queueHydrationError($$typeof);
                    workInProgress2 = mountHostRootWithoutHydrating(
                      current,
                      workInProgress2,
                      props,
                      renderLanes2
                    );
                    break a;
                  } else {
                    current = workInProgress2.stateNode.containerInfo;
                    switch (current.nodeType) {
                      case 9:
                        current = current.body;
                        break;
                      default:
                        current = "HTML" === current.nodeName ? current.ownerDocument.body : current;
                    }
                    nextHydratableInstance = getNextHydratable(current.firstChild);
                    hydrationParentFiber = workInProgress2;
                    isHydrating = true;
                    hydrationErrors = null;
                    rootOrSingletonContext = true;
                    renderLanes2 = mountChildFibers(
                      workInProgress2,
                      null,
                      props,
                      renderLanes2
                    );
                    for (workInProgress2.child = renderLanes2; renderLanes2; )
                      renderLanes2.flags = renderLanes2.flags & -3 | 4096, renderLanes2 = renderLanes2.sibling;
                  }
                else {
                  resetHydrationState();
                  if (props === $$typeof) {
                    workInProgress2 = bailoutOnAlreadyFinishedWork(
                      current,
                      workInProgress2,
                      renderLanes2
                    );
                    break a;
                  }
                  reconcileChildren(current, workInProgress2, props, renderLanes2);
                }
                workInProgress2 = workInProgress2.child;
              }
              return workInProgress2;
            case 26:
              return markRef(current, workInProgress2), null === current ? (renderLanes2 = getResource(
                workInProgress2.type,
                null,
                workInProgress2.pendingProps,
                null
              )) ? workInProgress2.memoizedState = renderLanes2 : isHydrating || (renderLanes2 = workInProgress2.type, current = workInProgress2.pendingProps, props = getOwnerDocumentFromRootContainer(
                rootInstanceStackCursor.current
              ).createElement(renderLanes2), props[internalInstanceKey] = workInProgress2, props[internalPropsKey] = current, setInitialProperties(props, renderLanes2, current), markNodeAsHoistable(props), workInProgress2.stateNode = props) : workInProgress2.memoizedState = getResource(
                workInProgress2.type,
                current.memoizedProps,
                workInProgress2.pendingProps,
                current.memoizedState
              ), null;
            case 27:
              return pushHostContext(workInProgress2), null === current && isHydrating && (props = workInProgress2.stateNode = resolveSingletonInstance(
                workInProgress2.type,
                workInProgress2.pendingProps,
                rootInstanceStackCursor.current
              ), hydrationParentFiber = workInProgress2, rootOrSingletonContext = true, $$typeof = nextHydratableInstance, isSingletonScope(workInProgress2.type) ? (previousHydratableOnEnteringScopedSingleton = $$typeof, nextHydratableInstance = getNextHydratable(props.firstChild)) : nextHydratableInstance = $$typeof), reconcileChildren(
                current,
                workInProgress2,
                workInProgress2.pendingProps.children,
                renderLanes2
              ), markRef(current, workInProgress2), null === current && (workInProgress2.flags |= 4194304), workInProgress2.child;
            case 5:
              if (null === current && isHydrating) {
                if ($$typeof = props = nextHydratableInstance)
                  props = canHydrateInstance(
                    props,
                    workInProgress2.type,
                    workInProgress2.pendingProps,
                    rootOrSingletonContext
                  ), null !== props ? (workInProgress2.stateNode = props, hydrationParentFiber = workInProgress2, nextHydratableInstance = getNextHydratable(props.firstChild), rootOrSingletonContext = false, $$typeof = true) : $$typeof = false;
                $$typeof || throwOnHydrationMismatch(workInProgress2);
              }
              pushHostContext(workInProgress2);
              $$typeof = workInProgress2.type;
              prevState = workInProgress2.pendingProps;
              nextState = null !== current ? current.memoizedProps : null;
              props = prevState.children;
              shouldSetTextContent($$typeof, prevState) ? props = null : null !== nextState && shouldSetTextContent($$typeof, nextState) && (workInProgress2.flags |= 32);
              null !== workInProgress2.memoizedState && ($$typeof = renderWithHooks(
                current,
                workInProgress2,
                TransitionAwareHostComponent,
                null,
                null,
                renderLanes2
              ), HostTransitionContext._currentValue = $$typeof);
              markRef(current, workInProgress2);
              reconcileChildren(current, workInProgress2, props, renderLanes2);
              return workInProgress2.child;
            case 6:
              if (null === current && isHydrating) {
                if (current = renderLanes2 = nextHydratableInstance)
                  renderLanes2 = canHydrateTextInstance(
                    renderLanes2,
                    workInProgress2.pendingProps,
                    rootOrSingletonContext
                  ), null !== renderLanes2 ? (workInProgress2.stateNode = renderLanes2, hydrationParentFiber = workInProgress2, nextHydratableInstance = null, current = true) : current = false;
                current || throwOnHydrationMismatch(workInProgress2);
              }
              return null;
            case 13:
              return updateSuspenseComponent(current, workInProgress2, renderLanes2);
            case 4:
              return pushHostContainer(
                workInProgress2,
                workInProgress2.stateNode.containerInfo
              ), props = workInProgress2.pendingProps, null === current ? workInProgress2.child = reconcileChildFibers(
                workInProgress2,
                null,
                props,
                renderLanes2
              ) : reconcileChildren(current, workInProgress2, props, renderLanes2), workInProgress2.child;
            case 11:
              return updateForwardRef(
                current,
                workInProgress2,
                workInProgress2.type,
                workInProgress2.pendingProps,
                renderLanes2
              );
            case 7:
              return reconcileChildren(
                current,
                workInProgress2,
                workInProgress2.pendingProps,
                renderLanes2
              ), workInProgress2.child;
            case 8:
              return reconcileChildren(
                current,
                workInProgress2,
                workInProgress2.pendingProps.children,
                renderLanes2
              ), workInProgress2.child;
            case 12:
              return reconcileChildren(
                current,
                workInProgress2,
                workInProgress2.pendingProps.children,
                renderLanes2
              ), workInProgress2.child;
            case 10:
              return props = workInProgress2.pendingProps, pushProvider(workInProgress2, workInProgress2.type, props.value), reconcileChildren(current, workInProgress2, props.children, renderLanes2), workInProgress2.child;
            case 9:
              return $$typeof = workInProgress2.type._context, props = workInProgress2.pendingProps.children, prepareToReadContext(workInProgress2), $$typeof = readContext($$typeof), props = props($$typeof), workInProgress2.flags |= 1, reconcileChildren(current, workInProgress2, props, renderLanes2), workInProgress2.child;
            case 14:
              return updateMemoComponent(
                current,
                workInProgress2,
                workInProgress2.type,
                workInProgress2.pendingProps,
                renderLanes2
              );
            case 15:
              return updateSimpleMemoComponent(
                current,
                workInProgress2,
                workInProgress2.type,
                workInProgress2.pendingProps,
                renderLanes2
              );
            case 19:
              return updateSuspenseListComponent(current, workInProgress2, renderLanes2);
            case 31:
              return updateActivityComponent(current, workInProgress2, renderLanes2);
            case 22:
              return updateOffscreenComponent(
                current,
                workInProgress2,
                renderLanes2,
                workInProgress2.pendingProps
              );
            case 24:
              return prepareToReadContext(workInProgress2), props = readContext(CacheContext), null === current ? ($$typeof = peekCacheFromPool(), null === $$typeof && ($$typeof = workInProgressRoot, prevState = createCache(), $$typeof.pooledCache = prevState, prevState.refCount++, null !== prevState && ($$typeof.pooledCacheLanes |= renderLanes2), $$typeof = prevState), workInProgress2.memoizedState = { parent: props, cache: $$typeof }, initializeUpdateQueue(workInProgress2), pushProvider(workInProgress2, CacheContext, $$typeof)) : (0 !== (current.lanes & renderLanes2) && (cloneUpdateQueue(current, workInProgress2), processUpdateQueue(workInProgress2, null, null, renderLanes2), suspendIfUpdateReadFromEntangledAsyncAction()), $$typeof = current.memoizedState, prevState = workInProgress2.memoizedState, $$typeof.parent !== props ? ($$typeof = { parent: props, cache: props }, workInProgress2.memoizedState = $$typeof, 0 === workInProgress2.lanes && (workInProgress2.memoizedState = workInProgress2.updateQueue.baseState = $$typeof), pushProvider(workInProgress2, CacheContext, props)) : (props = prevState.cache, pushProvider(workInProgress2, CacheContext, props), props !== $$typeof.cache && propagateContextChanges(
                workInProgress2,
                [CacheContext],
                renderLanes2,
                true
              ))), reconcileChildren(
                current,
                workInProgress2,
                workInProgress2.pendingProps.children,
                renderLanes2
              ), workInProgress2.child;
            case 29:
              throw workInProgress2.pendingProps;
          }
          throw Error(formatProdErrorMessage(156, workInProgress2.tag));
        }
        function markUpdate(workInProgress2) {
          workInProgress2.flags |= 4;
        }
        function preloadInstanceAndSuspendIfNeeded(workInProgress2, type, oldProps, newProps, renderLanes2) {
          if (type = 0 !== (workInProgress2.mode & 32)) type = false;
          if (type) {
            if (workInProgress2.flags |= 16777216, (renderLanes2 & 335544128) === renderLanes2)
              if (workInProgress2.stateNode.complete) workInProgress2.flags |= 8192;
              else if (shouldRemainOnPreviousScreen()) workInProgress2.flags |= 8192;
              else
                throw suspendedThenable = noopSuspenseyCommitThenable, SuspenseyCommitException;
          } else workInProgress2.flags &= -16777217;
        }
        function preloadResourceAndSuspendIfNeeded(workInProgress2, resource) {
          if ("stylesheet" !== resource.type || 0 !== (resource.state.loading & 4))
            workInProgress2.flags &= -16777217;
          else if (workInProgress2.flags |= 16777216, !preloadResource(resource))
            if (shouldRemainOnPreviousScreen()) workInProgress2.flags |= 8192;
            else
              throw suspendedThenable = noopSuspenseyCommitThenable, SuspenseyCommitException;
        }
        function scheduleRetryEffect(workInProgress2, retryQueue) {
          null !== retryQueue && (workInProgress2.flags |= 4);
          workInProgress2.flags & 16384 && (retryQueue = 22 !== workInProgress2.tag ? claimNextRetryLane() : 536870912, workInProgress2.lanes |= retryQueue, workInProgressSuspendedRetryLanes |= retryQueue);
        }
        function cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {
          if (!isHydrating)
            switch (renderState.tailMode) {
              case "hidden":
                hasRenderedATailFallback = renderState.tail;
                for (var lastTailNode = null; null !== hasRenderedATailFallback; )
                  null !== hasRenderedATailFallback.alternate && (lastTailNode = hasRenderedATailFallback), hasRenderedATailFallback = hasRenderedATailFallback.sibling;
                null === lastTailNode ? renderState.tail = null : lastTailNode.sibling = null;
                break;
              case "collapsed":
                lastTailNode = renderState.tail;
                for (var lastTailNode$106 = null; null !== lastTailNode; )
                  null !== lastTailNode.alternate && (lastTailNode$106 = lastTailNode), lastTailNode = lastTailNode.sibling;
                null === lastTailNode$106 ? hasRenderedATailFallback || null === renderState.tail ? renderState.tail = null : renderState.tail.sibling = null : lastTailNode$106.sibling = null;
            }
        }
        function bubbleProperties(completedWork) {
          var didBailout = null !== completedWork.alternate && completedWork.alternate.child === completedWork.child, newChildLanes = 0, subtreeFlags = 0;
          if (didBailout)
            for (var child$107 = completedWork.child; null !== child$107; )
              newChildLanes |= child$107.lanes | child$107.childLanes, subtreeFlags |= child$107.subtreeFlags & 65011712, subtreeFlags |= child$107.flags & 65011712, child$107.return = completedWork, child$107 = child$107.sibling;
          else
            for (child$107 = completedWork.child; null !== child$107; )
              newChildLanes |= child$107.lanes | child$107.childLanes, subtreeFlags |= child$107.subtreeFlags, subtreeFlags |= child$107.flags, child$107.return = completedWork, child$107 = child$107.sibling;
          completedWork.subtreeFlags |= subtreeFlags;
          completedWork.childLanes = newChildLanes;
          return didBailout;
        }
        function completeWork(current, workInProgress2, renderLanes2) {
          var newProps = workInProgress2.pendingProps;
          popTreeContext(workInProgress2);
          switch (workInProgress2.tag) {
            case 16:
            case 15:
            case 0:
            case 11:
            case 7:
            case 8:
            case 12:
            case 9:
            case 14:
              return bubbleProperties(workInProgress2), null;
            case 1:
              return bubbleProperties(workInProgress2), null;
            case 3:
              renderLanes2 = workInProgress2.stateNode;
              newProps = null;
              null !== current && (newProps = current.memoizedState.cache);
              workInProgress2.memoizedState.cache !== newProps && (workInProgress2.flags |= 2048);
              popProvider(CacheContext);
              popHostContainer();
              renderLanes2.pendingContext && (renderLanes2.context = renderLanes2.pendingContext, renderLanes2.pendingContext = null);
              if (null === current || null === current.child)
                popHydrationState(workInProgress2) ? markUpdate(workInProgress2) : null === current || current.memoizedState.isDehydrated && 0 === (workInProgress2.flags & 256) || (workInProgress2.flags |= 1024, upgradeHydrationErrorsToRecoverable());
              bubbleProperties(workInProgress2);
              return null;
            case 26:
              var type = workInProgress2.type, nextResource = workInProgress2.memoizedState;
              null === current ? (markUpdate(workInProgress2), null !== nextResource ? (bubbleProperties(workInProgress2), preloadResourceAndSuspendIfNeeded(workInProgress2, nextResource)) : (bubbleProperties(workInProgress2), preloadInstanceAndSuspendIfNeeded(
                workInProgress2,
                type,
                null,
                newProps,
                renderLanes2
              ))) : nextResource ? nextResource !== current.memoizedState ? (markUpdate(workInProgress2), bubbleProperties(workInProgress2), preloadResourceAndSuspendIfNeeded(workInProgress2, nextResource)) : (bubbleProperties(workInProgress2), workInProgress2.flags &= -16777217) : (current = current.memoizedProps, current !== newProps && markUpdate(workInProgress2), bubbleProperties(workInProgress2), preloadInstanceAndSuspendIfNeeded(
                workInProgress2,
                type,
                current,
                newProps,
                renderLanes2
              ));
              return null;
            case 27:
              popHostContext(workInProgress2);
              renderLanes2 = rootInstanceStackCursor.current;
              type = workInProgress2.type;
              if (null !== current && null != workInProgress2.stateNode)
                current.memoizedProps !== newProps && markUpdate(workInProgress2);
              else {
                if (!newProps) {
                  if (null === workInProgress2.stateNode)
                    throw Error(formatProdErrorMessage(166));
                  bubbleProperties(workInProgress2);
                  return null;
                }
                current = contextStackCursor.current;
                popHydrationState(workInProgress2) ? prepareToHydrateHostInstance(workInProgress2) : (current = resolveSingletonInstance(type, newProps, renderLanes2), workInProgress2.stateNode = current, markUpdate(workInProgress2));
              }
              bubbleProperties(workInProgress2);
              return null;
            case 5:
              popHostContext(workInProgress2);
              type = workInProgress2.type;
              if (null !== current && null != workInProgress2.stateNode)
                current.memoizedProps !== newProps && markUpdate(workInProgress2);
              else {
                if (!newProps) {
                  if (null === workInProgress2.stateNode)
                    throw Error(formatProdErrorMessage(166));
                  bubbleProperties(workInProgress2);
                  return null;
                }
                nextResource = contextStackCursor.current;
                if (popHydrationState(workInProgress2))
                  prepareToHydrateHostInstance(workInProgress2);
                else {
                  var ownerDocument = getOwnerDocumentFromRootContainer(
                    rootInstanceStackCursor.current
                  );
                  switch (nextResource) {
                    case 1:
                      nextResource = ownerDocument.createElementNS(
                        "http://www.w3.org/2000/svg",
                        type
                      );
                      break;
                    case 2:
                      nextResource = ownerDocument.createElementNS(
                        "http://www.w3.org/1998/Math/MathML",
                        type
                      );
                      break;
                    default:
                      switch (type) {
                        case "svg":
                          nextResource = ownerDocument.createElementNS(
                            "http://www.w3.org/2000/svg",
                            type
                          );
                          break;
                        case "math":
                          nextResource = ownerDocument.createElementNS(
                            "http://www.w3.org/1998/Math/MathML",
                            type
                          );
                          break;
                        case "script":
                          nextResource = ownerDocument.createElement("div");
                          nextResource.innerHTML = "<script><\/script>";
                          nextResource = nextResource.removeChild(
                            nextResource.firstChild
                          );
                          break;
                        case "select":
                          nextResource = "string" === typeof newProps.is ? ownerDocument.createElement("select", {
                            is: newProps.is
                          }) : ownerDocument.createElement("select");
                          newProps.multiple ? nextResource.multiple = true : newProps.size && (nextResource.size = newProps.size);
                          break;
                        default:
                          nextResource = "string" === typeof newProps.is ? ownerDocument.createElement(type, { is: newProps.is }) : ownerDocument.createElement(type);
                      }
                  }
                  nextResource[internalInstanceKey] = workInProgress2;
                  nextResource[internalPropsKey] = newProps;
                  a: for (ownerDocument = workInProgress2.child; null !== ownerDocument; ) {
                    if (5 === ownerDocument.tag || 6 === ownerDocument.tag)
                      nextResource.appendChild(ownerDocument.stateNode);
                    else if (4 !== ownerDocument.tag && 27 !== ownerDocument.tag && null !== ownerDocument.child) {
                      ownerDocument.child.return = ownerDocument;
                      ownerDocument = ownerDocument.child;
                      continue;
                    }
                    if (ownerDocument === workInProgress2) break a;
                    for (; null === ownerDocument.sibling; ) {
                      if (null === ownerDocument.return || ownerDocument.return === workInProgress2)
                        break a;
                      ownerDocument = ownerDocument.return;
                    }
                    ownerDocument.sibling.return = ownerDocument.return;
                    ownerDocument = ownerDocument.sibling;
                  }
                  workInProgress2.stateNode = nextResource;
                  a: switch (setInitialProperties(nextResource, type, newProps), type) {
                    case "button":
                    case "input":
                    case "select":
                    case "textarea":
                      newProps = !!newProps.autoFocus;
                      break a;
                    case "img":
                      newProps = true;
                      break a;
                    default:
                      newProps = false;
                  }
                  newProps && markUpdate(workInProgress2);
                }
              }
              bubbleProperties(workInProgress2);
              preloadInstanceAndSuspendIfNeeded(
                workInProgress2,
                workInProgress2.type,
                null === current ? null : current.memoizedProps,
                workInProgress2.pendingProps,
                renderLanes2
              );
              return null;
            case 6:
              if (current && null != workInProgress2.stateNode)
                current.memoizedProps !== newProps && markUpdate(workInProgress2);
              else {
                if ("string" !== typeof newProps && null === workInProgress2.stateNode)
                  throw Error(formatProdErrorMessage(166));
                current = rootInstanceStackCursor.current;
                if (popHydrationState(workInProgress2)) {
                  current = workInProgress2.stateNode;
                  renderLanes2 = workInProgress2.memoizedProps;
                  newProps = null;
                  type = hydrationParentFiber;
                  if (null !== type)
                    switch (type.tag) {
                      case 27:
                      case 5:
                        newProps = type.memoizedProps;
                    }
                  current[internalInstanceKey] = workInProgress2;
                  current = current.nodeValue === renderLanes2 || null !== newProps && true === newProps.suppressHydrationWarning || checkForUnmatchedText(current.nodeValue, renderLanes2) ? true : false;
                  current || throwOnHydrationMismatch(workInProgress2, true);
                } else
                  current = getOwnerDocumentFromRootContainer(current).createTextNode(
                    newProps
                  ), current[internalInstanceKey] = workInProgress2, workInProgress2.stateNode = current;
              }
              bubbleProperties(workInProgress2);
              return null;
            case 31:
              renderLanes2 = workInProgress2.memoizedState;
              if (null === current || null !== current.memoizedState) {
                newProps = popHydrationState(workInProgress2);
                if (null !== renderLanes2) {
                  if (null === current) {
                    if (!newProps) throw Error(formatProdErrorMessage(318));
                    current = workInProgress2.memoizedState;
                    current = null !== current ? current.dehydrated : null;
                    if (!current) throw Error(formatProdErrorMessage(557));
                    current[internalInstanceKey] = workInProgress2;
                  } else
                    resetHydrationState(), 0 === (workInProgress2.flags & 128) && (workInProgress2.memoizedState = null), workInProgress2.flags |= 4;
                  bubbleProperties(workInProgress2);
                  current = false;
                } else
                  renderLanes2 = upgradeHydrationErrorsToRecoverable(), null !== current && null !== current.memoizedState && (current.memoizedState.hydrationErrors = renderLanes2), current = true;
                if (!current) {
                  if (workInProgress2.flags & 256)
                    return popSuspenseHandler(workInProgress2), workInProgress2;
                  popSuspenseHandler(workInProgress2);
                  return null;
                }
                if (0 !== (workInProgress2.flags & 128))
                  throw Error(formatProdErrorMessage(558));
              }
              bubbleProperties(workInProgress2);
              return null;
            case 13:
              newProps = workInProgress2.memoizedState;
              if (null === current || null !== current.memoizedState && null !== current.memoizedState.dehydrated) {
                type = popHydrationState(workInProgress2);
                if (null !== newProps && null !== newProps.dehydrated) {
                  if (null === current) {
                    if (!type) throw Error(formatProdErrorMessage(318));
                    type = workInProgress2.memoizedState;
                    type = null !== type ? type.dehydrated : null;
                    if (!type) throw Error(formatProdErrorMessage(317));
                    type[internalInstanceKey] = workInProgress2;
                  } else
                    resetHydrationState(), 0 === (workInProgress2.flags & 128) && (workInProgress2.memoizedState = null), workInProgress2.flags |= 4;
                  bubbleProperties(workInProgress2);
                  type = false;
                } else
                  type = upgradeHydrationErrorsToRecoverable(), null !== current && null !== current.memoizedState && (current.memoizedState.hydrationErrors = type), type = true;
                if (!type) {
                  if (workInProgress2.flags & 256)
                    return popSuspenseHandler(workInProgress2), workInProgress2;
                  popSuspenseHandler(workInProgress2);
                  return null;
                }
              }
              popSuspenseHandler(workInProgress2);
              if (0 !== (workInProgress2.flags & 128))
                return workInProgress2.lanes = renderLanes2, workInProgress2;
              renderLanes2 = null !== newProps;
              current = null !== current && null !== current.memoizedState;
              renderLanes2 && (newProps = workInProgress2.child, type = null, null !== newProps.alternate && null !== newProps.alternate.memoizedState && null !== newProps.alternate.memoizedState.cachePool && (type = newProps.alternate.memoizedState.cachePool.pool), nextResource = null, null !== newProps.memoizedState && null !== newProps.memoizedState.cachePool && (nextResource = newProps.memoizedState.cachePool.pool), nextResource !== type && (newProps.flags |= 2048));
              renderLanes2 !== current && renderLanes2 && (workInProgress2.child.flags |= 8192);
              scheduleRetryEffect(workInProgress2, workInProgress2.updateQueue);
              bubbleProperties(workInProgress2);
              return null;
            case 4:
              return popHostContainer(), null === current && listenToAllSupportedEvents(workInProgress2.stateNode.containerInfo), bubbleProperties(workInProgress2), null;
            case 10:
              return popProvider(workInProgress2.type), bubbleProperties(workInProgress2), null;
            case 19:
              pop(suspenseStackCursor);
              newProps = workInProgress2.memoizedState;
              if (null === newProps) return bubbleProperties(workInProgress2), null;
              type = 0 !== (workInProgress2.flags & 128);
              nextResource = newProps.rendering;
              if (null === nextResource)
                if (type) cutOffTailIfNeeded(newProps, false);
                else {
                  if (0 !== workInProgressRootExitStatus || null !== current && 0 !== (current.flags & 128))
                    for (current = workInProgress2.child; null !== current; ) {
                      nextResource = findFirstSuspended(current);
                      if (null !== nextResource) {
                        workInProgress2.flags |= 128;
                        cutOffTailIfNeeded(newProps, false);
                        current = nextResource.updateQueue;
                        workInProgress2.updateQueue = current;
                        scheduleRetryEffect(workInProgress2, current);
                        workInProgress2.subtreeFlags = 0;
                        current = renderLanes2;
                        for (renderLanes2 = workInProgress2.child; null !== renderLanes2; )
                          resetWorkInProgress(renderLanes2, current), renderLanes2 = renderLanes2.sibling;
                        push(
                          suspenseStackCursor,
                          suspenseStackCursor.current & 1 | 2
                        );
                        isHydrating && pushTreeFork(workInProgress2, newProps.treeForkCount);
                        return workInProgress2.child;
                      }
                      current = current.sibling;
                    }
                  null !== newProps.tail && now() > workInProgressRootRenderTargetTime && (workInProgress2.flags |= 128, type = true, cutOffTailIfNeeded(newProps, false), workInProgress2.lanes = 4194304);
                }
              else {
                if (!type)
                  if (current = findFirstSuspended(nextResource), null !== current) {
                    if (workInProgress2.flags |= 128, type = true, current = current.updateQueue, workInProgress2.updateQueue = current, scheduleRetryEffect(workInProgress2, current), cutOffTailIfNeeded(newProps, true), null === newProps.tail && "hidden" === newProps.tailMode && !nextResource.alternate && !isHydrating)
                      return bubbleProperties(workInProgress2), null;
                  } else
                    2 * now() - newProps.renderingStartTime > workInProgressRootRenderTargetTime && 536870912 !== renderLanes2 && (workInProgress2.flags |= 128, type = true, cutOffTailIfNeeded(newProps, false), workInProgress2.lanes = 4194304);
                newProps.isBackwards ? (nextResource.sibling = workInProgress2.child, workInProgress2.child = nextResource) : (current = newProps.last, null !== current ? current.sibling = nextResource : workInProgress2.child = nextResource, newProps.last = nextResource);
              }
              if (null !== newProps.tail)
                return current = newProps.tail, newProps.rendering = current, newProps.tail = current.sibling, newProps.renderingStartTime = now(), current.sibling = null, renderLanes2 = suspenseStackCursor.current, push(
                  suspenseStackCursor,
                  type ? renderLanes2 & 1 | 2 : renderLanes2 & 1
                ), isHydrating && pushTreeFork(workInProgress2, newProps.treeForkCount), current;
              bubbleProperties(workInProgress2);
              return null;
            case 22:
            case 23:
              return popSuspenseHandler(workInProgress2), popHiddenContext(), newProps = null !== workInProgress2.memoizedState, null !== current ? null !== current.memoizedState !== newProps && (workInProgress2.flags |= 8192) : newProps && (workInProgress2.flags |= 8192), newProps ? 0 !== (renderLanes2 & 536870912) && 0 === (workInProgress2.flags & 128) && (bubbleProperties(workInProgress2), workInProgress2.subtreeFlags & 6 && (workInProgress2.flags |= 8192)) : bubbleProperties(workInProgress2), renderLanes2 = workInProgress2.updateQueue, null !== renderLanes2 && scheduleRetryEffect(workInProgress2, renderLanes2.retryQueue), renderLanes2 = null, null !== current && null !== current.memoizedState && null !== current.memoizedState.cachePool && (renderLanes2 = current.memoizedState.cachePool.pool), newProps = null, null !== workInProgress2.memoizedState && null !== workInProgress2.memoizedState.cachePool && (newProps = workInProgress2.memoizedState.cachePool.pool), newProps !== renderLanes2 && (workInProgress2.flags |= 2048), null !== current && pop(resumedCache), null;
            case 24:
              return renderLanes2 = null, null !== current && (renderLanes2 = current.memoizedState.cache), workInProgress2.memoizedState.cache !== renderLanes2 && (workInProgress2.flags |= 2048), popProvider(CacheContext), bubbleProperties(workInProgress2), null;
            case 25:
              return null;
            case 30:
              return null;
          }
          throw Error(formatProdErrorMessage(156, workInProgress2.tag));
        }
        function unwindWork(current, workInProgress2) {
          popTreeContext(workInProgress2);
          switch (workInProgress2.tag) {
            case 1:
              return current = workInProgress2.flags, current & 65536 ? (workInProgress2.flags = current & -65537 | 128, workInProgress2) : null;
            case 3:
              return popProvider(CacheContext), popHostContainer(), current = workInProgress2.flags, 0 !== (current & 65536) && 0 === (current & 128) ? (workInProgress2.flags = current & -65537 | 128, workInProgress2) : null;
            case 26:
            case 27:
            case 5:
              return popHostContext(workInProgress2), null;
            case 31:
              if (null !== workInProgress2.memoizedState) {
                popSuspenseHandler(workInProgress2);
                if (null === workInProgress2.alternate)
                  throw Error(formatProdErrorMessage(340));
                resetHydrationState();
              }
              current = workInProgress2.flags;
              return current & 65536 ? (workInProgress2.flags = current & -65537 | 128, workInProgress2) : null;
            case 13:
              popSuspenseHandler(workInProgress2);
              current = workInProgress2.memoizedState;
              if (null !== current && null !== current.dehydrated) {
                if (null === workInProgress2.alternate)
                  throw Error(formatProdErrorMessage(340));
                resetHydrationState();
              }
              current = workInProgress2.flags;
              return current & 65536 ? (workInProgress2.flags = current & -65537 | 128, workInProgress2) : null;
            case 19:
              return pop(suspenseStackCursor), null;
            case 4:
              return popHostContainer(), null;
            case 10:
              return popProvider(workInProgress2.type), null;
            case 22:
            case 23:
              return popSuspenseHandler(workInProgress2), popHiddenContext(), null !== current && pop(resumedCache), current = workInProgress2.flags, current & 65536 ? (workInProgress2.flags = current & -65537 | 128, workInProgress2) : null;
            case 24:
              return popProvider(CacheContext), null;
            case 25:
              return null;
            default:
              return null;
          }
        }
        function unwindInterruptedWork(current, interruptedWork) {
          popTreeContext(interruptedWork);
          switch (interruptedWork.tag) {
            case 3:
              popProvider(CacheContext);
              popHostContainer();
              break;
            case 26:
            case 27:
            case 5:
              popHostContext(interruptedWork);
              break;
            case 4:
              popHostContainer();
              break;
            case 31:
              null !== interruptedWork.memoizedState && popSuspenseHandler(interruptedWork);
              break;
            case 13:
              popSuspenseHandler(interruptedWork);
              break;
            case 19:
              pop(suspenseStackCursor);
              break;
            case 10:
              popProvider(interruptedWork.type);
              break;
            case 22:
            case 23:
              popSuspenseHandler(interruptedWork);
              popHiddenContext();
              null !== current && pop(resumedCache);
              break;
            case 24:
              popProvider(CacheContext);
          }
        }
        function commitHookEffectListMount(flags, finishedWork) {
          try {
            var updateQueue = finishedWork.updateQueue, lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;
            if (null !== lastEffect) {
              var firstEffect = lastEffect.next;
              updateQueue = firstEffect;
              do {
                if ((updateQueue.tag & flags) === flags) {
                  lastEffect = void 0;
                  var create = updateQueue.create, inst = updateQueue.inst;
                  lastEffect = create();
                  inst.destroy = lastEffect;
                }
                updateQueue = updateQueue.next;
              } while (updateQueue !== firstEffect);
            }
          } catch (error) {
            captureCommitPhaseError(finishedWork, finishedWork.return, error);
          }
        }
        function commitHookEffectListUnmount(flags, finishedWork, nearestMountedAncestor$jscomp$0) {
          try {
            var updateQueue = finishedWork.updateQueue, lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;
            if (null !== lastEffect) {
              var firstEffect = lastEffect.next;
              updateQueue = firstEffect;
              do {
                if ((updateQueue.tag & flags) === flags) {
                  var inst = updateQueue.inst, destroy = inst.destroy;
                  if (void 0 !== destroy) {
                    inst.destroy = void 0;
                    lastEffect = finishedWork;
                    var nearestMountedAncestor = nearestMountedAncestor$jscomp$0, destroy_ = destroy;
                    try {
                      destroy_();
                    } catch (error) {
                      captureCommitPhaseError(
                        lastEffect,
                        nearestMountedAncestor,
                        error
                      );
                    }
                  }
                }
                updateQueue = updateQueue.next;
              } while (updateQueue !== firstEffect);
            }
          } catch (error) {
            captureCommitPhaseError(finishedWork, finishedWork.return, error);
          }
        }
        function commitClassCallbacks(finishedWork) {
          var updateQueue = finishedWork.updateQueue;
          if (null !== updateQueue) {
            var instance = finishedWork.stateNode;
            try {
              commitCallbacks(updateQueue, instance);
            } catch (error) {
              captureCommitPhaseError(finishedWork, finishedWork.return, error);
            }
          }
        }
        function safelyCallComponentWillUnmount(current, nearestMountedAncestor, instance) {
          instance.props = resolveClassComponentProps(
            current.type,
            current.memoizedProps
          );
          instance.state = current.memoizedState;
          try {
            instance.componentWillUnmount();
          } catch (error) {
            captureCommitPhaseError(current, nearestMountedAncestor, error);
          }
        }
        function safelyAttachRef(current, nearestMountedAncestor) {
          try {
            var ref = current.ref;
            if (null !== ref) {
              switch (current.tag) {
                case 26:
                case 27:
                case 5:
                  var instanceToUse = current.stateNode;
                  break;
                case 30:
                  instanceToUse = current.stateNode;
                  break;
                default:
                  instanceToUse = current.stateNode;
              }
              "function" === typeof ref ? current.refCleanup = ref(instanceToUse) : ref.current = instanceToUse;
            }
          } catch (error) {
            captureCommitPhaseError(current, nearestMountedAncestor, error);
          }
        }
        function safelyDetachRef(current, nearestMountedAncestor) {
          var ref = current.ref, refCleanup = current.refCleanup;
          if (null !== ref)
            if ("function" === typeof refCleanup)
              try {
                refCleanup();
              } catch (error) {
                captureCommitPhaseError(current, nearestMountedAncestor, error);
              } finally {
                current.refCleanup = null, current = current.alternate, null != current && (current.refCleanup = null);
              }
            else if ("function" === typeof ref)
              try {
                ref(null);
              } catch (error$140) {
                captureCommitPhaseError(current, nearestMountedAncestor, error$140);
              }
            else ref.current = null;
        }
        function commitHostMount(finishedWork) {
          var type = finishedWork.type, props = finishedWork.memoizedProps, instance = finishedWork.stateNode;
          try {
            a: switch (type) {
              case "button":
              case "input":
              case "select":
              case "textarea":
                props.autoFocus && instance.focus();
                break a;
              case "img":
                props.src ? instance.src = props.src : props.srcSet && (instance.srcset = props.srcSet);
            }
          } catch (error) {
            captureCommitPhaseError(finishedWork, finishedWork.return, error);
          }
        }
        function commitHostUpdate(finishedWork, newProps, oldProps) {
          try {
            var domElement = finishedWork.stateNode;
            updateProperties(domElement, finishedWork.type, oldProps, newProps);
            domElement[internalPropsKey] = newProps;
          } catch (error) {
            captureCommitPhaseError(finishedWork, finishedWork.return, error);
          }
        }
        function isHostParent(fiber) {
          return 5 === fiber.tag || 3 === fiber.tag || 26 === fiber.tag || 27 === fiber.tag && isSingletonScope(fiber.type) || 4 === fiber.tag;
        }
        function getHostSibling(fiber) {
          a: for (; ; ) {
            for (; null === fiber.sibling; ) {
              if (null === fiber.return || isHostParent(fiber.return)) return null;
              fiber = fiber.return;
            }
            fiber.sibling.return = fiber.return;
            for (fiber = fiber.sibling; 5 !== fiber.tag && 6 !== fiber.tag && 18 !== fiber.tag; ) {
              if (27 === fiber.tag && isSingletonScope(fiber.type)) continue a;
              if (fiber.flags & 2) continue a;
              if (null === fiber.child || 4 === fiber.tag) continue a;
              else fiber.child.return = fiber, fiber = fiber.child;
            }
            if (!(fiber.flags & 2)) return fiber.stateNode;
          }
        }
        function insertOrAppendPlacementNodeIntoContainer(node, before, parent) {
          var tag = node.tag;
          if (5 === tag || 6 === tag)
            node = node.stateNode, before ? (9 === parent.nodeType ? parent.body : "HTML" === parent.nodeName ? parent.ownerDocument.body : parent).insertBefore(node, before) : (before = 9 === parent.nodeType ? parent.body : "HTML" === parent.nodeName ? parent.ownerDocument.body : parent, before.appendChild(node), parent = parent._reactRootContainer, null !== parent && void 0 !== parent || null !== before.onclick || (before.onclick = noop$1));
          else if (4 !== tag && (27 === tag && isSingletonScope(node.type) && (parent = node.stateNode, before = null), node = node.child, null !== node))
            for (insertOrAppendPlacementNodeIntoContainer(node, before, parent), node = node.sibling; null !== node; )
              insertOrAppendPlacementNodeIntoContainer(node, before, parent), node = node.sibling;
        }
        function insertOrAppendPlacementNode(node, before, parent) {
          var tag = node.tag;
          if (5 === tag || 6 === tag)
            node = node.stateNode, before ? parent.insertBefore(node, before) : parent.appendChild(node);
          else if (4 !== tag && (27 === tag && isSingletonScope(node.type) && (parent = node.stateNode), node = node.child, null !== node))
            for (insertOrAppendPlacementNode(node, before, parent), node = node.sibling; null !== node; )
              insertOrAppendPlacementNode(node, before, parent), node = node.sibling;
        }
        function commitHostSingletonAcquisition(finishedWork) {
          var singleton = finishedWork.stateNode, props = finishedWork.memoizedProps;
          try {
            for (var type = finishedWork.type, attributes = singleton.attributes; attributes.length; )
              singleton.removeAttributeNode(attributes[0]);
            setInitialProperties(singleton, type, props);
            singleton[internalInstanceKey] = finishedWork;
            singleton[internalPropsKey] = props;
          } catch (error) {
            captureCommitPhaseError(finishedWork, finishedWork.return, error);
          }
        }
        var offscreenSubtreeIsHidden = false, offscreenSubtreeWasHidden = false, needsFormReset = false, PossiblyWeakSet = "function" === typeof WeakSet ? WeakSet : Set, nextEffect = null;
        function commitBeforeMutationEffects(root2, firstChild) {
          root2 = root2.containerInfo;
          eventsEnabled = _enabled;
          root2 = getActiveElementDeep(root2);
          if (hasSelectionCapabilities(root2)) {
            if ("selectionStart" in root2)
              var JSCompiler_temp = {
                start: root2.selectionStart,
                end: root2.selectionEnd
              };
            else
              a: {
                JSCompiler_temp = (JSCompiler_temp = root2.ownerDocument) && JSCompiler_temp.defaultView || window;
                var selection = JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();
                if (selection && 0 !== selection.rangeCount) {
                  JSCompiler_temp = selection.anchorNode;
                  var anchorOffset = selection.anchorOffset, focusNode = selection.focusNode;
                  selection = selection.focusOffset;
                  try {
                    JSCompiler_temp.nodeType, focusNode.nodeType;
                  } catch (e$20) {
                    JSCompiler_temp = null;
                    break a;
                  }
                  var length = 0, start = -1, end = -1, indexWithinAnchor = 0, indexWithinFocus = 0, node = root2, parentNode = null;
                  b: for (; ; ) {
                    for (var next; ; ) {
                      node !== JSCompiler_temp || 0 !== anchorOffset && 3 !== node.nodeType || (start = length + anchorOffset);
                      node !== focusNode || 0 !== selection && 3 !== node.nodeType || (end = length + selection);
                      3 === node.nodeType && (length += node.nodeValue.length);
                      if (null === (next = node.firstChild)) break;
                      parentNode = node;
                      node = next;
                    }
                    for (; ; ) {
                      if (node === root2) break b;
                      parentNode === JSCompiler_temp && ++indexWithinAnchor === anchorOffset && (start = length);
                      parentNode === focusNode && ++indexWithinFocus === selection && (end = length);
                      if (null !== (next = node.nextSibling)) break;
                      node = parentNode;
                      parentNode = node.parentNode;
                    }
                    node = next;
                  }
                  JSCompiler_temp = -1 === start || -1 === end ? null : { start, end };
                } else JSCompiler_temp = null;
              }
            JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };
          } else JSCompiler_temp = null;
          selectionInformation = { focusedElem: root2, selectionRange: JSCompiler_temp };
          _enabled = false;
          for (nextEffect = firstChild; null !== nextEffect; )
            if (firstChild = nextEffect, root2 = firstChild.child, 0 !== (firstChild.subtreeFlags & 1028) && null !== root2)
              root2.return = firstChild, nextEffect = root2;
            else
              for (; null !== nextEffect; ) {
                firstChild = nextEffect;
                focusNode = firstChild.alternate;
                root2 = firstChild.flags;
                switch (firstChild.tag) {
                  case 0:
                    if (0 !== (root2 & 4) && (root2 = firstChild.updateQueue, root2 = null !== root2 ? root2.events : null, null !== root2))
                      for (JSCompiler_temp = 0; JSCompiler_temp < root2.length; JSCompiler_temp++)
                        anchorOffset = root2[JSCompiler_temp], anchorOffset.ref.impl = anchorOffset.nextImpl;
                    break;
                  case 11:
                  case 15:
                    break;
                  case 1:
                    if (0 !== (root2 & 1024) && null !== focusNode) {
                      root2 = void 0;
                      JSCompiler_temp = firstChild;
                      anchorOffset = focusNode.memoizedProps;
                      focusNode = focusNode.memoizedState;
                      selection = JSCompiler_temp.stateNode;
                      try {
                        var resolvedPrevProps = resolveClassComponentProps(
                          JSCompiler_temp.type,
                          anchorOffset
                        );
                        root2 = selection.getSnapshotBeforeUpdate(
                          resolvedPrevProps,
                          focusNode
                        );
                        selection.__reactInternalSnapshotBeforeUpdate = root2;
                      } catch (error) {
                        captureCommitPhaseError(
                          JSCompiler_temp,
                          JSCompiler_temp.return,
                          error
                        );
                      }
                    }
                    break;
                  case 3:
                    if (0 !== (root2 & 1024)) {
                      if (root2 = firstChild.stateNode.containerInfo, JSCompiler_temp = root2.nodeType, 9 === JSCompiler_temp)
                        clearContainerSparingly(root2);
                      else if (1 === JSCompiler_temp)
                        switch (root2.nodeName) {
                          case "HEAD":
                          case "HTML":
                          case "BODY":
                            clearContainerSparingly(root2);
                            break;
                          default:
                            root2.textContent = "";
                        }
                    }
                    break;
                  case 5:
                  case 26:
                  case 27:
                  case 6:
                  case 4:
                  case 17:
                    break;
                  default:
                    if (0 !== (root2 & 1024)) throw Error(formatProdErrorMessage(163));
                }
                root2 = firstChild.sibling;
                if (null !== root2) {
                  root2.return = firstChild.return;
                  nextEffect = root2;
                  break;
                }
                nextEffect = firstChild.return;
              }
        }
        function commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {
          var flags = finishedWork.flags;
          switch (finishedWork.tag) {
            case 0:
            case 11:
            case 15:
              recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
              flags & 4 && commitHookEffectListMount(5, finishedWork);
              break;
            case 1:
              recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
              if (flags & 4)
                if (finishedRoot = finishedWork.stateNode, null === current)
                  try {
                    finishedRoot.componentDidMount();
                  } catch (error) {
                    captureCommitPhaseError(finishedWork, finishedWork.return, error);
                  }
                else {
                  var prevProps = resolveClassComponentProps(
                    finishedWork.type,
                    current.memoizedProps
                  );
                  current = current.memoizedState;
                  try {
                    finishedRoot.componentDidUpdate(
                      prevProps,
                      current,
                      finishedRoot.__reactInternalSnapshotBeforeUpdate
                    );
                  } catch (error$139) {
                    captureCommitPhaseError(
                      finishedWork,
                      finishedWork.return,
                      error$139
                    );
                  }
                }
              flags & 64 && commitClassCallbacks(finishedWork);
              flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);
              break;
            case 3:
              recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
              if (flags & 64 && (finishedRoot = finishedWork.updateQueue, null !== finishedRoot)) {
                current = null;
                if (null !== finishedWork.child)
                  switch (finishedWork.child.tag) {
                    case 27:
                    case 5:
                      current = finishedWork.child.stateNode;
                      break;
                    case 1:
                      current = finishedWork.child.stateNode;
                  }
                try {
                  commitCallbacks(finishedRoot, current);
                } catch (error) {
                  captureCommitPhaseError(finishedWork, finishedWork.return, error);
                }
              }
              break;
            case 27:
              null === current && flags & 4 && commitHostSingletonAcquisition(finishedWork);
            case 26:
            case 5:
              recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
              null === current && flags & 4 && commitHostMount(finishedWork);
              flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);
              break;
            case 12:
              recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
              break;
            case 31:
              recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
              flags & 4 && commitActivityHydrationCallbacks(finishedRoot, finishedWork);
              break;
            case 13:
              recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
              flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);
              flags & 64 && (finishedRoot = finishedWork.memoizedState, null !== finishedRoot && (finishedRoot = finishedRoot.dehydrated, null !== finishedRoot && (finishedWork = retryDehydratedSuspenseBoundary.bind(
                null,
                finishedWork
              ), registerSuspenseInstanceRetry(finishedRoot, finishedWork))));
              break;
            case 22:
              flags = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;
              if (!flags) {
                current = null !== current && null !== current.memoizedState || offscreenSubtreeWasHidden;
                prevProps = offscreenSubtreeIsHidden;
                var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;
                offscreenSubtreeIsHidden = flags;
                (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden ? recursivelyTraverseReappearLayoutEffects(
                  finishedRoot,
                  finishedWork,
                  0 !== (finishedWork.subtreeFlags & 8772)
                ) : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
                offscreenSubtreeIsHidden = prevProps;
                offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;
              }
              break;
            case 30:
              break;
            default:
              recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
          }
        }
        function detachFiberAfterEffects(fiber) {
          var alternate = fiber.alternate;
          null !== alternate && (fiber.alternate = null, detachFiberAfterEffects(alternate));
          fiber.child = null;
          fiber.deletions = null;
          fiber.sibling = null;
          5 === fiber.tag && (alternate = fiber.stateNode, null !== alternate && detachDeletedInstance(alternate));
          fiber.stateNode = null;
          fiber.return = null;
          fiber.dependencies = null;
          fiber.memoizedProps = null;
          fiber.memoizedState = null;
          fiber.pendingProps = null;
          fiber.stateNode = null;
          fiber.updateQueue = null;
        }
        var hostParent = null, hostParentIsContainer = false;
        function recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, parent) {
          for (parent = parent.child; null !== parent; )
            commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent), parent = parent.sibling;
        }
        function commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, deletedFiber) {
          if (injectedHook && "function" === typeof injectedHook.onCommitFiberUnmount)
            try {
              injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);
            } catch (err) {
            }
          switch (deletedFiber.tag) {
            case 26:
              offscreenSubtreeWasHidden || safelyDetachRef(deletedFiber, nearestMountedAncestor);
              recursivelyTraverseDeletionEffects(
                finishedRoot,
                nearestMountedAncestor,
                deletedFiber
              );
              deletedFiber.memoizedState ? deletedFiber.memoizedState.count-- : deletedFiber.stateNode && (deletedFiber = deletedFiber.stateNode, deletedFiber.parentNode.removeChild(deletedFiber));
              break;
            case 27:
              offscreenSubtreeWasHidden || safelyDetachRef(deletedFiber, nearestMountedAncestor);
              var prevHostParent = hostParent, prevHostParentIsContainer = hostParentIsContainer;
              isSingletonScope(deletedFiber.type) && (hostParent = deletedFiber.stateNode, hostParentIsContainer = false);
              recursivelyTraverseDeletionEffects(
                finishedRoot,
                nearestMountedAncestor,
                deletedFiber
              );
              releaseSingletonInstance(deletedFiber.stateNode);
              hostParent = prevHostParent;
              hostParentIsContainer = prevHostParentIsContainer;
              break;
            case 5:
              offscreenSubtreeWasHidden || safelyDetachRef(deletedFiber, nearestMountedAncestor);
            case 6:
              prevHostParent = hostParent;
              prevHostParentIsContainer = hostParentIsContainer;
              hostParent = null;
              recursivelyTraverseDeletionEffects(
                finishedRoot,
                nearestMountedAncestor,
                deletedFiber
              );
              hostParent = prevHostParent;
              hostParentIsContainer = prevHostParentIsContainer;
              if (null !== hostParent)
                if (hostParentIsContainer)
                  try {
                    (9 === hostParent.nodeType ? hostParent.body : "HTML" === hostParent.nodeName ? hostParent.ownerDocument.body : hostParent).removeChild(deletedFiber.stateNode);
                  } catch (error) {
                    captureCommitPhaseError(
                      deletedFiber,
                      nearestMountedAncestor,
                      error
                    );
                  }
                else
                  try {
                    hostParent.removeChild(deletedFiber.stateNode);
                  } catch (error) {
                    captureCommitPhaseError(
                      deletedFiber,
                      nearestMountedAncestor,
                      error
                    );
                  }
              break;
            case 18:
              null !== hostParent && (hostParentIsContainer ? (finishedRoot = hostParent, clearHydrationBoundary(
                9 === finishedRoot.nodeType ? finishedRoot.body : "HTML" === finishedRoot.nodeName ? finishedRoot.ownerDocument.body : finishedRoot,
                deletedFiber.stateNode
              ), retryIfBlockedOn(finishedRoot)) : clearHydrationBoundary(hostParent, deletedFiber.stateNode));
              break;
            case 4:
              prevHostParent = hostParent;
              prevHostParentIsContainer = hostParentIsContainer;
              hostParent = deletedFiber.stateNode.containerInfo;
              hostParentIsContainer = true;
              recursivelyTraverseDeletionEffects(
                finishedRoot,
                nearestMountedAncestor,
                deletedFiber
              );
              hostParent = prevHostParent;
              hostParentIsContainer = prevHostParentIsContainer;
              break;
            case 0:
            case 11:
            case 14:
            case 15:
              commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);
              offscreenSubtreeWasHidden || commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);
              recursivelyTraverseDeletionEffects(
                finishedRoot,
                nearestMountedAncestor,
                deletedFiber
              );
              break;
            case 1:
              offscreenSubtreeWasHidden || (safelyDetachRef(deletedFiber, nearestMountedAncestor), prevHostParent = deletedFiber.stateNode, "function" === typeof prevHostParent.componentWillUnmount && safelyCallComponentWillUnmount(
                deletedFiber,
                nearestMountedAncestor,
                prevHostParent
              ));
              recursivelyTraverseDeletionEffects(
                finishedRoot,
                nearestMountedAncestor,
                deletedFiber
              );
              break;
            case 21:
              recursivelyTraverseDeletionEffects(
                finishedRoot,
                nearestMountedAncestor,
                deletedFiber
              );
              break;
            case 22:
              offscreenSubtreeWasHidden = (prevHostParent = offscreenSubtreeWasHidden) || null !== deletedFiber.memoizedState;
              recursivelyTraverseDeletionEffects(
                finishedRoot,
                nearestMountedAncestor,
                deletedFiber
              );
              offscreenSubtreeWasHidden = prevHostParent;
              break;
            default:
              recursivelyTraverseDeletionEffects(
                finishedRoot,
                nearestMountedAncestor,
                deletedFiber
              );
          }
        }
        function commitActivityHydrationCallbacks(finishedRoot, finishedWork) {
          if (null === finishedWork.memoizedState && (finishedRoot = finishedWork.alternate, null !== finishedRoot && (finishedRoot = finishedRoot.memoizedState, null !== finishedRoot))) {
            finishedRoot = finishedRoot.dehydrated;
            try {
              retryIfBlockedOn(finishedRoot);
            } catch (error) {
              captureCommitPhaseError(finishedWork, finishedWork.return, error);
            }
          }
        }
        function commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {
          if (null === finishedWork.memoizedState && (finishedRoot = finishedWork.alternate, null !== finishedRoot && (finishedRoot = finishedRoot.memoizedState, null !== finishedRoot && (finishedRoot = finishedRoot.dehydrated, null !== finishedRoot))))
            try {
              retryIfBlockedOn(finishedRoot);
            } catch (error) {
              captureCommitPhaseError(finishedWork, finishedWork.return, error);
            }
        }
        function getRetryCache(finishedWork) {
          switch (finishedWork.tag) {
            case 31:
            case 13:
            case 19:
              var retryCache = finishedWork.stateNode;
              null === retryCache && (retryCache = finishedWork.stateNode = new PossiblyWeakSet());
              return retryCache;
            case 22:
              return finishedWork = finishedWork.stateNode, retryCache = finishedWork._retryCache, null === retryCache && (retryCache = finishedWork._retryCache = new PossiblyWeakSet()), retryCache;
            default:
              throw Error(formatProdErrorMessage(435, finishedWork.tag));
          }
        }
        function attachSuspenseRetryListeners(finishedWork, wakeables) {
          var retryCache = getRetryCache(finishedWork);
          wakeables.forEach(function(wakeable) {
            if (!retryCache.has(wakeable)) {
              retryCache.add(wakeable);
              var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);
              wakeable.then(retry, retry);
            }
          });
        }
        function recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {
          var deletions = parentFiber.deletions;
          if (null !== deletions)
            for (var i = 0; i < deletions.length; i++) {
              var childToDelete = deletions[i], root2 = root$jscomp$0, returnFiber = parentFiber, parent = returnFiber;
              a: for (; null !== parent; ) {
                switch (parent.tag) {
                  case 27:
                    if (isSingletonScope(parent.type)) {
                      hostParent = parent.stateNode;
                      hostParentIsContainer = false;
                      break a;
                    }
                    break;
                  case 5:
                    hostParent = parent.stateNode;
                    hostParentIsContainer = false;
                    break a;
                  case 3:
                  case 4:
                    hostParent = parent.stateNode.containerInfo;
                    hostParentIsContainer = true;
                    break a;
                }
                parent = parent.return;
              }
              if (null === hostParent) throw Error(formatProdErrorMessage(160));
              commitDeletionEffectsOnFiber(root2, returnFiber, childToDelete);
              hostParent = null;
              hostParentIsContainer = false;
              root2 = childToDelete.alternate;
              null !== root2 && (root2.return = null);
              childToDelete.return = null;
            }
          if (parentFiber.subtreeFlags & 13886)
            for (parentFiber = parentFiber.child; null !== parentFiber; )
              commitMutationEffectsOnFiber(parentFiber, root$jscomp$0), parentFiber = parentFiber.sibling;
        }
        var currentHoistableRoot = null;
        function commitMutationEffectsOnFiber(finishedWork, root2) {
          var current = finishedWork.alternate, flags = finishedWork.flags;
          switch (finishedWork.tag) {
            case 0:
            case 11:
            case 14:
            case 15:
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              flags & 4 && (commitHookEffectListUnmount(3, finishedWork, finishedWork.return), commitHookEffectListMount(3, finishedWork), commitHookEffectListUnmount(5, finishedWork, finishedWork.return));
              break;
            case 1:
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              flags & 512 && (offscreenSubtreeWasHidden || null === current || safelyDetachRef(current, current.return));
              flags & 64 && offscreenSubtreeIsHidden && (finishedWork = finishedWork.updateQueue, null !== finishedWork && (flags = finishedWork.callbacks, null !== flags && (current = finishedWork.shared.hiddenCallbacks, finishedWork.shared.hiddenCallbacks = null === current ? flags : current.concat(flags))));
              break;
            case 26:
              var hoistableRoot = currentHoistableRoot;
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              flags & 512 && (offscreenSubtreeWasHidden || null === current || safelyDetachRef(current, current.return));
              if (flags & 4) {
                var currentResource = null !== current ? current.memoizedState : null;
                flags = finishedWork.memoizedState;
                if (null === current)
                  if (null === flags)
                    if (null === finishedWork.stateNode) {
                      a: {
                        flags = finishedWork.type;
                        current = finishedWork.memoizedProps;
                        hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;
                        b: switch (flags) {
                          case "title":
                            currentResource = hoistableRoot.getElementsByTagName("title")[0];
                            if (!currentResource || currentResource[internalHoistableMarker] || currentResource[internalInstanceKey] || "http://www.w3.org/2000/svg" === currentResource.namespaceURI || currentResource.hasAttribute("itemprop"))
                              currentResource = hoistableRoot.createElement(flags), hoistableRoot.head.insertBefore(
                                currentResource,
                                hoistableRoot.querySelector("head > title")
                              );
                            setInitialProperties(currentResource, flags, current);
                            currentResource[internalInstanceKey] = finishedWork;
                            markNodeAsHoistable(currentResource);
                            flags = currentResource;
                            break a;
                          case "link":
                            var maybeNodes = getHydratableHoistableCache(
                              "link",
                              "href",
                              hoistableRoot
                            ).get(flags + (current.href || ""));
                            if (maybeNodes) {
                              for (var i = 0; i < maybeNodes.length; i++)
                                if (currentResource = maybeNodes[i], currentResource.getAttribute("href") === (null == current.href || "" === current.href ? null : current.href) && currentResource.getAttribute("rel") === (null == current.rel ? null : current.rel) && currentResource.getAttribute("title") === (null == current.title ? null : current.title) && currentResource.getAttribute("crossorigin") === (null == current.crossOrigin ? null : current.crossOrigin)) {
                                  maybeNodes.splice(i, 1);
                                  break b;
                                }
                            }
                            currentResource = hoistableRoot.createElement(flags);
                            setInitialProperties(currentResource, flags, current);
                            hoistableRoot.head.appendChild(currentResource);
                            break;
                          case "meta":
                            if (maybeNodes = getHydratableHoistableCache(
                              "meta",
                              "content",
                              hoistableRoot
                            ).get(flags + (current.content || ""))) {
                              for (i = 0; i < maybeNodes.length; i++)
                                if (currentResource = maybeNodes[i], currentResource.getAttribute("content") === (null == current.content ? null : "" + current.content) && currentResource.getAttribute("name") === (null == current.name ? null : current.name) && currentResource.getAttribute("property") === (null == current.property ? null : current.property) && currentResource.getAttribute("http-equiv") === (null == current.httpEquiv ? null : current.httpEquiv) && currentResource.getAttribute("charset") === (null == current.charSet ? null : current.charSet)) {
                                  maybeNodes.splice(i, 1);
                                  break b;
                                }
                            }
                            currentResource = hoistableRoot.createElement(flags);
                            setInitialProperties(currentResource, flags, current);
                            hoistableRoot.head.appendChild(currentResource);
                            break;
                          default:
                            throw Error(formatProdErrorMessage(468, flags));
                        }
                        currentResource[internalInstanceKey] = finishedWork;
                        markNodeAsHoistable(currentResource);
                        flags = currentResource;
                      }
                      finishedWork.stateNode = flags;
                    } else
                      mountHoistable(
                        hoistableRoot,
                        finishedWork.type,
                        finishedWork.stateNode
                      );
                  else
                    finishedWork.stateNode = acquireResource(
                      hoistableRoot,
                      flags,
                      finishedWork.memoizedProps
                    );
                else
                  currentResource !== flags ? (null === currentResource ? null !== current.stateNode && (current = current.stateNode, current.parentNode.removeChild(current)) : currentResource.count--, null === flags ? mountHoistable(
                    hoistableRoot,
                    finishedWork.type,
                    finishedWork.stateNode
                  ) : acquireResource(
                    hoistableRoot,
                    flags,
                    finishedWork.memoizedProps
                  )) : null === flags && null !== finishedWork.stateNode && commitHostUpdate(
                    finishedWork,
                    finishedWork.memoizedProps,
                    current.memoizedProps
                  );
              }
              break;
            case 27:
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              flags & 512 && (offscreenSubtreeWasHidden || null === current || safelyDetachRef(current, current.return));
              null !== current && flags & 4 && commitHostUpdate(
                finishedWork,
                finishedWork.memoizedProps,
                current.memoizedProps
              );
              break;
            case 5:
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              flags & 512 && (offscreenSubtreeWasHidden || null === current || safelyDetachRef(current, current.return));
              if (finishedWork.flags & 32) {
                hoistableRoot = finishedWork.stateNode;
                try {
                  setTextContent(hoistableRoot, "");
                } catch (error) {
                  captureCommitPhaseError(finishedWork, finishedWork.return, error);
                }
              }
              flags & 4 && null != finishedWork.stateNode && (hoistableRoot = finishedWork.memoizedProps, commitHostUpdate(
                finishedWork,
                hoistableRoot,
                null !== current ? current.memoizedProps : hoistableRoot
              ));
              flags & 1024 && (needsFormReset = true);
              break;
            case 6:
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              if (flags & 4) {
                if (null === finishedWork.stateNode)
                  throw Error(formatProdErrorMessage(162));
                flags = finishedWork.memoizedProps;
                current = finishedWork.stateNode;
                try {
                  current.nodeValue = flags;
                } catch (error) {
                  captureCommitPhaseError(finishedWork, finishedWork.return, error);
                }
              }
              break;
            case 3:
              tagCaches = null;
              hoistableRoot = currentHoistableRoot;
              currentHoistableRoot = getHoistableRoot(root2.containerInfo);
              recursivelyTraverseMutationEffects(root2, finishedWork);
              currentHoistableRoot = hoistableRoot;
              commitReconciliationEffects(finishedWork);
              if (flags & 4 && null !== current && current.memoizedState.isDehydrated)
                try {
                  retryIfBlockedOn(root2.containerInfo);
                } catch (error) {
                  captureCommitPhaseError(finishedWork, finishedWork.return, error);
                }
              needsFormReset && (needsFormReset = false, recursivelyResetForms(finishedWork));
              break;
            case 4:
              flags = currentHoistableRoot;
              currentHoistableRoot = getHoistableRoot(
                finishedWork.stateNode.containerInfo
              );
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              currentHoistableRoot = flags;
              break;
            case 12:
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              break;
            case 31:
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              flags & 4 && (flags = finishedWork.updateQueue, null !== flags && (finishedWork.updateQueue = null, attachSuspenseRetryListeners(finishedWork, flags)));
              break;
            case 13:
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              finishedWork.child.flags & 8192 && null !== finishedWork.memoizedState !== (null !== current && null !== current.memoizedState) && (globalMostRecentFallbackTime = now());
              flags & 4 && (flags = finishedWork.updateQueue, null !== flags && (finishedWork.updateQueue = null, attachSuspenseRetryListeners(finishedWork, flags)));
              break;
            case 22:
              hoistableRoot = null !== finishedWork.memoizedState;
              var wasHidden = null !== current && null !== current.memoizedState, prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden, prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;
              offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || hoistableRoot;
              offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || wasHidden;
              recursivelyTraverseMutationEffects(root2, finishedWork);
              offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;
              offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;
              commitReconciliationEffects(finishedWork);
              if (flags & 8192)
                a: for (root2 = finishedWork.stateNode, root2._visibility = hoistableRoot ? root2._visibility & -2 : root2._visibility | 1, hoistableRoot && (null === current || wasHidden || offscreenSubtreeIsHidden || offscreenSubtreeWasHidden || recursivelyTraverseDisappearLayoutEffects(finishedWork)), current = null, root2 = finishedWork; ; ) {
                  if (5 === root2.tag || 26 === root2.tag) {
                    if (null === current) {
                      wasHidden = current = root2;
                      try {
                        if (currentResource = wasHidden.stateNode, hoistableRoot)
                          maybeNodes = currentResource.style, "function" === typeof maybeNodes.setProperty ? maybeNodes.setProperty("display", "none", "important") : maybeNodes.display = "none";
                        else {
                          i = wasHidden.stateNode;
                          var styleProp = wasHidden.memoizedProps.style, display = void 0 !== styleProp && null !== styleProp && styleProp.hasOwnProperty("display") ? styleProp.display : null;
                          i.style.display = null == display || "boolean" === typeof display ? "" : ("" + display).trim();
                        }
                      } catch (error) {
                        captureCommitPhaseError(wasHidden, wasHidden.return, error);
                      }
                    }
                  } else if (6 === root2.tag) {
                    if (null === current) {
                      wasHidden = root2;
                      try {
                        wasHidden.stateNode.nodeValue = hoistableRoot ? "" : wasHidden.memoizedProps;
                      } catch (error) {
                        captureCommitPhaseError(wasHidden, wasHidden.return, error);
                      }
                    }
                  } else if (18 === root2.tag) {
                    if (null === current) {
                      wasHidden = root2;
                      try {
                        var instance = wasHidden.stateNode;
                        hoistableRoot ? hideOrUnhideDehydratedBoundary(instance, true) : hideOrUnhideDehydratedBoundary(wasHidden.stateNode, false);
                      } catch (error) {
                        captureCommitPhaseError(wasHidden, wasHidden.return, error);
                      }
                    }
                  } else if ((22 !== root2.tag && 23 !== root2.tag || null === root2.memoizedState || root2 === finishedWork) && null !== root2.child) {
                    root2.child.return = root2;
                    root2 = root2.child;
                    continue;
                  }
                  if (root2 === finishedWork) break a;
                  for (; null === root2.sibling; ) {
                    if (null === root2.return || root2.return === finishedWork) break a;
                    current === root2 && (current = null);
                    root2 = root2.return;
                  }
                  current === root2 && (current = null);
                  root2.sibling.return = root2.return;
                  root2 = root2.sibling;
                }
              flags & 4 && (flags = finishedWork.updateQueue, null !== flags && (current = flags.retryQueue, null !== current && (flags.retryQueue = null, attachSuspenseRetryListeners(finishedWork, current))));
              break;
            case 19:
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              flags & 4 && (flags = finishedWork.updateQueue, null !== flags && (finishedWork.updateQueue = null, attachSuspenseRetryListeners(finishedWork, flags)));
              break;
            case 30:
              break;
            case 21:
              break;
            default:
              recursivelyTraverseMutationEffects(root2, finishedWork), commitReconciliationEffects(finishedWork);
          }
        }
        function commitReconciliationEffects(finishedWork) {
          var flags = finishedWork.flags;
          if (flags & 2) {
            try {
              for (var hostParentFiber, parentFiber = finishedWork.return; null !== parentFiber; ) {
                if (isHostParent(parentFiber)) {
                  hostParentFiber = parentFiber;
                  break;
                }
                parentFiber = parentFiber.return;
              }
              if (null == hostParentFiber) throw Error(formatProdErrorMessage(160));
              switch (hostParentFiber.tag) {
                case 27:
                  var parent = hostParentFiber.stateNode, before = getHostSibling(finishedWork);
                  insertOrAppendPlacementNode(finishedWork, before, parent);
                  break;
                case 5:
                  var parent$141 = hostParentFiber.stateNode;
                  hostParentFiber.flags & 32 && (setTextContent(parent$141, ""), hostParentFiber.flags &= -33);
                  var before$142 = getHostSibling(finishedWork);
                  insertOrAppendPlacementNode(finishedWork, before$142, parent$141);
                  break;
                case 3:
                case 4:
                  var parent$143 = hostParentFiber.stateNode.containerInfo, before$144 = getHostSibling(finishedWork);
                  insertOrAppendPlacementNodeIntoContainer(
                    finishedWork,
                    before$144,
                    parent$143
                  );
                  break;
                default:
                  throw Error(formatProdErrorMessage(161));
              }
            } catch (error) {
              captureCommitPhaseError(finishedWork, finishedWork.return, error);
            }
            finishedWork.flags &= -3;
          }
          flags & 4096 && (finishedWork.flags &= -4097);
        }
        function recursivelyResetForms(parentFiber) {
          if (parentFiber.subtreeFlags & 1024)
            for (parentFiber = parentFiber.child; null !== parentFiber; ) {
              var fiber = parentFiber;
              recursivelyResetForms(fiber);
              5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();
              parentFiber = parentFiber.sibling;
            }
        }
        function recursivelyTraverseLayoutEffects(root2, parentFiber) {
          if (parentFiber.subtreeFlags & 8772)
            for (parentFiber = parentFiber.child; null !== parentFiber; )
              commitLayoutEffectOnFiber(root2, parentFiber.alternate, parentFiber), parentFiber = parentFiber.sibling;
        }
        function recursivelyTraverseDisappearLayoutEffects(parentFiber) {
          for (parentFiber = parentFiber.child; null !== parentFiber; ) {
            var finishedWork = parentFiber;
            switch (finishedWork.tag) {
              case 0:
              case 11:
              case 14:
              case 15:
                commitHookEffectListUnmount(4, finishedWork, finishedWork.return);
                recursivelyTraverseDisappearLayoutEffects(finishedWork);
                break;
              case 1:
                safelyDetachRef(finishedWork, finishedWork.return);
                var instance = finishedWork.stateNode;
                "function" === typeof instance.componentWillUnmount && safelyCallComponentWillUnmount(
                  finishedWork,
                  finishedWork.return,
                  instance
                );
                recursivelyTraverseDisappearLayoutEffects(finishedWork);
                break;
              case 27:
                releaseSingletonInstance(finishedWork.stateNode);
              case 26:
              case 5:
                safelyDetachRef(finishedWork, finishedWork.return);
                recursivelyTraverseDisappearLayoutEffects(finishedWork);
                break;
              case 22:
                null === finishedWork.memoizedState && recursivelyTraverseDisappearLayoutEffects(finishedWork);
                break;
              case 30:
                recursivelyTraverseDisappearLayoutEffects(finishedWork);
                break;
              default:
                recursivelyTraverseDisappearLayoutEffects(finishedWork);
            }
            parentFiber = parentFiber.sibling;
          }
        }
        function recursivelyTraverseReappearLayoutEffects(finishedRoot$jscomp$0, parentFiber, includeWorkInProgressEffects) {
          includeWorkInProgressEffects = includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);
          for (parentFiber = parentFiber.child; null !== parentFiber; ) {
            var current = parentFiber.alternate, finishedRoot = finishedRoot$jscomp$0, finishedWork = parentFiber, flags = finishedWork.flags;
            switch (finishedWork.tag) {
              case 0:
              case 11:
              case 15:
                recursivelyTraverseReappearLayoutEffects(
                  finishedRoot,
                  finishedWork,
                  includeWorkInProgressEffects
                );
                commitHookEffectListMount(4, finishedWork);
                break;
              case 1:
                recursivelyTraverseReappearLayoutEffects(
                  finishedRoot,
                  finishedWork,
                  includeWorkInProgressEffects
                );
                current = finishedWork;
                finishedRoot = current.stateNode;
                if ("function" === typeof finishedRoot.componentDidMount)
                  try {
                    finishedRoot.componentDidMount();
                  } catch (error) {
                    captureCommitPhaseError(current, current.return, error);
                  }
                current = finishedWork;
                finishedRoot = current.updateQueue;
                if (null !== finishedRoot) {
                  var instance = current.stateNode;
                  try {
                    var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;
                    if (null !== hiddenCallbacks)
                      for (finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0; finishedRoot < hiddenCallbacks.length; finishedRoot++)
                        callCallback(hiddenCallbacks[finishedRoot], instance);
                  } catch (error) {
                    captureCommitPhaseError(current, current.return, error);
                  }
                }
                includeWorkInProgressEffects && flags & 64 && commitClassCallbacks(finishedWork);
                safelyAttachRef(finishedWork, finishedWork.return);
                break;
              case 27:
                commitHostSingletonAcquisition(finishedWork);
              case 26:
              case 5:
                recursivelyTraverseReappearLayoutEffects(
                  finishedRoot,
                  finishedWork,
                  includeWorkInProgressEffects
                );
                includeWorkInProgressEffects && null === current && flags & 4 && commitHostMount(finishedWork);
                safelyAttachRef(finishedWork, finishedWork.return);
                break;
              case 12:
                recursivelyTraverseReappearLayoutEffects(
                  finishedRoot,
                  finishedWork,
                  includeWorkInProgressEffects
                );
                break;
              case 31:
                recursivelyTraverseReappearLayoutEffects(
                  finishedRoot,
                  finishedWork,
                  includeWorkInProgressEffects
                );
                includeWorkInProgressEffects && flags & 4 && commitActivityHydrationCallbacks(finishedRoot, finishedWork);
                break;
              case 13:
                recursivelyTraverseReappearLayoutEffects(
                  finishedRoot,
                  finishedWork,
                  includeWorkInProgressEffects
                );
                includeWorkInProgressEffects && flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);
                break;
              case 22:
                null === finishedWork.memoizedState && recursivelyTraverseReappearLayoutEffects(
                  finishedRoot,
                  finishedWork,
                  includeWorkInProgressEffects
                );
                safelyAttachRef(finishedWork, finishedWork.return);
                break;
              case 30:
                break;
              default:
                recursivelyTraverseReappearLayoutEffects(
                  finishedRoot,
                  finishedWork,
                  includeWorkInProgressEffects
                );
            }
            parentFiber = parentFiber.sibling;
          }
        }
        function commitOffscreenPassiveMountEffects(current, finishedWork) {
          var previousCache = null;
          null !== current && null !== current.memoizedState && null !== current.memoizedState.cachePool && (previousCache = current.memoizedState.cachePool.pool);
          current = null;
          null !== finishedWork.memoizedState && null !== finishedWork.memoizedState.cachePool && (current = finishedWork.memoizedState.cachePool.pool);
          current !== previousCache && (null != current && current.refCount++, null != previousCache && releaseCache(previousCache));
        }
        function commitCachePassiveMountEffect(current, finishedWork) {
          current = null;
          null !== finishedWork.alternate && (current = finishedWork.alternate.memoizedState.cache);
          finishedWork = finishedWork.memoizedState.cache;
          finishedWork !== current && (finishedWork.refCount++, null != current && releaseCache(current));
        }
        function recursivelyTraversePassiveMountEffects(root2, parentFiber, committedLanes, committedTransitions) {
          if (parentFiber.subtreeFlags & 10256)
            for (parentFiber = parentFiber.child; null !== parentFiber; )
              commitPassiveMountOnFiber(
                root2,
                parentFiber,
                committedLanes,
                committedTransitions
              ), parentFiber = parentFiber.sibling;
        }
        function commitPassiveMountOnFiber(finishedRoot, finishedWork, committedLanes, committedTransitions) {
          var flags = finishedWork.flags;
          switch (finishedWork.tag) {
            case 0:
            case 11:
            case 15:
              recursivelyTraversePassiveMountEffects(
                finishedRoot,
                finishedWork,
                committedLanes,
                committedTransitions
              );
              flags & 2048 && commitHookEffectListMount(9, finishedWork);
              break;
            case 1:
              recursivelyTraversePassiveMountEffects(
                finishedRoot,
                finishedWork,
                committedLanes,
                committedTransitions
              );
              break;
            case 3:
              recursivelyTraversePassiveMountEffects(
                finishedRoot,
                finishedWork,
                committedLanes,
                committedTransitions
              );
              flags & 2048 && (finishedRoot = null, null !== finishedWork.alternate && (finishedRoot = finishedWork.alternate.memoizedState.cache), finishedWork = finishedWork.memoizedState.cache, finishedWork !== finishedRoot && (finishedWork.refCount++, null != finishedRoot && releaseCache(finishedRoot)));
              break;
            case 12:
              if (flags & 2048) {
                recursivelyTraversePassiveMountEffects(
                  finishedRoot,
                  finishedWork,
                  committedLanes,
                  committedTransitions
                );
                finishedRoot = finishedWork.stateNode;
                try {
                  var _finishedWork$memoize2 = finishedWork.memoizedProps, id = _finishedWork$memoize2.id, onPostCommit = _finishedWork$memoize2.onPostCommit;
                  "function" === typeof onPostCommit && onPostCommit(
                    id,
                    null === finishedWork.alternate ? "mount" : "update",
                    finishedRoot.passiveEffectDuration,
                    -0
                  );
                } catch (error) {
                  captureCommitPhaseError(finishedWork, finishedWork.return, error);
                }
              } else
                recursivelyTraversePassiveMountEffects(
                  finishedRoot,
                  finishedWork,
                  committedLanes,
                  committedTransitions
                );
              break;
            case 31:
              recursivelyTraversePassiveMountEffects(
                finishedRoot,
                finishedWork,
                committedLanes,
                committedTransitions
              );
              break;
            case 13:
              recursivelyTraversePassiveMountEffects(
                finishedRoot,
                finishedWork,
                committedLanes,
                committedTransitions
              );
              break;
            case 23:
              break;
            case 22:
              _finishedWork$memoize2 = finishedWork.stateNode;
              id = finishedWork.alternate;
              null !== finishedWork.memoizedState ? _finishedWork$memoize2._visibility & 2 ? recursivelyTraversePassiveMountEffects(
                finishedRoot,
                finishedWork,
                committedLanes,
                committedTransitions
              ) : recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork) : _finishedWork$memoize2._visibility & 2 ? recursivelyTraversePassiveMountEffects(
                finishedRoot,
                finishedWork,
                committedLanes,
                committedTransitions
              ) : (_finishedWork$memoize2._visibility |= 2, recursivelyTraverseReconnectPassiveEffects(
                finishedRoot,
                finishedWork,
                committedLanes,
                committedTransitions,
                0 !== (finishedWork.subtreeFlags & 10256) || false
              ));
              flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);
              break;
            case 24:
              recursivelyTraversePassiveMountEffects(
                finishedRoot,
                finishedWork,
                committedLanes,
                committedTransitions
              );
              flags & 2048 && commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);
              break;
            default:
              recursivelyTraversePassiveMountEffects(
                finishedRoot,
                finishedWork,
                committedLanes,
                committedTransitions
              );
          }
        }
        function recursivelyTraverseReconnectPassiveEffects(finishedRoot$jscomp$0, parentFiber, committedLanes$jscomp$0, committedTransitions$jscomp$0, includeWorkInProgressEffects) {
          includeWorkInProgressEffects = includeWorkInProgressEffects && (0 !== (parentFiber.subtreeFlags & 10256) || false);
          for (parentFiber = parentFiber.child; null !== parentFiber; ) {
            var finishedRoot = finishedRoot$jscomp$0, finishedWork = parentFiber, committedLanes = committedLanes$jscomp$0, committedTransitions = committedTransitions$jscomp$0, flags = finishedWork.flags;
            switch (finishedWork.tag) {
              case 0:
              case 11:
              case 15:
                recursivelyTraverseReconnectPassiveEffects(
                  finishedRoot,
                  finishedWork,
                  committedLanes,
                  committedTransitions,
                  includeWorkInProgressEffects
                );
                commitHookEffectListMount(8, finishedWork);
                break;
              case 23:
                break;
              case 22:
                var instance = finishedWork.stateNode;
                null !== finishedWork.memoizedState ? instance._visibility & 2 ? recursivelyTraverseReconnectPassiveEffects(
                  finishedRoot,
                  finishedWork,
                  committedLanes,
                  committedTransitions,
                  includeWorkInProgressEffects
                ) : recursivelyTraverseAtomicPassiveEffects(
                  finishedRoot,
                  finishedWork
                ) : (instance._visibility |= 2, recursivelyTraverseReconnectPassiveEffects(
                  finishedRoot,
                  finishedWork,
                  committedLanes,
                  committedTransitions,
                  includeWorkInProgressEffects
                ));
                includeWorkInProgressEffects && flags & 2048 && commitOffscreenPassiveMountEffects(
                  finishedWork.alternate,
                  finishedWork
                );
                break;
              case 24:
                recursivelyTraverseReconnectPassiveEffects(
                  finishedRoot,
                  finishedWork,
                  committedLanes,
                  committedTransitions,
                  includeWorkInProgressEffects
                );
                includeWorkInProgressEffects && flags & 2048 && commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);
                break;
              default:
                recursivelyTraverseReconnectPassiveEffects(
                  finishedRoot,
                  finishedWork,
                  committedLanes,
                  committedTransitions,
                  includeWorkInProgressEffects
                );
            }
            parentFiber = parentFiber.sibling;
          }
        }
        function recursivelyTraverseAtomicPassiveEffects(finishedRoot$jscomp$0, parentFiber) {
          if (parentFiber.subtreeFlags & 10256)
            for (parentFiber = parentFiber.child; null !== parentFiber; ) {
              var finishedRoot = finishedRoot$jscomp$0, finishedWork = parentFiber, flags = finishedWork.flags;
              switch (finishedWork.tag) {
                case 22:
                  recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);
                  flags & 2048 && commitOffscreenPassiveMountEffects(
                    finishedWork.alternate,
                    finishedWork
                  );
                  break;
                case 24:
                  recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);
                  flags & 2048 && commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);
                  break;
                default:
                  recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);
              }
              parentFiber = parentFiber.sibling;
            }
        }
        var suspenseyCommitFlag = 8192;
        function recursivelyAccumulateSuspenseyCommit(parentFiber, committedLanes, suspendedState) {
          if (parentFiber.subtreeFlags & suspenseyCommitFlag)
            for (parentFiber = parentFiber.child; null !== parentFiber; )
              accumulateSuspenseyCommitOnFiber(
                parentFiber,
                committedLanes,
                suspendedState
              ), parentFiber = parentFiber.sibling;
        }
        function accumulateSuspenseyCommitOnFiber(fiber, committedLanes, suspendedState) {
          switch (fiber.tag) {
            case 26:
              recursivelyAccumulateSuspenseyCommit(
                fiber,
                committedLanes,
                suspendedState
              );
              fiber.flags & suspenseyCommitFlag && null !== fiber.memoizedState && suspendResource(
                suspendedState,
                currentHoistableRoot,
                fiber.memoizedState,
                fiber.memoizedProps
              );
              break;
            case 5:
              recursivelyAccumulateSuspenseyCommit(
                fiber,
                committedLanes,
                suspendedState
              );
              break;
            case 3:
            case 4:
              var previousHoistableRoot = currentHoistableRoot;
              currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);
              recursivelyAccumulateSuspenseyCommit(
                fiber,
                committedLanes,
                suspendedState
              );
              currentHoistableRoot = previousHoistableRoot;
              break;
            case 22:
              null === fiber.memoizedState && (previousHoistableRoot = fiber.alternate, null !== previousHoistableRoot && null !== previousHoistableRoot.memoizedState ? (previousHoistableRoot = suspenseyCommitFlag, suspenseyCommitFlag = 16777216, recursivelyAccumulateSuspenseyCommit(
                fiber,
                committedLanes,
                suspendedState
              ), suspenseyCommitFlag = previousHoistableRoot) : recursivelyAccumulateSuspenseyCommit(
                fiber,
                committedLanes,
                suspendedState
              ));
              break;
            default:
              recursivelyAccumulateSuspenseyCommit(
                fiber,
                committedLanes,
                suspendedState
              );
          }
        }
        function detachAlternateSiblings(parentFiber) {
          var previousFiber = parentFiber.alternate;
          if (null !== previousFiber && (parentFiber = previousFiber.child, null !== parentFiber)) {
            previousFiber.child = null;
            do
              previousFiber = parentFiber.sibling, parentFiber.sibling = null, parentFiber = previousFiber;
            while (null !== parentFiber);
          }
        }
        function recursivelyTraversePassiveUnmountEffects(parentFiber) {
          var deletions = parentFiber.deletions;
          if (0 !== (parentFiber.flags & 16)) {
            if (null !== deletions)
              for (var i = 0; i < deletions.length; i++) {
                var childToDelete = deletions[i];
                nextEffect = childToDelete;
                commitPassiveUnmountEffectsInsideOfDeletedTree_begin(
                  childToDelete,
                  parentFiber
                );
              }
            detachAlternateSiblings(parentFiber);
          }
          if (parentFiber.subtreeFlags & 10256)
            for (parentFiber = parentFiber.child; null !== parentFiber; )
              commitPassiveUnmountOnFiber(parentFiber), parentFiber = parentFiber.sibling;
        }
        function commitPassiveUnmountOnFiber(finishedWork) {
          switch (finishedWork.tag) {
            case 0:
            case 11:
            case 15:
              recursivelyTraversePassiveUnmountEffects(finishedWork);
              finishedWork.flags & 2048 && commitHookEffectListUnmount(9, finishedWork, finishedWork.return);
              break;
            case 3:
              recursivelyTraversePassiveUnmountEffects(finishedWork);
              break;
            case 12:
              recursivelyTraversePassiveUnmountEffects(finishedWork);
              break;
            case 22:
              var instance = finishedWork.stateNode;
              null !== finishedWork.memoizedState && instance._visibility & 2 && (null === finishedWork.return || 13 !== finishedWork.return.tag) ? (instance._visibility &= -3, recursivelyTraverseDisconnectPassiveEffects(finishedWork)) : recursivelyTraversePassiveUnmountEffects(finishedWork);
              break;
            default:
              recursivelyTraversePassiveUnmountEffects(finishedWork);
          }
        }
        function recursivelyTraverseDisconnectPassiveEffects(parentFiber) {
          var deletions = parentFiber.deletions;
          if (0 !== (parentFiber.flags & 16)) {
            if (null !== deletions)
              for (var i = 0; i < deletions.length; i++) {
                var childToDelete = deletions[i];
                nextEffect = childToDelete;
                commitPassiveUnmountEffectsInsideOfDeletedTree_begin(
                  childToDelete,
                  parentFiber
                );
              }
            detachAlternateSiblings(parentFiber);
          }
          for (parentFiber = parentFiber.child; null !== parentFiber; ) {
            deletions = parentFiber;
            switch (deletions.tag) {
              case 0:
              case 11:
              case 15:
                commitHookEffectListUnmount(8, deletions, deletions.return);
                recursivelyTraverseDisconnectPassiveEffects(deletions);
                break;
              case 22:
                i = deletions.stateNode;
                i._visibility & 2 && (i._visibility &= -3, recursivelyTraverseDisconnectPassiveEffects(deletions));
                break;
              default:
                recursivelyTraverseDisconnectPassiveEffects(deletions);
            }
            parentFiber = parentFiber.sibling;
          }
        }
        function commitPassiveUnmountEffectsInsideOfDeletedTree_begin(deletedSubtreeRoot, nearestMountedAncestor) {
          for (; null !== nextEffect; ) {
            var fiber = nextEffect;
            switch (fiber.tag) {
              case 0:
              case 11:
              case 15:
                commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);
                break;
              case 23:
              case 22:
                if (null !== fiber.memoizedState && null !== fiber.memoizedState.cachePool) {
                  var cache = fiber.memoizedState.cachePool.pool;
                  null != cache && cache.refCount++;
                }
                break;
              case 24:
                releaseCache(fiber.memoizedState.cache);
            }
            cache = fiber.child;
            if (null !== cache) cache.return = fiber, nextEffect = cache;
            else
              a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {
                cache = nextEffect;
                var sibling = cache.sibling, returnFiber = cache.return;
                detachFiberAfterEffects(cache);
                if (cache === fiber) {
                  nextEffect = null;
                  break a;
                }
                if (null !== sibling) {
                  sibling.return = returnFiber;
                  nextEffect = sibling;
                  break a;
                }
                nextEffect = returnFiber;
              }
          }
        }
        var DefaultAsyncDispatcher = {
          getCacheForType: function(resourceType) {
            var cache = readContext(CacheContext), cacheForType = cache.data.get(resourceType);
            void 0 === cacheForType && (cacheForType = resourceType(), cache.data.set(resourceType, cacheForType));
            return cacheForType;
          },
          cacheSignal: function() {
            return readContext(CacheContext).controller.signal;
          }
        }, PossiblyWeakMap = "function" === typeof WeakMap ? WeakMap : Map, executionContext = 0, workInProgressRoot = null, workInProgress = null, workInProgressRootRenderLanes = 0, workInProgressSuspendedReason = 0, workInProgressThrownValue = null, workInProgressRootDidSkipSuspendedSiblings = false, workInProgressRootIsPrerendering = false, workInProgressRootDidAttachPingListener = false, entangledRenderLanes = 0, workInProgressRootExitStatus = 0, workInProgressRootSkippedLanes = 0, workInProgressRootInterleavedUpdatedLanes = 0, workInProgressRootPingedLanes = 0, workInProgressDeferredLane = 0, workInProgressSuspendedRetryLanes = 0, workInProgressRootConcurrentErrors = null, workInProgressRootRecoverableErrors = null, workInProgressRootDidIncludeRecursiveRenderUpdate = false, globalMostRecentFallbackTime = 0, globalMostRecentTransitionTime = 0, workInProgressRootRenderTargetTime = Infinity, workInProgressTransitions = null, legacyErrorBoundariesThatAlreadyFailed = null, pendingEffectsStatus = 0, pendingEffectsRoot = null, pendingFinishedWork = null, pendingEffectsLanes = 0, pendingEffectsRemainingLanes = 0, pendingPassiveTransitions = null, pendingRecoverableErrors = null, nestedUpdateCount = 0, rootWithNestedUpdates = null;
        function requestUpdateLane() {
          return 0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes ? workInProgressRootRenderLanes & -workInProgressRootRenderLanes : null !== ReactSharedInternals.T ? requestTransitionLane() : resolveUpdatePriority();
        }
        function requestDeferredLane() {
          if (0 === workInProgressDeferredLane)
            if (0 === (workInProgressRootRenderLanes & 536870912) || isHydrating) {
              var lane = nextTransitionDeferredLane;
              nextTransitionDeferredLane <<= 1;
              0 === (nextTransitionDeferredLane & 3932160) && (nextTransitionDeferredLane = 262144);
              workInProgressDeferredLane = lane;
            } else workInProgressDeferredLane = 536870912;
          lane = suspenseHandlerStackCursor.current;
          null !== lane && (lane.flags |= 32);
          return workInProgressDeferredLane;
        }
        function scheduleUpdateOnFiber(root2, fiber, lane) {
          if (root2 === workInProgressRoot && (2 === workInProgressSuspendedReason || 9 === workInProgressSuspendedReason) || null !== root2.cancelPendingCommit)
            prepareFreshStack(root2, 0), markRootSuspended(
              root2,
              workInProgressRootRenderLanes,
              workInProgressDeferredLane,
              false
            );
          markRootUpdated$1(root2, lane);
          if (0 === (executionContext & 2) || root2 !== workInProgressRoot)
            root2 === workInProgressRoot && (0 === (executionContext & 2) && (workInProgressRootInterleavedUpdatedLanes |= lane), 4 === workInProgressRootExitStatus && markRootSuspended(
              root2,
              workInProgressRootRenderLanes,
              workInProgressDeferredLane,
              false
            )), ensureRootIsScheduled(root2);
        }
        function performWorkOnRoot(root$jscomp$0, lanes, forceSync) {
          if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));
          var shouldTimeSlice = !forceSync && 0 === (lanes & 127) && 0 === (lanes & root$jscomp$0.expiredLanes) || checkIfRootIsPrerendering(root$jscomp$0, lanes), exitStatus = shouldTimeSlice ? renderRootConcurrent(root$jscomp$0, lanes) : renderRootSync(root$jscomp$0, lanes, true), renderWasConcurrent = shouldTimeSlice;
          do {
            if (0 === exitStatus) {
              workInProgressRootIsPrerendering && !shouldTimeSlice && markRootSuspended(root$jscomp$0, lanes, 0, false);
              break;
            } else {
              forceSync = root$jscomp$0.current.alternate;
              if (renderWasConcurrent && !isRenderConsistentWithExternalStores(forceSync)) {
                exitStatus = renderRootSync(root$jscomp$0, lanes, false);
                renderWasConcurrent = false;
                continue;
              }
              if (2 === exitStatus) {
                renderWasConcurrent = lanes;
                if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)
                  var JSCompiler_inline_result = 0;
                else
                  JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913, JSCompiler_inline_result = 0 !== JSCompiler_inline_result ? JSCompiler_inline_result : JSCompiler_inline_result & 536870912 ? 536870912 : 0;
                if (0 !== JSCompiler_inline_result) {
                  lanes = JSCompiler_inline_result;
                  a: {
                    var root2 = root$jscomp$0;
                    exitStatus = workInProgressRootConcurrentErrors;
                    var wasRootDehydrated = root2.current.memoizedState.isDehydrated;
                    wasRootDehydrated && (prepareFreshStack(root2, JSCompiler_inline_result).flags |= 256);
                    JSCompiler_inline_result = renderRootSync(
                      root2,
                      JSCompiler_inline_result,
                      false
                    );
                    if (2 !== JSCompiler_inline_result) {
                      if (workInProgressRootDidAttachPingListener && !wasRootDehydrated) {
                        root2.errorRecoveryDisabledLanes |= renderWasConcurrent;
                        workInProgressRootInterleavedUpdatedLanes |= renderWasConcurrent;
                        exitStatus = 4;
                        break a;
                      }
                      renderWasConcurrent = workInProgressRootRecoverableErrors;
                      workInProgressRootRecoverableErrors = exitStatus;
                      null !== renderWasConcurrent && (null === workInProgressRootRecoverableErrors ? workInProgressRootRecoverableErrors = renderWasConcurrent : workInProgressRootRecoverableErrors.push.apply(
                        workInProgressRootRecoverableErrors,
                        renderWasConcurrent
                      ));
                    }
                    exitStatus = JSCompiler_inline_result;
                  }
                  renderWasConcurrent = false;
                  if (2 !== exitStatus) continue;
                }
              }
              if (1 === exitStatus) {
                prepareFreshStack(root$jscomp$0, 0);
                markRootSuspended(root$jscomp$0, lanes, 0, true);
                break;
              }
              a: {
                shouldTimeSlice = root$jscomp$0;
                renderWasConcurrent = exitStatus;
                switch (renderWasConcurrent) {
                  case 0:
                  case 1:
                    throw Error(formatProdErrorMessage(345));
                  case 4:
                    if ((lanes & 4194048) !== lanes) break;
                  case 6:
                    markRootSuspended(
                      shouldTimeSlice,
                      lanes,
                      workInProgressDeferredLane,
                      !workInProgressRootDidSkipSuspendedSiblings
                    );
                    break a;
                  case 2:
                    workInProgressRootRecoverableErrors = null;
                    break;
                  case 3:
                  case 5:
                    break;
                  default:
                    throw Error(formatProdErrorMessage(329));
                }
                if ((lanes & 62914560) === lanes && (exitStatus = globalMostRecentFallbackTime + 300 - now(), 10 < exitStatus)) {
                  markRootSuspended(
                    shouldTimeSlice,
                    lanes,
                    workInProgressDeferredLane,
                    !workInProgressRootDidSkipSuspendedSiblings
                  );
                  if (0 !== getNextLanes(shouldTimeSlice, 0, true)) break a;
                  pendingEffectsLanes = lanes;
                  shouldTimeSlice.timeoutHandle = scheduleTimeout(
                    commitRootWhenReady.bind(
                      null,
                      shouldTimeSlice,
                      forceSync,
                      workInProgressRootRecoverableErrors,
                      workInProgressTransitions,
                      workInProgressRootDidIncludeRecursiveRenderUpdate,
                      lanes,
                      workInProgressDeferredLane,
                      workInProgressRootInterleavedUpdatedLanes,
                      workInProgressSuspendedRetryLanes,
                      workInProgressRootDidSkipSuspendedSiblings,
                      renderWasConcurrent,
                      "Throttled",
                      -0,
                      0
                    ),
                    exitStatus
                  );
                  break a;
                }
                commitRootWhenReady(
                  shouldTimeSlice,
                  forceSync,
                  workInProgressRootRecoverableErrors,
                  workInProgressTransitions,
                  workInProgressRootDidIncludeRecursiveRenderUpdate,
                  lanes,
                  workInProgressDeferredLane,
                  workInProgressRootInterleavedUpdatedLanes,
                  workInProgressSuspendedRetryLanes,
                  workInProgressRootDidSkipSuspendedSiblings,
                  renderWasConcurrent,
                  null,
                  -0,
                  0
                );
              }
            }
            break;
          } while (1);
          ensureRootIsScheduled(root$jscomp$0);
        }
        function commitRootWhenReady(root2, finishedWork, recoverableErrors, transitions, didIncludeRenderPhaseUpdate, lanes, spawnedLane, updatedLanes, suspendedRetryLanes, didSkipSuspendedSiblings, exitStatus, suspendedCommitReason, completedRenderStartTime, completedRenderEndTime) {
          root2.timeoutHandle = -1;
          suspendedCommitReason = finishedWork.subtreeFlags;
          if (suspendedCommitReason & 8192 || 16785408 === (suspendedCommitReason & 16785408)) {
            suspendedCommitReason = {
              stylesheets: null,
              count: 0,
              imgCount: 0,
              imgBytes: 0,
              suspenseyImages: [],
              waitingForImages: true,
              waitingForViewTransition: false,
              unsuspend: noop$1
            };
            accumulateSuspenseyCommitOnFiber(
              finishedWork,
              lanes,
              suspendedCommitReason
            );
            var timeoutOffset = (lanes & 62914560) === lanes ? globalMostRecentFallbackTime - now() : (lanes & 4194048) === lanes ? globalMostRecentTransitionTime - now() : 0;
            timeoutOffset = waitForCommitToBeReady(
              suspendedCommitReason,
              timeoutOffset
            );
            if (null !== timeoutOffset) {
              pendingEffectsLanes = lanes;
              root2.cancelPendingCommit = timeoutOffset(
                commitRoot.bind(
                  null,
                  root2,
                  finishedWork,
                  lanes,
                  recoverableErrors,
                  transitions,
                  didIncludeRenderPhaseUpdate,
                  spawnedLane,
                  updatedLanes,
                  suspendedRetryLanes,
                  exitStatus,
                  suspendedCommitReason,
                  null,
                  completedRenderStartTime,
                  completedRenderEndTime
                )
              );
              markRootSuspended(root2, lanes, spawnedLane, !didSkipSuspendedSiblings);
              return;
            }
          }
          commitRoot(
            root2,
            finishedWork,
            lanes,
            recoverableErrors,
            transitions,
            didIncludeRenderPhaseUpdate,
            spawnedLane,
            updatedLanes,
            suspendedRetryLanes
          );
        }
        function isRenderConsistentWithExternalStores(finishedWork) {
          for (var node = finishedWork; ; ) {
            var tag = node.tag;
            if ((0 === tag || 11 === tag || 15 === tag) && node.flags & 16384 && (tag = node.updateQueue, null !== tag && (tag = tag.stores, null !== tag)))
              for (var i = 0; i < tag.length; i++) {
                var check = tag[i], getSnapshot = check.getSnapshot;
                check = check.value;
                try {
                  if (!objectIs(getSnapshot(), check)) return false;
                } catch (error) {
                  return false;
                }
              }
            tag = node.child;
            if (node.subtreeFlags & 16384 && null !== tag)
              tag.return = node, node = tag;
            else {
              if (node === finishedWork) break;
              for (; null === node.sibling; ) {
                if (null === node.return || node.return === finishedWork) return true;
                node = node.return;
              }
              node.sibling.return = node.return;
              node = node.sibling;
            }
          }
          return true;
        }
        function markRootSuspended(root2, suspendedLanes, spawnedLane, didAttemptEntireTree) {
          suspendedLanes &= ~workInProgressRootPingedLanes;
          suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;
          root2.suspendedLanes |= suspendedLanes;
          root2.pingedLanes &= ~suspendedLanes;
          didAttemptEntireTree && (root2.warmLanes |= suspendedLanes);
          didAttemptEntireTree = root2.expirationTimes;
          for (var lanes = suspendedLanes; 0 < lanes; ) {
            var index$6 = 31 - clz32(lanes), lane = 1 << index$6;
            didAttemptEntireTree[index$6] = -1;
            lanes &= ~lane;
          }
          0 !== spawnedLane && markSpawnedDeferredLane(root2, spawnedLane, suspendedLanes);
        }
        function flushSyncWork$1() {
          return 0 === (executionContext & 6) ? (flushSyncWorkAcrossRoots_impl(0), false) : true;
        }
        function resetWorkInProgressStack() {
          if (null !== workInProgress) {
            if (0 === workInProgressSuspendedReason)
              var interruptedWork = workInProgress.return;
            else
              interruptedWork = workInProgress, lastContextDependency = currentlyRenderingFiber$1 = null, resetHooksOnUnwind(interruptedWork), thenableState$1 = null, thenableIndexCounter$1 = 0, interruptedWork = workInProgress;
            for (; null !== interruptedWork; )
              unwindInterruptedWork(interruptedWork.alternate, interruptedWork), interruptedWork = interruptedWork.return;
            workInProgress = null;
          }
        }
        function prepareFreshStack(root2, lanes) {
          var timeoutHandle = root2.timeoutHandle;
          -1 !== timeoutHandle && (root2.timeoutHandle = -1, cancelTimeout(timeoutHandle));
          timeoutHandle = root2.cancelPendingCommit;
          null !== timeoutHandle && (root2.cancelPendingCommit = null, timeoutHandle());
          pendingEffectsLanes = 0;
          resetWorkInProgressStack();
          workInProgressRoot = root2;
          workInProgress = timeoutHandle = createWorkInProgress(root2.current, null);
          workInProgressRootRenderLanes = lanes;
          workInProgressSuspendedReason = 0;
          workInProgressThrownValue = null;
          workInProgressRootDidSkipSuspendedSiblings = false;
          workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root2, lanes);
          workInProgressRootDidAttachPingListener = false;
          workInProgressSuspendedRetryLanes = workInProgressDeferredLane = workInProgressRootPingedLanes = workInProgressRootInterleavedUpdatedLanes = workInProgressRootSkippedLanes = workInProgressRootExitStatus = 0;
          workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors = null;
          workInProgressRootDidIncludeRecursiveRenderUpdate = false;
          0 !== (lanes & 8) && (lanes |= lanes & 32);
          var allEntangledLanes = root2.entangledLanes;
          if (0 !== allEntangledLanes)
            for (root2 = root2.entanglements, allEntangledLanes &= lanes; 0 < allEntangledLanes; ) {
              var index$4 = 31 - clz32(allEntangledLanes), lane = 1 << index$4;
              lanes |= root2[index$4];
              allEntangledLanes &= ~lane;
            }
          entangledRenderLanes = lanes;
          finishQueueingConcurrentUpdates();
          return timeoutHandle;
        }
        function handleThrow(root2, thrownValue) {
          currentlyRenderingFiber = null;
          ReactSharedInternals.H = ContextOnlyDispatcher;
          thrownValue === SuspenseException || thrownValue === SuspenseActionException ? (thrownValue = getSuspendedThenable(), workInProgressSuspendedReason = 3) : thrownValue === SuspenseyCommitException ? (thrownValue = getSuspendedThenable(), workInProgressSuspendedReason = 4) : workInProgressSuspendedReason = thrownValue === SelectiveHydrationException ? 8 : null !== thrownValue && "object" === typeof thrownValue && "function" === typeof thrownValue.then ? 6 : 1;
          workInProgressThrownValue = thrownValue;
          null === workInProgress && (workInProgressRootExitStatus = 1, logUncaughtError(
            root2,
            createCapturedValueAtFiber(thrownValue, root2.current)
          ));
        }
        function shouldRemainOnPreviousScreen() {
          var handler = suspenseHandlerStackCursor.current;
          return null === handler ? true : (workInProgressRootRenderLanes & 4194048) === workInProgressRootRenderLanes ? null === shellBoundary ? true : false : (workInProgressRootRenderLanes & 62914560) === workInProgressRootRenderLanes || 0 !== (workInProgressRootRenderLanes & 536870912) ? handler === shellBoundary : false;
        }
        function pushDispatcher() {
          var prevDispatcher = ReactSharedInternals.H;
          ReactSharedInternals.H = ContextOnlyDispatcher;
          return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;
        }
        function pushAsyncDispatcher() {
          var prevAsyncDispatcher = ReactSharedInternals.A;
          ReactSharedInternals.A = DefaultAsyncDispatcher;
          return prevAsyncDispatcher;
        }
        function renderDidSuspendDelayIfPossible() {
          workInProgressRootExitStatus = 4;
          workInProgressRootDidSkipSuspendedSiblings || (workInProgressRootRenderLanes & 4194048) !== workInProgressRootRenderLanes && null !== suspenseHandlerStackCursor.current || (workInProgressRootIsPrerendering = true);
          0 === (workInProgressRootSkippedLanes & 134217727) && 0 === (workInProgressRootInterleavedUpdatedLanes & 134217727) || null === workInProgressRoot || markRootSuspended(
            workInProgressRoot,
            workInProgressRootRenderLanes,
            workInProgressDeferredLane,
            false
          );
        }
        function renderRootSync(root2, lanes, shouldYieldForPrerendering) {
          var prevExecutionContext = executionContext;
          executionContext |= 2;
          var prevDispatcher = pushDispatcher(), prevAsyncDispatcher = pushAsyncDispatcher();
          if (workInProgressRoot !== root2 || workInProgressRootRenderLanes !== lanes)
            workInProgressTransitions = null, prepareFreshStack(root2, lanes);
          lanes = false;
          var exitStatus = workInProgressRootExitStatus;
          a: do
            try {
              if (0 !== workInProgressSuspendedReason && null !== workInProgress) {
                var unitOfWork = workInProgress, thrownValue = workInProgressThrownValue;
                switch (workInProgressSuspendedReason) {
                  case 8:
                    resetWorkInProgressStack();
                    exitStatus = 6;
                    break a;
                  case 3:
                  case 2:
                  case 9:
                  case 6:
                    null === suspenseHandlerStackCursor.current && (lanes = true);
                    var reason = workInProgressSuspendedReason;
                    workInProgressSuspendedReason = 0;
                    workInProgressThrownValue = null;
                    throwAndUnwindWorkLoop(root2, unitOfWork, thrownValue, reason);
                    if (shouldYieldForPrerendering && workInProgressRootIsPrerendering) {
                      exitStatus = 0;
                      break a;
                    }
                    break;
                  default:
                    reason = workInProgressSuspendedReason, workInProgressSuspendedReason = 0, workInProgressThrownValue = null, throwAndUnwindWorkLoop(root2, unitOfWork, thrownValue, reason);
                }
              }
              workLoopSync();
              exitStatus = workInProgressRootExitStatus;
              break;
            } catch (thrownValue$165) {
              handleThrow(root2, thrownValue$165);
            }
          while (1);
          lanes && root2.shellSuspendCounter++;
          lastContextDependency = currentlyRenderingFiber$1 = null;
          executionContext = prevExecutionContext;
          ReactSharedInternals.H = prevDispatcher;
          ReactSharedInternals.A = prevAsyncDispatcher;
          null === workInProgress && (workInProgressRoot = null, workInProgressRootRenderLanes = 0, finishQueueingConcurrentUpdates());
          return exitStatus;
        }
        function workLoopSync() {
          for (; null !== workInProgress; ) performUnitOfWork(workInProgress);
        }
        function renderRootConcurrent(root2, lanes) {
          var prevExecutionContext = executionContext;
          executionContext |= 2;
          var prevDispatcher = pushDispatcher(), prevAsyncDispatcher = pushAsyncDispatcher();
          workInProgressRoot !== root2 || workInProgressRootRenderLanes !== lanes ? (workInProgressTransitions = null, workInProgressRootRenderTargetTime = now() + 500, prepareFreshStack(root2, lanes)) : workInProgressRootIsPrerendering = checkIfRootIsPrerendering(
            root2,
            lanes
          );
          a: do
            try {
              if (0 !== workInProgressSuspendedReason && null !== workInProgress) {
                lanes = workInProgress;
                var thrownValue = workInProgressThrownValue;
                b: switch (workInProgressSuspendedReason) {
                  case 1:
                    workInProgressSuspendedReason = 0;
                    workInProgressThrownValue = null;
                    throwAndUnwindWorkLoop(root2, lanes, thrownValue, 1);
                    break;
                  case 2:
                  case 9:
                    if (isThenableResolved(thrownValue)) {
                      workInProgressSuspendedReason = 0;
                      workInProgressThrownValue = null;
                      replaySuspendedUnitOfWork(lanes);
                      break;
                    }
                    lanes = function() {
                      2 !== workInProgressSuspendedReason && 9 !== workInProgressSuspendedReason || workInProgressRoot !== root2 || (workInProgressSuspendedReason = 7);
                      ensureRootIsScheduled(root2);
                    };
                    thrownValue.then(lanes, lanes);
                    break a;
                  case 3:
                    workInProgressSuspendedReason = 7;
                    break a;
                  case 4:
                    workInProgressSuspendedReason = 5;
                    break a;
                  case 7:
                    isThenableResolved(thrownValue) ? (workInProgressSuspendedReason = 0, workInProgressThrownValue = null, replaySuspendedUnitOfWork(lanes)) : (workInProgressSuspendedReason = 0, workInProgressThrownValue = null, throwAndUnwindWorkLoop(root2, lanes, thrownValue, 7));
                    break;
                  case 5:
                    var resource = null;
                    switch (workInProgress.tag) {
                      case 26:
                        resource = workInProgress.memoizedState;
                      case 5:
                      case 27:
                        var hostFiber = workInProgress;
                        if (resource ? preloadResource(resource) : hostFiber.stateNode.complete) {
                          workInProgressSuspendedReason = 0;
                          workInProgressThrownValue = null;
                          var sibling = hostFiber.sibling;
                          if (null !== sibling) workInProgress = sibling;
                          else {
                            var returnFiber = hostFiber.return;
                            null !== returnFiber ? (workInProgress = returnFiber, completeUnitOfWork(returnFiber)) : workInProgress = null;
                          }
                          break b;
                        }
                    }
                    workInProgressSuspendedReason = 0;
                    workInProgressThrownValue = null;
                    throwAndUnwindWorkLoop(root2, lanes, thrownValue, 5);
                    break;
                  case 6:
                    workInProgressSuspendedReason = 0;
                    workInProgressThrownValue = null;
                    throwAndUnwindWorkLoop(root2, lanes, thrownValue, 6);
                    break;
                  case 8:
                    resetWorkInProgressStack();
                    workInProgressRootExitStatus = 6;
                    break a;
                  default:
                    throw Error(formatProdErrorMessage(462));
                }
              }
              workLoopConcurrentByScheduler();
              break;
            } catch (thrownValue$167) {
              handleThrow(root2, thrownValue$167);
            }
          while (1);
          lastContextDependency = currentlyRenderingFiber$1 = null;
          ReactSharedInternals.H = prevDispatcher;
          ReactSharedInternals.A = prevAsyncDispatcher;
          executionContext = prevExecutionContext;
          if (null !== workInProgress) return 0;
          workInProgressRoot = null;
          workInProgressRootRenderLanes = 0;
          finishQueueingConcurrentUpdates();
          return workInProgressRootExitStatus;
        }
        function workLoopConcurrentByScheduler() {
          for (; null !== workInProgress && !shouldYield(); )
            performUnitOfWork(workInProgress);
        }
        function performUnitOfWork(unitOfWork) {
          var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);
          unitOfWork.memoizedProps = unitOfWork.pendingProps;
          null === next ? completeUnitOfWork(unitOfWork) : workInProgress = next;
        }
        function replaySuspendedUnitOfWork(unitOfWork) {
          var next = unitOfWork;
          var current = next.alternate;
          switch (next.tag) {
            case 15:
            case 0:
              next = replayFunctionComponent(
                current,
                next,
                next.pendingProps,
                next.type,
                void 0,
                workInProgressRootRenderLanes
              );
              break;
            case 11:
              next = replayFunctionComponent(
                current,
                next,
                next.pendingProps,
                next.type.render,
                next.ref,
                workInProgressRootRenderLanes
              );
              break;
            case 5:
              resetHooksOnUnwind(next);
            default:
              unwindInterruptedWork(current, next), next = workInProgress = resetWorkInProgress(next, entangledRenderLanes), next = beginWork(current, next, entangledRenderLanes);
          }
          unitOfWork.memoizedProps = unitOfWork.pendingProps;
          null === next ? completeUnitOfWork(unitOfWork) : workInProgress = next;
        }
        function throwAndUnwindWorkLoop(root2, unitOfWork, thrownValue, suspendedReason) {
          lastContextDependency = currentlyRenderingFiber$1 = null;
          resetHooksOnUnwind(unitOfWork);
          thenableState$1 = null;
          thenableIndexCounter$1 = 0;
          var returnFiber = unitOfWork.return;
          try {
            if (throwException(
              root2,
              returnFiber,
              unitOfWork,
              thrownValue,
              workInProgressRootRenderLanes
            )) {
              workInProgressRootExitStatus = 1;
              logUncaughtError(
                root2,
                createCapturedValueAtFiber(thrownValue, root2.current)
              );
              workInProgress = null;
              return;
            }
          } catch (error) {
            if (null !== returnFiber) throw workInProgress = returnFiber, error;
            workInProgressRootExitStatus = 1;
            logUncaughtError(
              root2,
              createCapturedValueAtFiber(thrownValue, root2.current)
            );
            workInProgress = null;
            return;
          }
          if (unitOfWork.flags & 32768) {
            if (isHydrating || 1 === suspendedReason) root2 = true;
            else if (workInProgressRootIsPrerendering || 0 !== (workInProgressRootRenderLanes & 536870912))
              root2 = false;
            else if (workInProgressRootDidSkipSuspendedSiblings = root2 = true, 2 === suspendedReason || 9 === suspendedReason || 3 === suspendedReason || 6 === suspendedReason)
              suspendedReason = suspenseHandlerStackCursor.current, null !== suspendedReason && 13 === suspendedReason.tag && (suspendedReason.flags |= 16384);
            unwindUnitOfWork(unitOfWork, root2);
          } else completeUnitOfWork(unitOfWork);
        }
        function completeUnitOfWork(unitOfWork) {
          var completedWork = unitOfWork;
          do {
            if (0 !== (completedWork.flags & 32768)) {
              unwindUnitOfWork(
                completedWork,
                workInProgressRootDidSkipSuspendedSiblings
              );
              return;
            }
            unitOfWork = completedWork.return;
            var next = completeWork(
              completedWork.alternate,
              completedWork,
              entangledRenderLanes
            );
            if (null !== next) {
              workInProgress = next;
              return;
            }
            completedWork = completedWork.sibling;
            if (null !== completedWork) {
              workInProgress = completedWork;
              return;
            }
            workInProgress = completedWork = unitOfWork;
          } while (null !== completedWork);
          0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);
        }
        function unwindUnitOfWork(unitOfWork, skipSiblings) {
          do {
            var next = unwindWork(unitOfWork.alternate, unitOfWork);
            if (null !== next) {
              next.flags &= 32767;
              workInProgress = next;
              return;
            }
            next = unitOfWork.return;
            null !== next && (next.flags |= 32768, next.subtreeFlags = 0, next.deletions = null);
            if (!skipSiblings && (unitOfWork = unitOfWork.sibling, null !== unitOfWork)) {
              workInProgress = unitOfWork;
              return;
            }
            workInProgress = unitOfWork = next;
          } while (null !== unitOfWork);
          workInProgressRootExitStatus = 6;
          workInProgress = null;
        }
        function commitRoot(root2, finishedWork, lanes, recoverableErrors, transitions, didIncludeRenderPhaseUpdate, spawnedLane, updatedLanes, suspendedRetryLanes) {
          root2.cancelPendingCommit = null;
          do
            flushPendingEffects();
          while (0 !== pendingEffectsStatus);
          if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));
          if (null !== finishedWork) {
            if (finishedWork === root2.current) throw Error(formatProdErrorMessage(177));
            didIncludeRenderPhaseUpdate = finishedWork.lanes | finishedWork.childLanes;
            didIncludeRenderPhaseUpdate |= concurrentlyUpdatedLanes;
            markRootFinished(
              root2,
              lanes,
              didIncludeRenderPhaseUpdate,
              spawnedLane,
              updatedLanes,
              suspendedRetryLanes
            );
            root2 === workInProgressRoot && (workInProgress = workInProgressRoot = null, workInProgressRootRenderLanes = 0);
            pendingFinishedWork = finishedWork;
            pendingEffectsRoot = root2;
            pendingEffectsLanes = lanes;
            pendingEffectsRemainingLanes = didIncludeRenderPhaseUpdate;
            pendingPassiveTransitions = transitions;
            pendingRecoverableErrors = recoverableErrors;
            0 !== (finishedWork.subtreeFlags & 10256) || 0 !== (finishedWork.flags & 10256) ? (root2.callbackNode = null, root2.callbackPriority = 0, scheduleCallback$1(NormalPriority$1, function() {
              flushPassiveEffects();
              return null;
            })) : (root2.callbackNode = null, root2.callbackPriority = 0);
            recoverableErrors = 0 !== (finishedWork.flags & 13878);
            if (0 !== (finishedWork.subtreeFlags & 13878) || recoverableErrors) {
              recoverableErrors = ReactSharedInternals.T;
              ReactSharedInternals.T = null;
              transitions = ReactDOMSharedInternals.p;
              ReactDOMSharedInternals.p = 2;
              spawnedLane = executionContext;
              executionContext |= 4;
              try {
                commitBeforeMutationEffects(root2, finishedWork, lanes);
              } finally {
                executionContext = spawnedLane, ReactDOMSharedInternals.p = transitions, ReactSharedInternals.T = recoverableErrors;
              }
            }
            pendingEffectsStatus = 1;
            flushMutationEffects();
            flushLayoutEffects();
            flushSpawnedWork();
          }
        }
        function flushMutationEffects() {
          if (1 === pendingEffectsStatus) {
            pendingEffectsStatus = 0;
            var root2 = pendingEffectsRoot, finishedWork = pendingFinishedWork, rootMutationHasEffect = 0 !== (finishedWork.flags & 13878);
            if (0 !== (finishedWork.subtreeFlags & 13878) || rootMutationHasEffect) {
              rootMutationHasEffect = ReactSharedInternals.T;
              ReactSharedInternals.T = null;
              var previousPriority = ReactDOMSharedInternals.p;
              ReactDOMSharedInternals.p = 2;
              var prevExecutionContext = executionContext;
              executionContext |= 4;
              try {
                commitMutationEffectsOnFiber(finishedWork, root2);
                var priorSelectionInformation = selectionInformation, curFocusedElem = getActiveElementDeep(root2.containerInfo), priorFocusedElem = priorSelectionInformation.focusedElem, priorSelectionRange = priorSelectionInformation.selectionRange;
                if (curFocusedElem !== priorFocusedElem && priorFocusedElem && priorFocusedElem.ownerDocument && containsNode(
                  priorFocusedElem.ownerDocument.documentElement,
                  priorFocusedElem
                )) {
                  if (null !== priorSelectionRange && hasSelectionCapabilities(priorFocusedElem)) {
                    var start = priorSelectionRange.start, end = priorSelectionRange.end;
                    void 0 === end && (end = start);
                    if ("selectionStart" in priorFocusedElem)
                      priorFocusedElem.selectionStart = start, priorFocusedElem.selectionEnd = Math.min(
                        end,
                        priorFocusedElem.value.length
                      );
                    else {
                      var doc = priorFocusedElem.ownerDocument || document, win = doc && doc.defaultView || window;
                      if (win.getSelection) {
                        var selection = win.getSelection(), length = priorFocusedElem.textContent.length, start$jscomp$0 = Math.min(priorSelectionRange.start, length), end$jscomp$0 = void 0 === priorSelectionRange.end ? start$jscomp$0 : Math.min(priorSelectionRange.end, length);
                        !selection.extend && start$jscomp$0 > end$jscomp$0 && (curFocusedElem = end$jscomp$0, end$jscomp$0 = start$jscomp$0, start$jscomp$0 = curFocusedElem);
                        var startMarker = getNodeForCharacterOffset(
                          priorFocusedElem,
                          start$jscomp$0
                        ), endMarker = getNodeForCharacterOffset(
                          priorFocusedElem,
                          end$jscomp$0
                        );
                        if (startMarker && endMarker && (1 !== selection.rangeCount || selection.anchorNode !== startMarker.node || selection.anchorOffset !== startMarker.offset || selection.focusNode !== endMarker.node || selection.focusOffset !== endMarker.offset)) {
                          var range = doc.createRange();
                          range.setStart(startMarker.node, startMarker.offset);
                          selection.removeAllRanges();
                          start$jscomp$0 > end$jscomp$0 ? (selection.addRange(range), selection.extend(endMarker.node, endMarker.offset)) : (range.setEnd(endMarker.node, endMarker.offset), selection.addRange(range));
                        }
                      }
                    }
                  }
                  doc = [];
                  for (selection = priorFocusedElem; selection = selection.parentNode; )
                    1 === selection.nodeType && doc.push({
                      element: selection,
                      left: selection.scrollLeft,
                      top: selection.scrollTop
                    });
                  "function" === typeof priorFocusedElem.focus && priorFocusedElem.focus();
                  for (priorFocusedElem = 0; priorFocusedElem < doc.length; priorFocusedElem++) {
                    var info = doc[priorFocusedElem];
                    info.element.scrollLeft = info.left;
                    info.element.scrollTop = info.top;
                  }
                }
                _enabled = !!eventsEnabled;
                selectionInformation = eventsEnabled = null;
              } finally {
                executionContext = prevExecutionContext, ReactDOMSharedInternals.p = previousPriority, ReactSharedInternals.T = rootMutationHasEffect;
              }
            }
            root2.current = finishedWork;
            pendingEffectsStatus = 2;
          }
        }
        function flushLayoutEffects() {
          if (2 === pendingEffectsStatus) {
            pendingEffectsStatus = 0;
            var root2 = pendingEffectsRoot, finishedWork = pendingFinishedWork, rootHasLayoutEffect = 0 !== (finishedWork.flags & 8772);
            if (0 !== (finishedWork.subtreeFlags & 8772) || rootHasLayoutEffect) {
              rootHasLayoutEffect = ReactSharedInternals.T;
              ReactSharedInternals.T = null;
              var previousPriority = ReactDOMSharedInternals.p;
              ReactDOMSharedInternals.p = 2;
              var prevExecutionContext = executionContext;
              executionContext |= 4;
              try {
                commitLayoutEffectOnFiber(root2, finishedWork.alternate, finishedWork);
              } finally {
                executionContext = prevExecutionContext, ReactDOMSharedInternals.p = previousPriority, ReactSharedInternals.T = rootHasLayoutEffect;
              }
            }
            pendingEffectsStatus = 3;
          }
        }
        function flushSpawnedWork() {
          if (4 === pendingEffectsStatus || 3 === pendingEffectsStatus) {
            pendingEffectsStatus = 0;
            requestPaint();
            var root2 = pendingEffectsRoot, finishedWork = pendingFinishedWork, lanes = pendingEffectsLanes, recoverableErrors = pendingRecoverableErrors;
            0 !== (finishedWork.subtreeFlags & 10256) || 0 !== (finishedWork.flags & 10256) ? pendingEffectsStatus = 5 : (pendingEffectsStatus = 0, pendingFinishedWork = pendingEffectsRoot = null, releaseRootPooledCache(root2, root2.pendingLanes));
            var remainingLanes = root2.pendingLanes;
            0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);
            lanesToEventPriority(lanes);
            finishedWork = finishedWork.stateNode;
            if (injectedHook && "function" === typeof injectedHook.onCommitFiberRoot)
              try {
                injectedHook.onCommitFiberRoot(
                  rendererID,
                  finishedWork,
                  void 0,
                  128 === (finishedWork.current.flags & 128)
                );
              } catch (err) {
              }
            if (null !== recoverableErrors) {
              finishedWork = ReactSharedInternals.T;
              remainingLanes = ReactDOMSharedInternals.p;
              ReactDOMSharedInternals.p = 2;
              ReactSharedInternals.T = null;
              try {
                for (var onRecoverableError = root2.onRecoverableError, i = 0; i < recoverableErrors.length; i++) {
                  var recoverableError = recoverableErrors[i];
                  onRecoverableError(recoverableError.value, {
                    componentStack: recoverableError.stack
                  });
                }
              } finally {
                ReactSharedInternals.T = finishedWork, ReactDOMSharedInternals.p = remainingLanes;
              }
            }
            0 !== (pendingEffectsLanes & 3) && flushPendingEffects();
            ensureRootIsScheduled(root2);
            remainingLanes = root2.pendingLanes;
            0 !== (lanes & 261930) && 0 !== (remainingLanes & 42) ? root2 === rootWithNestedUpdates ? nestedUpdateCount++ : (nestedUpdateCount = 0, rootWithNestedUpdates = root2) : nestedUpdateCount = 0;
            flushSyncWorkAcrossRoots_impl(0);
          }
        }
        function releaseRootPooledCache(root2, remainingLanes) {
          0 === (root2.pooledCacheLanes &= remainingLanes) && (remainingLanes = root2.pooledCache, null != remainingLanes && (root2.pooledCache = null, releaseCache(remainingLanes)));
        }
        function flushPendingEffects() {
          flushMutationEffects();
          flushLayoutEffects();
          flushSpawnedWork();
          return flushPassiveEffects();
        }
        function flushPassiveEffects() {
          if (5 !== pendingEffectsStatus) return false;
          var root2 = pendingEffectsRoot, remainingLanes = pendingEffectsRemainingLanes;
          pendingEffectsRemainingLanes = 0;
          var renderPriority = lanesToEventPriority(pendingEffectsLanes), prevTransition = ReactSharedInternals.T, previousPriority = ReactDOMSharedInternals.p;
          try {
            ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;
            ReactSharedInternals.T = null;
            renderPriority = pendingPassiveTransitions;
            pendingPassiveTransitions = null;
            var root$jscomp$0 = pendingEffectsRoot, lanes = pendingEffectsLanes;
            pendingEffectsStatus = 0;
            pendingFinishedWork = pendingEffectsRoot = null;
            pendingEffectsLanes = 0;
            if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(331));
            var prevExecutionContext = executionContext;
            executionContext |= 4;
            commitPassiveUnmountOnFiber(root$jscomp$0.current);
            commitPassiveMountOnFiber(
              root$jscomp$0,
              root$jscomp$0.current,
              lanes,
              renderPriority
            );
            executionContext = prevExecutionContext;
            flushSyncWorkAcrossRoots_impl(0, false);
            if (injectedHook && "function" === typeof injectedHook.onPostCommitFiberRoot)
              try {
                injectedHook.onPostCommitFiberRoot(rendererID, root$jscomp$0);
              } catch (err) {
              }
            return true;
          } finally {
            ReactDOMSharedInternals.p = previousPriority, ReactSharedInternals.T = prevTransition, releaseRootPooledCache(root2, remainingLanes);
          }
        }
        function captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {
          sourceFiber = createCapturedValueAtFiber(error, sourceFiber);
          sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);
          rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);
          null !== rootFiber && (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));
        }
        function captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {
          if (3 === sourceFiber.tag)
            captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);
          else
            for (; null !== nearestMountedAncestor; ) {
              if (3 === nearestMountedAncestor.tag) {
                captureCommitPhaseErrorOnRoot(
                  nearestMountedAncestor,
                  sourceFiber,
                  error
                );
                break;
              } else if (1 === nearestMountedAncestor.tag) {
                var instance = nearestMountedAncestor.stateNode;
                if ("function" === typeof nearestMountedAncestor.type.getDerivedStateFromError || "function" === typeof instance.componentDidCatch && (null === legacyErrorBoundariesThatAlreadyFailed || !legacyErrorBoundariesThatAlreadyFailed.has(instance))) {
                  sourceFiber = createCapturedValueAtFiber(error, sourceFiber);
                  error = createClassErrorUpdate(2);
                  instance = enqueueUpdate(nearestMountedAncestor, error, 2);
                  null !== instance && (initializeClassErrorUpdate(
                    error,
                    instance,
                    nearestMountedAncestor,
                    sourceFiber
                  ), markRootUpdated$1(instance, 2), ensureRootIsScheduled(instance));
                  break;
                }
              }
              nearestMountedAncestor = nearestMountedAncestor.return;
            }
        }
        function attachPingListener(root2, wakeable, lanes) {
          var pingCache = root2.pingCache;
          if (null === pingCache) {
            pingCache = root2.pingCache = new PossiblyWeakMap();
            var threadIDs = new Set();
            pingCache.set(wakeable, threadIDs);
          } else
            threadIDs = pingCache.get(wakeable), void 0 === threadIDs && (threadIDs = new Set(), pingCache.set(wakeable, threadIDs));
          threadIDs.has(lanes) || (workInProgressRootDidAttachPingListener = true, threadIDs.add(lanes), root2 = pingSuspendedRoot.bind(null, root2, wakeable, lanes), wakeable.then(root2, root2));
        }
        function pingSuspendedRoot(root2, wakeable, pingedLanes) {
          var pingCache = root2.pingCache;
          null !== pingCache && pingCache.delete(wakeable);
          root2.pingedLanes |= root2.suspendedLanes & pingedLanes;
          root2.warmLanes &= ~pingedLanes;
          workInProgressRoot === root2 && (workInProgressRootRenderLanes & pingedLanes) === pingedLanes && (4 === workInProgressRootExitStatus || 3 === workInProgressRootExitStatus && (workInProgressRootRenderLanes & 62914560) === workInProgressRootRenderLanes && 300 > now() - globalMostRecentFallbackTime ? 0 === (executionContext & 2) && prepareFreshStack(root2, 0) : workInProgressRootPingedLanes |= pingedLanes, workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes && (workInProgressSuspendedRetryLanes = 0));
          ensureRootIsScheduled(root2);
        }
        function retryTimedOutBoundary(boundaryFiber, retryLane) {
          0 === retryLane && (retryLane = claimNextRetryLane());
          boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);
          null !== boundaryFiber && (markRootUpdated$1(boundaryFiber, retryLane), ensureRootIsScheduled(boundaryFiber));
        }
        function retryDehydratedSuspenseBoundary(boundaryFiber) {
          var suspenseState = boundaryFiber.memoizedState, retryLane = 0;
          null !== suspenseState && (retryLane = suspenseState.retryLane);
          retryTimedOutBoundary(boundaryFiber, retryLane);
        }
        function resolveRetryWakeable(boundaryFiber, wakeable) {
          var retryLane = 0;
          switch (boundaryFiber.tag) {
            case 31:
            case 13:
              var retryCache = boundaryFiber.stateNode;
              var suspenseState = boundaryFiber.memoizedState;
              null !== suspenseState && (retryLane = suspenseState.retryLane);
              break;
            case 19:
              retryCache = boundaryFiber.stateNode;
              break;
            case 22:
              retryCache = boundaryFiber.stateNode._retryCache;
              break;
            default:
              throw Error(formatProdErrorMessage(314));
          }
          null !== retryCache && retryCache.delete(wakeable);
          retryTimedOutBoundary(boundaryFiber, retryLane);
        }
        function scheduleCallback$1(priorityLevel, callback) {
          return scheduleCallback$3(priorityLevel, callback);
        }
        var firstScheduledRoot = null, lastScheduledRoot = null, didScheduleMicrotask = false, mightHavePendingSyncWork = false, isFlushingWork = false, currentEventTransitionLane = 0;
        function ensureRootIsScheduled(root2) {
          root2 !== lastScheduledRoot && null === root2.next && (null === lastScheduledRoot ? firstScheduledRoot = lastScheduledRoot = root2 : lastScheduledRoot = lastScheduledRoot.next = root2);
          mightHavePendingSyncWork = true;
          didScheduleMicrotask || (didScheduleMicrotask = true, scheduleImmediateRootScheduleTask());
        }
        function flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {
          if (!isFlushingWork && mightHavePendingSyncWork) {
            isFlushingWork = true;
            do {
              var didPerformSomeWork = false;
              for (var root$170 = firstScheduledRoot; null !== root$170; ) {
                if (0 !== syncTransitionLanes) {
                  var pendingLanes = root$170.pendingLanes;
                  if (0 === pendingLanes) var JSCompiler_inline_result = 0;
                  else {
                    var suspendedLanes = root$170.suspendedLanes, pingedLanes = root$170.pingedLanes;
                    JSCompiler_inline_result = (1 << 31 - clz32(42 | syncTransitionLanes) + 1) - 1;
                    JSCompiler_inline_result &= pendingLanes & ~(suspendedLanes & ~pingedLanes);
                    JSCompiler_inline_result = JSCompiler_inline_result & 201326741 ? JSCompiler_inline_result & 201326741 | 1 : JSCompiler_inline_result ? JSCompiler_inline_result | 2 : 0;
                  }
                  0 !== JSCompiler_inline_result && (didPerformSomeWork = true, performSyncWorkOnRoot(root$170, JSCompiler_inline_result));
                } else
                  JSCompiler_inline_result = workInProgressRootRenderLanes, JSCompiler_inline_result = getNextLanes(
                    root$170,
                    root$170 === workInProgressRoot ? JSCompiler_inline_result : 0,
                    null !== root$170.cancelPendingCommit || -1 !== root$170.timeoutHandle
                  ), 0 === (JSCompiler_inline_result & 3) || checkIfRootIsPrerendering(root$170, JSCompiler_inline_result) || (didPerformSomeWork = true, performSyncWorkOnRoot(root$170, JSCompiler_inline_result));
                root$170 = root$170.next;
              }
            } while (didPerformSomeWork);
            isFlushingWork = false;
          }
        }
        function processRootScheduleInImmediateTask() {
          processRootScheduleInMicrotask();
        }
        function processRootScheduleInMicrotask() {
          mightHavePendingSyncWork = didScheduleMicrotask = false;
          var syncTransitionLanes = 0;
          0 !== currentEventTransitionLane && shouldAttemptEagerTransition() && (syncTransitionLanes = currentEventTransitionLane);
          for (var currentTime = now(), prev = null, root2 = firstScheduledRoot; null !== root2; ) {
            var next = root2.next, nextLanes = scheduleTaskForRootDuringMicrotask(root2, currentTime);
            if (0 === nextLanes)
              root2.next = null, null === prev ? firstScheduledRoot = next : prev.next = next, null === next && (lastScheduledRoot = prev);
            else if (prev = root2, 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))
              mightHavePendingSyncWork = true;
            root2 = next;
          }
          0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus || flushSyncWorkAcrossRoots_impl(syncTransitionLanes);
          0 !== currentEventTransitionLane && (currentEventTransitionLane = 0);
        }
        function scheduleTaskForRootDuringMicrotask(root2, currentTime) {
          for (var suspendedLanes = root2.suspendedLanes, pingedLanes = root2.pingedLanes, expirationTimes = root2.expirationTimes, lanes = root2.pendingLanes & -62914561; 0 < lanes; ) {
            var index$5 = 31 - clz32(lanes), lane = 1 << index$5, expirationTime = expirationTimes[index$5];
            if (-1 === expirationTime) {
              if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))
                expirationTimes[index$5] = computeExpirationTime(lane, currentTime);
            } else expirationTime <= currentTime && (root2.expiredLanes |= lane);
            lanes &= ~lane;
          }
          currentTime = workInProgressRoot;
          suspendedLanes = workInProgressRootRenderLanes;
          suspendedLanes = getNextLanes(
            root2,
            root2 === currentTime ? suspendedLanes : 0,
            null !== root2.cancelPendingCommit || -1 !== root2.timeoutHandle
          );
          pingedLanes = root2.callbackNode;
          if (0 === suspendedLanes || root2 === currentTime && (2 === workInProgressSuspendedReason || 9 === workInProgressSuspendedReason) || null !== root2.cancelPendingCommit)
            return null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes), root2.callbackNode = null, root2.callbackPriority = 0;
          if (0 === (suspendedLanes & 3) || checkIfRootIsPrerendering(root2, suspendedLanes)) {
            currentTime = suspendedLanes & -suspendedLanes;
            if (currentTime === root2.callbackPriority) return currentTime;
            null !== pingedLanes && cancelCallback$1(pingedLanes);
            switch (lanesToEventPriority(suspendedLanes)) {
              case 2:
              case 8:
                suspendedLanes = UserBlockingPriority;
                break;
              case 32:
                suspendedLanes = NormalPriority$1;
                break;
              case 268435456:
                suspendedLanes = IdlePriority;
                break;
              default:
                suspendedLanes = NormalPriority$1;
            }
            pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root2);
            suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);
            root2.callbackPriority = currentTime;
            root2.callbackNode = suspendedLanes;
            return currentTime;
          }
          null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);
          root2.callbackPriority = 2;
          root2.callbackNode = null;
          return 2;
        }
        function performWorkOnRootViaSchedulerTask(root2, didTimeout) {
          if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)
            return root2.callbackNode = null, root2.callbackPriority = 0, null;
          var originalCallbackNode = root2.callbackNode;
          if (flushPendingEffects() && root2.callbackNode !== originalCallbackNode)
            return null;
          var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;
          workInProgressRootRenderLanes$jscomp$0 = getNextLanes(
            root2,
            root2 === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,
            null !== root2.cancelPendingCommit || -1 !== root2.timeoutHandle
          );
          if (0 === workInProgressRootRenderLanes$jscomp$0) return null;
          performWorkOnRoot(root2, workInProgressRootRenderLanes$jscomp$0, didTimeout);
          scheduleTaskForRootDuringMicrotask(root2, now());
          return null != root2.callbackNode && root2.callbackNode === originalCallbackNode ? performWorkOnRootViaSchedulerTask.bind(null, root2) : null;
        }
        function performSyncWorkOnRoot(root2, lanes) {
          if (flushPendingEffects()) return null;
          performWorkOnRoot(root2, lanes, true);
        }
        function scheduleImmediateRootScheduleTask() {
          scheduleMicrotask(function() {
            0 !== (executionContext & 6) ? scheduleCallback$3(
              ImmediatePriority,
              processRootScheduleInImmediateTask
            ) : processRootScheduleInMicrotask();
          });
        }
        function requestTransitionLane() {
          if (0 === currentEventTransitionLane) {
            var actionScopeLane = currentEntangledLane;
            0 === actionScopeLane && (actionScopeLane = nextTransitionUpdateLane, nextTransitionUpdateLane <<= 1, 0 === (nextTransitionUpdateLane & 261888) && (nextTransitionUpdateLane = 256));
            currentEventTransitionLane = actionScopeLane;
          }
          return currentEventTransitionLane;
        }
        function coerceFormActionProp(actionProp) {
          return null == actionProp || "symbol" === typeof actionProp || "boolean" === typeof actionProp ? null : "function" === typeof actionProp ? actionProp : sanitizeURL("" + actionProp);
        }
        function createFormDataWithSubmitter(form, submitter) {
          var temp = submitter.ownerDocument.createElement("input");
          temp.name = submitter.name;
          temp.value = submitter.value;
          form.id && temp.setAttribute("form", form.id);
          submitter.parentNode.insertBefore(temp, submitter);
          form = new FormData(form);
          temp.parentNode.removeChild(temp);
          return form;
        }
        function extractEvents$1(dispatchQueue, domEventName, maybeTargetInst, nativeEvent, nativeEventTarget) {
          if ("submit" === domEventName && maybeTargetInst && maybeTargetInst.stateNode === nativeEventTarget) {
            var action = coerceFormActionProp(
              (nativeEventTarget[internalPropsKey] || null).action
            ), submitter = nativeEvent.submitter;
            submitter && (domEventName = (domEventName = submitter[internalPropsKey] || null) ? coerceFormActionProp(domEventName.formAction) : submitter.getAttribute("formAction"), null !== domEventName && (action = domEventName, submitter = null));
            var event = new SyntheticEvent(
              "action",
              "action",
              null,
              nativeEvent,
              nativeEventTarget
            );
            dispatchQueue.push({
              event,
              listeners: [
                {
                  instance: null,
                  listener: function() {
                    if (nativeEvent.defaultPrevented) {
                      if (0 !== currentEventTransitionLane) {
                        var formData = submitter ? createFormDataWithSubmitter(nativeEventTarget, submitter) : new FormData(nativeEventTarget);
                        startHostTransition(
                          maybeTargetInst,
                          {
                            pending: true,
                            data: formData,
                            method: nativeEventTarget.method,
                            action
                          },
                          null,
                          formData
                        );
                      }
                    } else
                      "function" === typeof action && (event.preventDefault(), formData = submitter ? createFormDataWithSubmitter(nativeEventTarget, submitter) : new FormData(nativeEventTarget), startHostTransition(
                        maybeTargetInst,
                        {
                          pending: true,
                          data: formData,
                          method: nativeEventTarget.method,
                          action
                        },
                        action,
                        formData
                      ));
                  },
                  currentTarget: nativeEventTarget
                }
              ]
            });
          }
        }
        for (var i$jscomp$inline_1577 = 0; i$jscomp$inline_1577 < simpleEventPluginEvents.length; i$jscomp$inline_1577++) {
          var eventName$jscomp$inline_1578 = simpleEventPluginEvents[i$jscomp$inline_1577], domEventName$jscomp$inline_1579 = eventName$jscomp$inline_1578.toLowerCase(), capitalizedEvent$jscomp$inline_1580 = eventName$jscomp$inline_1578[0].toUpperCase() + eventName$jscomp$inline_1578.slice(1);
          registerSimpleEvent(
            domEventName$jscomp$inline_1579,
            "on" + capitalizedEvent$jscomp$inline_1580
          );
        }
        registerSimpleEvent(ANIMATION_END, "onAnimationEnd");
        registerSimpleEvent(ANIMATION_ITERATION, "onAnimationIteration");
        registerSimpleEvent(ANIMATION_START, "onAnimationStart");
        registerSimpleEvent("dblclick", "onDoubleClick");
        registerSimpleEvent("focusin", "onFocus");
        registerSimpleEvent("focusout", "onBlur");
        registerSimpleEvent(TRANSITION_RUN, "onTransitionRun");
        registerSimpleEvent(TRANSITION_START, "onTransitionStart");
        registerSimpleEvent(TRANSITION_CANCEL, "onTransitionCancel");
        registerSimpleEvent(TRANSITION_END, "onTransitionEnd");
        registerDirectEvent("onMouseEnter", ["mouseout", "mouseover"]);
        registerDirectEvent("onMouseLeave", ["mouseout", "mouseover"]);
        registerDirectEvent("onPointerEnter", ["pointerout", "pointerover"]);
        registerDirectEvent("onPointerLeave", ["pointerout", "pointerover"]);
        registerTwoPhaseEvent(
          "onChange",
          "change click focusin focusout input keydown keyup selectionchange".split(" ")
        );
        registerTwoPhaseEvent(
          "onSelect",
          "focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(
            " "
          )
        );
        registerTwoPhaseEvent("onBeforeInput", [
          "compositionend",
          "keypress",
          "textInput",
          "paste"
        ]);
        registerTwoPhaseEvent(
          "onCompositionEnd",
          "compositionend focusout keydown keypress keyup mousedown".split(" ")
        );
        registerTwoPhaseEvent(
          "onCompositionStart",
          "compositionstart focusout keydown keypress keyup mousedown".split(" ")
        );
        registerTwoPhaseEvent(
          "onCompositionUpdate",
          "compositionupdate focusout keydown keypress keyup mousedown".split(" ")
        );
        var mediaEventTypes = "abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(
          " "
        ), nonDelegatedEvents = new Set(
          "beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(mediaEventTypes)
        );
        function processDispatchQueue(dispatchQueue, eventSystemFlags) {
          eventSystemFlags = 0 !== (eventSystemFlags & 4);
          for (var i = 0; i < dispatchQueue.length; i++) {
            var _dispatchQueue$i = dispatchQueue[i], event = _dispatchQueue$i.event;
            _dispatchQueue$i = _dispatchQueue$i.listeners;
            a: {
              var previousInstance = void 0;
              if (eventSystemFlags)
                for (var i$jscomp$0 = _dispatchQueue$i.length - 1; 0 <= i$jscomp$0; i$jscomp$0--) {
                  var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0], instance = _dispatchListeners$i.instance, currentTarget = _dispatchListeners$i.currentTarget;
                  _dispatchListeners$i = _dispatchListeners$i.listener;
                  if (instance !== previousInstance && event.isPropagationStopped())
                    break a;
                  previousInstance = _dispatchListeners$i;
                  event.currentTarget = currentTarget;
                  try {
                    previousInstance(event);
                  } catch (error) {
                    reportGlobalError(error);
                  }
                  event.currentTarget = null;
                  previousInstance = instance;
                }
              else
                for (i$jscomp$0 = 0; i$jscomp$0 < _dispatchQueue$i.length; i$jscomp$0++) {
                  _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];
                  instance = _dispatchListeners$i.instance;
                  currentTarget = _dispatchListeners$i.currentTarget;
                  _dispatchListeners$i = _dispatchListeners$i.listener;
                  if (instance !== previousInstance && event.isPropagationStopped())
                    break a;
                  previousInstance = _dispatchListeners$i;
                  event.currentTarget = currentTarget;
                  try {
                    previousInstance(event);
                  } catch (error) {
                    reportGlobalError(error);
                  }
                  event.currentTarget = null;
                  previousInstance = instance;
                }
            }
          }
        }
        function listenToNonDelegatedEvent(domEventName, targetElement) {
          var JSCompiler_inline_result = targetElement[internalEventHandlersKey];
          void 0 === JSCompiler_inline_result && (JSCompiler_inline_result = targetElement[internalEventHandlersKey] = new Set());
          var listenerSetKey = domEventName + "__bubble";
          JSCompiler_inline_result.has(listenerSetKey) || (addTrappedEventListener(targetElement, domEventName, 2, false), JSCompiler_inline_result.add(listenerSetKey));
        }
        function listenToNativeEvent(domEventName, isCapturePhaseListener, target) {
          var eventSystemFlags = 0;
          isCapturePhaseListener && (eventSystemFlags |= 4);
          addTrappedEventListener(
            target,
            domEventName,
            eventSystemFlags,
            isCapturePhaseListener
          );
        }
        var listeningMarker = "_reactListening" + Math.random().toString(36).slice(2);
        function listenToAllSupportedEvents(rootContainerElement) {
          if (!rootContainerElement[listeningMarker]) {
            rootContainerElement[listeningMarker] = true;
            allNativeEvents.forEach(function(domEventName) {
              "selectionchange" !== domEventName && (nonDelegatedEvents.has(domEventName) || listenToNativeEvent(domEventName, false, rootContainerElement), listenToNativeEvent(domEventName, true, rootContainerElement));
            });
            var ownerDocument = 9 === rootContainerElement.nodeType ? rootContainerElement : rootContainerElement.ownerDocument;
            null === ownerDocument || ownerDocument[listeningMarker] || (ownerDocument[listeningMarker] = true, listenToNativeEvent("selectionchange", false, ownerDocument));
          }
        }
        function addTrappedEventListener(targetContainer, domEventName, eventSystemFlags, isCapturePhaseListener) {
          switch (getEventPriority(domEventName)) {
            case 2:
              var listenerWrapper = dispatchDiscreteEvent;
              break;
            case 8:
              listenerWrapper = dispatchContinuousEvent;
              break;
            default:
              listenerWrapper = dispatchEvent;
          }
          eventSystemFlags = listenerWrapper.bind(
            null,
            domEventName,
            eventSystemFlags,
            targetContainer
          );
          listenerWrapper = void 0;
          !passiveBrowserEventsSupported || "touchstart" !== domEventName && "touchmove" !== domEventName && "wheel" !== domEventName || (listenerWrapper = true);
          isCapturePhaseListener ? void 0 !== listenerWrapper ? targetContainer.addEventListener(domEventName, eventSystemFlags, {
            capture: true,
            passive: listenerWrapper
          }) : targetContainer.addEventListener(domEventName, eventSystemFlags, true) : void 0 !== listenerWrapper ? targetContainer.addEventListener(domEventName, eventSystemFlags, {
            passive: listenerWrapper
          }) : targetContainer.addEventListener(domEventName, eventSystemFlags, false);
        }
        function dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, targetInst$jscomp$0, targetContainer) {
          var ancestorInst = targetInst$jscomp$0;
          if (0 === (eventSystemFlags & 1) && 0 === (eventSystemFlags & 2) && null !== targetInst$jscomp$0)
            a: for (; ; ) {
              if (null === targetInst$jscomp$0) return;
              var nodeTag = targetInst$jscomp$0.tag;
              if (3 === nodeTag || 4 === nodeTag) {
                var container = targetInst$jscomp$0.stateNode.containerInfo;
                if (container === targetContainer) break;
                if (4 === nodeTag)
                  for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {
                    var grandTag = nodeTag.tag;
                    if ((3 === grandTag || 4 === grandTag) && nodeTag.stateNode.containerInfo === targetContainer)
                      return;
                    nodeTag = nodeTag.return;
                  }
                for (; null !== container; ) {
                  nodeTag = getClosestInstanceFromNode(container);
                  if (null === nodeTag) return;
                  grandTag = nodeTag.tag;
                  if (5 === grandTag || 6 === grandTag || 26 === grandTag || 27 === grandTag) {
                    targetInst$jscomp$0 = ancestorInst = nodeTag;
                    continue a;
                  }
                  container = container.parentNode;
                }
              }
              targetInst$jscomp$0 = targetInst$jscomp$0.return;
            }
          batchedUpdates$1(function() {
            var targetInst = ancestorInst, nativeEventTarget = getEventTarget(nativeEvent), dispatchQueue = [];
            a: {
              var reactName = topLevelEventsToReactNames.get(domEventName);
              if (void 0 !== reactName) {
                var SyntheticEventCtor = SyntheticEvent, reactEventType = domEventName;
                switch (domEventName) {
                  case "keypress":
                    if (0 === getEventCharCode(nativeEvent)) break a;
                  case "keydown":
                  case "keyup":
                    SyntheticEventCtor = SyntheticKeyboardEvent;
                    break;
                  case "focusin":
                    reactEventType = "focus";
                    SyntheticEventCtor = SyntheticFocusEvent;
                    break;
                  case "focusout":
                    reactEventType = "blur";
                    SyntheticEventCtor = SyntheticFocusEvent;
                    break;
                  case "beforeblur":
                  case "afterblur":
                    SyntheticEventCtor = SyntheticFocusEvent;
                    break;
                  case "click":
                    if (2 === nativeEvent.button) break a;
                  case "auxclick":
                  case "dblclick":
                  case "mousedown":
                  case "mousemove":
                  case "mouseup":
                  case "mouseout":
                  case "mouseover":
                  case "contextmenu":
                    SyntheticEventCtor = SyntheticMouseEvent;
                    break;
                  case "drag":
                  case "dragend":
                  case "dragenter":
                  case "dragexit":
                  case "dragleave":
                  case "dragover":
                  case "dragstart":
                  case "drop":
                    SyntheticEventCtor = SyntheticDragEvent;
                    break;
                  case "touchcancel":
                  case "touchend":
                  case "touchmove":
                  case "touchstart":
                    SyntheticEventCtor = SyntheticTouchEvent;
                    break;
                  case ANIMATION_END:
                  case ANIMATION_ITERATION:
                  case ANIMATION_START:
                    SyntheticEventCtor = SyntheticAnimationEvent;
                    break;
                  case TRANSITION_END:
                    SyntheticEventCtor = SyntheticTransitionEvent;
                    break;
                  case "scroll":
                  case "scrollend":
                    SyntheticEventCtor = SyntheticUIEvent;
                    break;
                  case "wheel":
                    SyntheticEventCtor = SyntheticWheelEvent;
                    break;
                  case "copy":
                  case "cut":
                  case "paste":
                    SyntheticEventCtor = SyntheticClipboardEvent;
                    break;
                  case "gotpointercapture":
                  case "lostpointercapture":
                  case "pointercancel":
                  case "pointerdown":
                  case "pointermove":
                  case "pointerout":
                  case "pointerover":
                  case "pointerup":
                    SyntheticEventCtor = SyntheticPointerEvent;
                    break;
                  case "toggle":
                  case "beforetoggle":
                    SyntheticEventCtor = SyntheticToggleEvent;
                }
                var inCapturePhase = 0 !== (eventSystemFlags & 4), accumulateTargetOnly = !inCapturePhase && ("scroll" === domEventName || "scrollend" === domEventName), reactEventName = inCapturePhase ? null !== reactName ? reactName + "Capture" : null : reactName;
                inCapturePhase = [];
                for (var instance = targetInst, lastHostComponent; null !== instance; ) {
                  var _instance = instance;
                  lastHostComponent = _instance.stateNode;
                  _instance = _instance.tag;
                  5 !== _instance && 26 !== _instance && 27 !== _instance || null === lastHostComponent || null === reactEventName || (_instance = getListener(instance, reactEventName), null != _instance && inCapturePhase.push(
                    createDispatchListener(instance, _instance, lastHostComponent)
                  ));
                  if (accumulateTargetOnly) break;
                  instance = instance.return;
                }
                0 < inCapturePhase.length && (reactName = new SyntheticEventCtor(
                  reactName,
                  reactEventType,
                  null,
                  nativeEvent,
                  nativeEventTarget
                ), dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));
              }
            }
            if (0 === (eventSystemFlags & 7)) {
              a: {
                reactName = "mouseover" === domEventName || "pointerover" === domEventName;
                SyntheticEventCtor = "mouseout" === domEventName || "pointerout" === domEventName;
                if (reactName && nativeEvent !== currentReplayingEvent && (reactEventType = nativeEvent.relatedTarget || nativeEvent.fromElement) && (getClosestInstanceFromNode(reactEventType) || reactEventType[internalContainerInstanceKey]))
                  break a;
                if (SyntheticEventCtor || reactName) {
                  reactName = nativeEventTarget.window === nativeEventTarget ? nativeEventTarget : (reactName = nativeEventTarget.ownerDocument) ? reactName.defaultView || reactName.parentWindow : window;
                  if (SyntheticEventCtor) {
                    if (reactEventType = nativeEvent.relatedTarget || nativeEvent.toElement, SyntheticEventCtor = targetInst, reactEventType = reactEventType ? getClosestInstanceFromNode(reactEventType) : null, null !== reactEventType && (accumulateTargetOnly = getNearestMountedFiber(reactEventType), inCapturePhase = reactEventType.tag, reactEventType !== accumulateTargetOnly || 5 !== inCapturePhase && 27 !== inCapturePhase && 6 !== inCapturePhase))
                      reactEventType = null;
                  } else SyntheticEventCtor = null, reactEventType = targetInst;
                  if (SyntheticEventCtor !== reactEventType) {
                    inCapturePhase = SyntheticMouseEvent;
                    _instance = "onMouseLeave";
                    reactEventName = "onMouseEnter";
                    instance = "mouse";
                    if ("pointerout" === domEventName || "pointerover" === domEventName)
                      inCapturePhase = SyntheticPointerEvent, _instance = "onPointerLeave", reactEventName = "onPointerEnter", instance = "pointer";
                    accumulateTargetOnly = null == SyntheticEventCtor ? reactName : getNodeFromInstance(SyntheticEventCtor);
                    lastHostComponent = null == reactEventType ? reactName : getNodeFromInstance(reactEventType);
                    reactName = new inCapturePhase(
                      _instance,
                      instance + "leave",
                      SyntheticEventCtor,
                      nativeEvent,
                      nativeEventTarget
                    );
                    reactName.target = accumulateTargetOnly;
                    reactName.relatedTarget = lastHostComponent;
                    _instance = null;
                    getClosestInstanceFromNode(nativeEventTarget) === targetInst && (inCapturePhase = new inCapturePhase(
                      reactEventName,
                      instance + "enter",
                      reactEventType,
                      nativeEvent,
                      nativeEventTarget
                    ), inCapturePhase.target = lastHostComponent, inCapturePhase.relatedTarget = accumulateTargetOnly, _instance = inCapturePhase);
                    accumulateTargetOnly = _instance;
                    if (SyntheticEventCtor && reactEventType)
                      b: {
                        inCapturePhase = getParent;
                        reactEventName = SyntheticEventCtor;
                        instance = reactEventType;
                        lastHostComponent = 0;
                        for (_instance = reactEventName; _instance; _instance = inCapturePhase(_instance))
                          lastHostComponent++;
                        _instance = 0;
                        for (var tempB = instance; tempB; tempB = inCapturePhase(tempB))
                          _instance++;
                        for (; 0 < lastHostComponent - _instance; )
                          reactEventName = inCapturePhase(reactEventName), lastHostComponent--;
                        for (; 0 < _instance - lastHostComponent; )
                          instance = inCapturePhase(instance), _instance--;
                        for (; lastHostComponent--; ) {
                          if (reactEventName === instance || null !== instance && reactEventName === instance.alternate) {
                            inCapturePhase = reactEventName;
                            break b;
                          }
                          reactEventName = inCapturePhase(reactEventName);
                          instance = inCapturePhase(instance);
                        }
                        inCapturePhase = null;
                      }
                    else inCapturePhase = null;
                    null !== SyntheticEventCtor && accumulateEnterLeaveListenersForEvent(
                      dispatchQueue,
                      reactName,
                      SyntheticEventCtor,
                      inCapturePhase,
                      false
                    );
                    null !== reactEventType && null !== accumulateTargetOnly && accumulateEnterLeaveListenersForEvent(
                      dispatchQueue,
                      accumulateTargetOnly,
                      reactEventType,
                      inCapturePhase,
                      true
                    );
                  }
                }
              }
              a: {
                reactName = targetInst ? getNodeFromInstance(targetInst) : window;
                SyntheticEventCtor = reactName.nodeName && reactName.nodeName.toLowerCase();
                if ("select" === SyntheticEventCtor || "input" === SyntheticEventCtor && "file" === reactName.type)
                  var getTargetInstFunc = getTargetInstForChangeEvent;
                else if (isTextInputElement(reactName))
                  if (isInputEventSupported)
                    getTargetInstFunc = getTargetInstForInputOrChangeEvent;
                  else {
                    getTargetInstFunc = getTargetInstForInputEventPolyfill;
                    var handleEventFunc = handleEventsForInputEventPolyfill;
                  }
                else
                  SyntheticEventCtor = reactName.nodeName, !SyntheticEventCtor || "input" !== SyntheticEventCtor.toLowerCase() || "checkbox" !== reactName.type && "radio" !== reactName.type ? targetInst && isCustomElement(targetInst.elementType) && (getTargetInstFunc = getTargetInstForChangeEvent) : getTargetInstFunc = getTargetInstForClickEvent;
                if (getTargetInstFunc && (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))) {
                  createAndAccumulateChangeEvent(
                    dispatchQueue,
                    getTargetInstFunc,
                    nativeEvent,
                    nativeEventTarget
                  );
                  break a;
                }
                handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);
                "focusout" === domEventName && targetInst && "number" === reactName.type && null != targetInst.memoizedProps.value && setDefaultValue(reactName, "number", reactName.value);
              }
              handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;
              switch (domEventName) {
                case "focusin":
                  if (isTextInputElement(handleEventFunc) || "true" === handleEventFunc.contentEditable)
                    activeElement = handleEventFunc, activeElementInst = targetInst, lastSelection = null;
                  break;
                case "focusout":
                  lastSelection = activeElementInst = activeElement = null;
                  break;
                case "mousedown":
                  mouseDown = true;
                  break;
                case "contextmenu":
                case "mouseup":
                case "dragend":
                  mouseDown = false;
                  constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);
                  break;
                case "selectionchange":
                  if (skipSelectionChangeEvent) break;
                case "keydown":
                case "keyup":
                  constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);
              }
              var fallbackData;
              if (canUseCompositionEvent)
                b: {
                  switch (domEventName) {
                    case "compositionstart":
                      var eventType = "onCompositionStart";
                      break b;
                    case "compositionend":
                      eventType = "onCompositionEnd";
                      break b;
                    case "compositionupdate":
                      eventType = "onCompositionUpdate";
                      break b;
                  }
                  eventType = void 0;
                }
              else
                isComposing ? isFallbackCompositionEnd(domEventName, nativeEvent) && (eventType = "onCompositionEnd") : "keydown" === domEventName && 229 === nativeEvent.keyCode && (eventType = "onCompositionStart");
              eventType && (useFallbackCompositionData && "ko" !== nativeEvent.locale && (isComposing || "onCompositionStart" !== eventType ? "onCompositionEnd" === eventType && isComposing && (fallbackData = getData()) : (root = nativeEventTarget, startText = "value" in root ? root.value : root.textContent, isComposing = true)), handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType), 0 < handleEventFunc.length && (eventType = new SyntheticCompositionEvent(
                eventType,
                domEventName,
                null,
                nativeEvent,
                nativeEventTarget
              ), dispatchQueue.push({ event: eventType, listeners: handleEventFunc }), fallbackData ? eventType.data = fallbackData : (fallbackData = getDataFromCustomEvent(nativeEvent), null !== fallbackData && (eventType.data = fallbackData))));
              if (fallbackData = canUseTextInputEvent ? getNativeBeforeInputChars(domEventName, nativeEvent) : getFallbackBeforeInputChars(domEventName, nativeEvent))
                eventType = accumulateTwoPhaseListeners(targetInst, "onBeforeInput"), 0 < eventType.length && (handleEventFunc = new SyntheticCompositionEvent(
                  "onBeforeInput",
                  "beforeinput",
                  null,
                  nativeEvent,
                  nativeEventTarget
                ), dispatchQueue.push({
                  event: handleEventFunc,
                  listeners: eventType
                }), handleEventFunc.data = fallbackData);
              extractEvents$1(
                dispatchQueue,
                domEventName,
                targetInst,
                nativeEvent,
                nativeEventTarget
              );
            }
            processDispatchQueue(dispatchQueue, eventSystemFlags);
          });
        }
        function createDispatchListener(instance, listener, currentTarget) {
          return {
            instance,
            listener,
            currentTarget
          };
        }
        function accumulateTwoPhaseListeners(targetFiber, reactName) {
          for (var captureName = reactName + "Capture", listeners = []; null !== targetFiber; ) {
            var _instance2 = targetFiber, stateNode = _instance2.stateNode;
            _instance2 = _instance2.tag;
            5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2 || null === stateNode || (_instance2 = getListener(targetFiber, captureName), null != _instance2 && listeners.unshift(
              createDispatchListener(targetFiber, _instance2, stateNode)
            ), _instance2 = getListener(targetFiber, reactName), null != _instance2 && listeners.push(
              createDispatchListener(targetFiber, _instance2, stateNode)
            ));
            if (3 === targetFiber.tag) return listeners;
            targetFiber = targetFiber.return;
          }
          return [];
        }
        function getParent(inst) {
          if (null === inst) return null;
          do
            inst = inst.return;
          while (inst && 5 !== inst.tag && 27 !== inst.tag);
          return inst ? inst : null;
        }
        function accumulateEnterLeaveListenersForEvent(dispatchQueue, event, target, common, inCapturePhase) {
          for (var registrationName = event._reactName, listeners = []; null !== target && target !== common; ) {
            var _instance3 = target, alternate = _instance3.alternate, stateNode = _instance3.stateNode;
            _instance3 = _instance3.tag;
            if (null !== alternate && alternate === common) break;
            5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3 || null === stateNode || (alternate = stateNode, inCapturePhase ? (stateNode = getListener(target, registrationName), null != stateNode && listeners.unshift(
              createDispatchListener(target, stateNode, alternate)
            )) : inCapturePhase || (stateNode = getListener(target, registrationName), null != stateNode && listeners.push(
              createDispatchListener(target, stateNode, alternate)
            )));
            target = target.return;
          }
          0 !== listeners.length && dispatchQueue.push({ event, listeners });
        }
        var NORMALIZE_NEWLINES_REGEX = /\r\n?/g, NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\u0000|\uFFFD/g;
        function normalizeMarkupForTextOrAttribute(markup) {
          return ("string" === typeof markup ? markup : "" + markup).replace(NORMALIZE_NEWLINES_REGEX, "\n").replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, "");
        }
        function checkForUnmatchedText(serverText, clientText) {
          clientText = normalizeMarkupForTextOrAttribute(clientText);
          return normalizeMarkupForTextOrAttribute(serverText) === clientText ? true : false;
        }
        function setProp(domElement, tag, key, value, props, prevValue) {
          switch (key) {
            case "children":
              "string" === typeof value ? "body" === tag || "textarea" === tag && "" === value || setTextContent(domElement, value) : ("number" === typeof value || "bigint" === typeof value) && "body" !== tag && setTextContent(domElement, "" + value);
              break;
            case "className":
              setValueForKnownAttribute(domElement, "class", value);
              break;
            case "tabIndex":
              setValueForKnownAttribute(domElement, "tabindex", value);
              break;
            case "dir":
            case "role":
            case "viewBox":
            case "width":
            case "height":
              setValueForKnownAttribute(domElement, key, value);
              break;
            case "style":
              setValueForStyles(domElement, value, prevValue);
              break;
            case "data":
              if ("object" !== tag) {
                setValueForKnownAttribute(domElement, "data", value);
                break;
              }
            case "src":
            case "href":
              if ("" === value && ("a" !== tag || "href" !== key)) {
                domElement.removeAttribute(key);
                break;
              }
              if (null == value || "function" === typeof value || "symbol" === typeof value || "boolean" === typeof value) {
                domElement.removeAttribute(key);
                break;
              }
              value = sanitizeURL("" + value);
              domElement.setAttribute(key, value);
              break;
            case "action":
            case "formAction":
              if ("function" === typeof value) {
                domElement.setAttribute(
                  key,
                  "javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')"
                );
                break;
              } else
                "function" === typeof prevValue && ("formAction" === key ? ("input" !== tag && setProp(domElement, tag, "name", props.name, props, null), setProp(
                  domElement,
                  tag,
                  "formEncType",
                  props.formEncType,
                  props,
                  null
                ), setProp(
                  domElement,
                  tag,
                  "formMethod",
                  props.formMethod,
                  props,
                  null
                ), setProp(
                  domElement,
                  tag,
                  "formTarget",
                  props.formTarget,
                  props,
                  null
                )) : (setProp(domElement, tag, "encType", props.encType, props, null), setProp(domElement, tag, "method", props.method, props, null), setProp(domElement, tag, "target", props.target, props, null)));
              if (null == value || "symbol" === typeof value || "boolean" === typeof value) {
                domElement.removeAttribute(key);
                break;
              }
              value = sanitizeURL("" + value);
              domElement.setAttribute(key, value);
              break;
            case "onClick":
              null != value && (domElement.onclick = noop$1);
              break;
            case "onScroll":
              null != value && listenToNonDelegatedEvent("scroll", domElement);
              break;
            case "onScrollEnd":
              null != value && listenToNonDelegatedEvent("scrollend", domElement);
              break;
            case "dangerouslySetInnerHTML":
              if (null != value) {
                if ("object" !== typeof value || !("__html" in value))
                  throw Error(formatProdErrorMessage(61));
                key = value.__html;
                if (null != key) {
                  if (null != props.children) throw Error(formatProdErrorMessage(60));
                  domElement.innerHTML = key;
                }
              }
              break;
            case "multiple":
              domElement.multiple = value && "function" !== typeof value && "symbol" !== typeof value;
              break;
            case "muted":
              domElement.muted = value && "function" !== typeof value && "symbol" !== typeof value;
              break;
            case "suppressContentEditableWarning":
            case "suppressHydrationWarning":
            case "defaultValue":
            case "defaultChecked":
            case "innerHTML":
            case "ref":
              break;
            case "autoFocus":
              break;
            case "xlinkHref":
              if (null == value || "function" === typeof value || "boolean" === typeof value || "symbol" === typeof value) {
                domElement.removeAttribute("xlink:href");
                break;
              }
              key = sanitizeURL("" + value);
              domElement.setAttributeNS(
                "http://www.w3.org/1999/xlink",
                "xlink:href",
                key
              );
              break;
            case "contentEditable":
            case "spellCheck":
            case "draggable":
            case "value":
            case "autoReverse":
            case "externalResourcesRequired":
            case "focusable":
            case "preserveAlpha":
              null != value && "function" !== typeof value && "symbol" !== typeof value ? domElement.setAttribute(key, "" + value) : domElement.removeAttribute(key);
              break;
            case "inert":
            case "allowFullScreen":
            case "async":
            case "autoPlay":
            case "controls":
            case "default":
            case "defer":
            case "disabled":
            case "disablePictureInPicture":
            case "disableRemotePlayback":
            case "formNoValidate":
            case "hidden":
            case "loop":
            case "noModule":
            case "noValidate":
            case "open":
            case "playsInline":
            case "readOnly":
            case "required":
            case "reversed":
            case "scoped":
            case "seamless":
            case "itemScope":
              value && "function" !== typeof value && "symbol" !== typeof value ? domElement.setAttribute(key, "") : domElement.removeAttribute(key);
              break;
            case "capture":
            case "download":
              true === value ? domElement.setAttribute(key, "") : false !== value && null != value && "function" !== typeof value && "symbol" !== typeof value ? domElement.setAttribute(key, value) : domElement.removeAttribute(key);
              break;
            case "cols":
            case "rows":
            case "size":
            case "span":
              null != value && "function" !== typeof value && "symbol" !== typeof value && !isNaN(value) && 1 <= value ? domElement.setAttribute(key, value) : domElement.removeAttribute(key);
              break;
            case "rowSpan":
            case "start":
              null == value || "function" === typeof value || "symbol" === typeof value || isNaN(value) ? domElement.removeAttribute(key) : domElement.setAttribute(key, value);
              break;
            case "popover":
              listenToNonDelegatedEvent("beforetoggle", domElement);
              listenToNonDelegatedEvent("toggle", domElement);
              setValueForAttribute(domElement, "popover", value);
              break;
            case "xlinkActuate":
              setValueForNamespacedAttribute(
                domElement,
                "http://www.w3.org/1999/xlink",
                "xlink:actuate",
                value
              );
              break;
            case "xlinkArcrole":
              setValueForNamespacedAttribute(
                domElement,
                "http://www.w3.org/1999/xlink",
                "xlink:arcrole",
                value
              );
              break;
            case "xlinkRole":
              setValueForNamespacedAttribute(
                domElement,
                "http://www.w3.org/1999/xlink",
                "xlink:role",
                value
              );
              break;
            case "xlinkShow":
              setValueForNamespacedAttribute(
                domElement,
                "http://www.w3.org/1999/xlink",
                "xlink:show",
                value
              );
              break;
            case "xlinkTitle":
              setValueForNamespacedAttribute(
                domElement,
                "http://www.w3.org/1999/xlink",
                "xlink:title",
                value
              );
              break;
            case "xlinkType":
              setValueForNamespacedAttribute(
                domElement,
                "http://www.w3.org/1999/xlink",
                "xlink:type",
                value
              );
              break;
            case "xmlBase":
              setValueForNamespacedAttribute(
                domElement,
                "http://www.w3.org/XML/1998/namespace",
                "xml:base",
                value
              );
              break;
            case "xmlLang":
              setValueForNamespacedAttribute(
                domElement,
                "http://www.w3.org/XML/1998/namespace",
                "xml:lang",
                value
              );
              break;
            case "xmlSpace":
              setValueForNamespacedAttribute(
                domElement,
                "http://www.w3.org/XML/1998/namespace",
                "xml:space",
                value
              );
              break;
            case "is":
              setValueForAttribute(domElement, "is", value);
              break;
            case "innerText":
            case "textContent":
              break;
            default:
              if (!(2 < key.length) || "o" !== key[0] && "O" !== key[0] || "n" !== key[1] && "N" !== key[1])
                key = aliases.get(key) || key, setValueForAttribute(domElement, key, value);
          }
        }
        function setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {
          switch (key) {
            case "style":
              setValueForStyles(domElement, value, prevValue);
              break;
            case "dangerouslySetInnerHTML":
              if (null != value) {
                if ("object" !== typeof value || !("__html" in value))
                  throw Error(formatProdErrorMessage(61));
                key = value.__html;
                if (null != key) {
                  if (null != props.children) throw Error(formatProdErrorMessage(60));
                  domElement.innerHTML = key;
                }
              }
              break;
            case "children":
              "string" === typeof value ? setTextContent(domElement, value) : ("number" === typeof value || "bigint" === typeof value) && setTextContent(domElement, "" + value);
              break;
            case "onScroll":
              null != value && listenToNonDelegatedEvent("scroll", domElement);
              break;
            case "onScrollEnd":
              null != value && listenToNonDelegatedEvent("scrollend", domElement);
              break;
            case "onClick":
              null != value && (domElement.onclick = noop$1);
              break;
            case "suppressContentEditableWarning":
            case "suppressHydrationWarning":
            case "innerHTML":
            case "ref":
              break;
            case "innerText":
            case "textContent":
              break;
            default:
              if (!registrationNameDependencies.hasOwnProperty(key))
                a: {
                  if ("o" === key[0] && "n" === key[1] && (props = key.endsWith("Capture"), tag = key.slice(2, props ? key.length - 7 : void 0), prevValue = domElement[internalPropsKey] || null, prevValue = null != prevValue ? prevValue[key] : null, "function" === typeof prevValue && domElement.removeEventListener(tag, prevValue, props), "function" === typeof value)) {
                    "function" !== typeof prevValue && null !== prevValue && (key in domElement ? domElement[key] = null : domElement.hasAttribute(key) && domElement.removeAttribute(key));
                    domElement.addEventListener(tag, value, props);
                    break a;
                  }
                  key in domElement ? domElement[key] = value : true === value ? domElement.setAttribute(key, "") : setValueForAttribute(domElement, key, value);
                }
          }
        }
        function setInitialProperties(domElement, tag, props) {
          switch (tag) {
            case "div":
            case "span":
            case "svg":
            case "path":
            case "a":
            case "g":
            case "p":
            case "li":
              break;
            case "img":
              listenToNonDelegatedEvent("error", domElement);
              listenToNonDelegatedEvent("load", domElement);
              var hasSrc = false, hasSrcSet = false, propKey;
              for (propKey in props)
                if (props.hasOwnProperty(propKey)) {
                  var propValue = props[propKey];
                  if (null != propValue)
                    switch (propKey) {
                      case "src":
                        hasSrc = true;
                        break;
                      case "srcSet":
                        hasSrcSet = true;
                        break;
                      case "children":
                      case "dangerouslySetInnerHTML":
                        throw Error(formatProdErrorMessage(137, tag));
                      default:
                        setProp(domElement, tag, propKey, propValue, props, null);
                    }
                }
              hasSrcSet && setProp(domElement, tag, "srcSet", props.srcSet, props, null);
              hasSrc && setProp(domElement, tag, "src", props.src, props, null);
              return;
            case "input":
              listenToNonDelegatedEvent("invalid", domElement);
              var defaultValue = propKey = propValue = hasSrcSet = null, checked = null, defaultChecked = null;
              for (hasSrc in props)
                if (props.hasOwnProperty(hasSrc)) {
                  var propValue$184 = props[hasSrc];
                  if (null != propValue$184)
                    switch (hasSrc) {
                      case "name":
                        hasSrcSet = propValue$184;
                        break;
                      case "type":
                        propValue = propValue$184;
                        break;
                      case "checked":
                        checked = propValue$184;
                        break;
                      case "defaultChecked":
                        defaultChecked = propValue$184;
                        break;
                      case "value":
                        propKey = propValue$184;
                        break;
                      case "defaultValue":
                        defaultValue = propValue$184;
                        break;
                      case "children":
                      case "dangerouslySetInnerHTML":
                        if (null != propValue$184)
                          throw Error(formatProdErrorMessage(137, tag));
                        break;
                      default:
                        setProp(domElement, tag, hasSrc, propValue$184, props, null);
                    }
                }
              initInput(
                domElement,
                propKey,
                defaultValue,
                checked,
                defaultChecked,
                propValue,
                hasSrcSet,
                false
              );
              return;
            case "select":
              listenToNonDelegatedEvent("invalid", domElement);
              hasSrc = propValue = propKey = null;
              for (hasSrcSet in props)
                if (props.hasOwnProperty(hasSrcSet) && (defaultValue = props[hasSrcSet], null != defaultValue))
                  switch (hasSrcSet) {
                    case "value":
                      propKey = defaultValue;
                      break;
                    case "defaultValue":
                      propValue = defaultValue;
                      break;
                    case "multiple":
                      hasSrc = defaultValue;
                    default:
                      setProp(domElement, tag, hasSrcSet, defaultValue, props, null);
                  }
              tag = propKey;
              props = propValue;
              domElement.multiple = !!hasSrc;
              null != tag ? updateOptions(domElement, !!hasSrc, tag, false) : null != props && updateOptions(domElement, !!hasSrc, props, true);
              return;
            case "textarea":
              listenToNonDelegatedEvent("invalid", domElement);
              propKey = hasSrcSet = hasSrc = null;
              for (propValue in props)
                if (props.hasOwnProperty(propValue) && (defaultValue = props[propValue], null != defaultValue))
                  switch (propValue) {
                    case "value":
                      hasSrc = defaultValue;
                      break;
                    case "defaultValue":
                      hasSrcSet = defaultValue;
                      break;
                    case "children":
                      propKey = defaultValue;
                      break;
                    case "dangerouslySetInnerHTML":
                      if (null != defaultValue) throw Error(formatProdErrorMessage(91));
                      break;
                    default:
                      setProp(domElement, tag, propValue, defaultValue, props, null);
                  }
              initTextarea(domElement, hasSrc, hasSrcSet, propKey);
              return;
            case "option":
              for (checked in props)
                if (props.hasOwnProperty(checked) && (hasSrc = props[checked], null != hasSrc))
                  switch (checked) {
                    case "selected":
                      domElement.selected = hasSrc && "function" !== typeof hasSrc && "symbol" !== typeof hasSrc;
                      break;
                    default:
                      setProp(domElement, tag, checked, hasSrc, props, null);
                  }
              return;
            case "dialog":
              listenToNonDelegatedEvent("beforetoggle", domElement);
              listenToNonDelegatedEvent("toggle", domElement);
              listenToNonDelegatedEvent("cancel", domElement);
              listenToNonDelegatedEvent("close", domElement);
              break;
            case "iframe":
            case "object":
              listenToNonDelegatedEvent("load", domElement);
              break;
            case "video":
            case "audio":
              for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)
                listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);
              break;
            case "image":
              listenToNonDelegatedEvent("error", domElement);
              listenToNonDelegatedEvent("load", domElement);
              break;
            case "details":
              listenToNonDelegatedEvent("toggle", domElement);
              break;
            case "embed":
            case "source":
            case "link":
              listenToNonDelegatedEvent("error", domElement), listenToNonDelegatedEvent("load", domElement);
            case "area":
            case "base":
            case "br":
            case "col":
            case "hr":
            case "keygen":
            case "meta":
            case "param":
            case "track":
            case "wbr":
            case "menuitem":
              for (defaultChecked in props)
                if (props.hasOwnProperty(defaultChecked) && (hasSrc = props[defaultChecked], null != hasSrc))
                  switch (defaultChecked) {
                    case "children":
                    case "dangerouslySetInnerHTML":
                      throw Error(formatProdErrorMessage(137, tag));
                    default:
                      setProp(domElement, tag, defaultChecked, hasSrc, props, null);
                  }
              return;
            default:
              if (isCustomElement(tag)) {
                for (propValue$184 in props)
                  props.hasOwnProperty(propValue$184) && (hasSrc = props[propValue$184], void 0 !== hasSrc && setPropOnCustomElement(
                    domElement,
                    tag,
                    propValue$184,
                    hasSrc,
                    props,
                    void 0
                  ));
                return;
              }
          }
          for (defaultValue in props)
            props.hasOwnProperty(defaultValue) && (hasSrc = props[defaultValue], null != hasSrc && setProp(domElement, tag, defaultValue, hasSrc, props, null));
        }
        function updateProperties(domElement, tag, lastProps, nextProps) {
          switch (tag) {
            case "div":
            case "span":
            case "svg":
            case "path":
            case "a":
            case "g":
            case "p":
            case "li":
              break;
            case "input":
              var name = null, type = null, value = null, defaultValue = null, lastDefaultValue = null, checked = null, defaultChecked = null;
              for (propKey in lastProps) {
                var lastProp = lastProps[propKey];
                if (lastProps.hasOwnProperty(propKey) && null != lastProp)
                  switch (propKey) {
                    case "checked":
                      break;
                    case "value":
                      break;
                    case "defaultValue":
                      lastDefaultValue = lastProp;
                    default:
                      nextProps.hasOwnProperty(propKey) || setProp(domElement, tag, propKey, null, nextProps, lastProp);
                  }
              }
              for (var propKey$201 in nextProps) {
                var propKey = nextProps[propKey$201];
                lastProp = lastProps[propKey$201];
                if (nextProps.hasOwnProperty(propKey$201) && (null != propKey || null != lastProp))
                  switch (propKey$201) {
                    case "type":
                      type = propKey;
                      break;
                    case "name":
                      name = propKey;
                      break;
                    case "checked":
                      checked = propKey;
                      break;
                    case "defaultChecked":
                      defaultChecked = propKey;
                      break;
                    case "value":
                      value = propKey;
                      break;
                    case "defaultValue":
                      defaultValue = propKey;
                      break;
                    case "children":
                    case "dangerouslySetInnerHTML":
                      if (null != propKey)
                        throw Error(formatProdErrorMessage(137, tag));
                      break;
                    default:
                      propKey !== lastProp && setProp(
                        domElement,
                        tag,
                        propKey$201,
                        propKey,
                        nextProps,
                        lastProp
                      );
                  }
              }
              updateInput(
                domElement,
                value,
                defaultValue,
                lastDefaultValue,
                checked,
                defaultChecked,
                type,
                name
              );
              return;
            case "select":
              propKey = value = defaultValue = propKey$201 = null;
              for (type in lastProps)
                if (lastDefaultValue = lastProps[type], lastProps.hasOwnProperty(type) && null != lastDefaultValue)
                  switch (type) {
                    case "value":
                      break;
                    case "multiple":
                      propKey = lastDefaultValue;
                    default:
                      nextProps.hasOwnProperty(type) || setProp(
                        domElement,
                        tag,
                        type,
                        null,
                        nextProps,
                        lastDefaultValue
                      );
                  }
              for (name in nextProps)
                if (type = nextProps[name], lastDefaultValue = lastProps[name], nextProps.hasOwnProperty(name) && (null != type || null != lastDefaultValue))
                  switch (name) {
                    case "value":
                      propKey$201 = type;
                      break;
                    case "defaultValue":
                      defaultValue = type;
                      break;
                    case "multiple":
                      value = type;
                    default:
                      type !== lastDefaultValue && setProp(
                        domElement,
                        tag,
                        name,
                        type,
                        nextProps,
                        lastDefaultValue
                      );
                  }
              tag = defaultValue;
              lastProps = value;
              nextProps = propKey;
              null != propKey$201 ? updateOptions(domElement, !!lastProps, propKey$201, false) : !!nextProps !== !!lastProps && (null != tag ? updateOptions(domElement, !!lastProps, tag, true) : updateOptions(domElement, !!lastProps, lastProps ? [] : "", false));
              return;
            case "textarea":
              propKey = propKey$201 = null;
              for (defaultValue in lastProps)
                if (name = lastProps[defaultValue], lastProps.hasOwnProperty(defaultValue) && null != name && !nextProps.hasOwnProperty(defaultValue))
                  switch (defaultValue) {
                    case "value":
                      break;
                    case "children":
                      break;
                    default:
                      setProp(domElement, tag, defaultValue, null, nextProps, name);
                  }
              for (value in nextProps)
                if (name = nextProps[value], type = lastProps[value], nextProps.hasOwnProperty(value) && (null != name || null != type))
                  switch (value) {
                    case "value":
                      propKey$201 = name;
                      break;
                    case "defaultValue":
                      propKey = name;
                      break;
                    case "children":
                      break;
                    case "dangerouslySetInnerHTML":
                      if (null != name) throw Error(formatProdErrorMessage(91));
                      break;
                    default:
                      name !== type && setProp(domElement, tag, value, name, nextProps, type);
                  }
              updateTextarea(domElement, propKey$201, propKey);
              return;
            case "option":
              for (var propKey$217 in lastProps)
                if (propKey$201 = lastProps[propKey$217], lastProps.hasOwnProperty(propKey$217) && null != propKey$201 && !nextProps.hasOwnProperty(propKey$217))
                  switch (propKey$217) {
                    case "selected":
                      domElement.selected = false;
                      break;
                    default:
                      setProp(
                        domElement,
                        tag,
                        propKey$217,
                        null,
                        nextProps,
                        propKey$201
                      );
                  }
              for (lastDefaultValue in nextProps)
                if (propKey$201 = nextProps[lastDefaultValue], propKey = lastProps[lastDefaultValue], nextProps.hasOwnProperty(lastDefaultValue) && propKey$201 !== propKey && (null != propKey$201 || null != propKey))
                  switch (lastDefaultValue) {
                    case "selected":
                      domElement.selected = propKey$201 && "function" !== typeof propKey$201 && "symbol" !== typeof propKey$201;
                      break;
                    default:
                      setProp(
                        domElement,
                        tag,
                        lastDefaultValue,
                        propKey$201,
                        nextProps,
                        propKey
                      );
                  }
              return;
            case "img":
            case "link":
            case "area":
            case "base":
            case "br":
            case "col":
            case "embed":
            case "hr":
            case "keygen":
            case "meta":
            case "param":
            case "source":
            case "track":
            case "wbr":
            case "menuitem":
              for (var propKey$222 in lastProps)
                propKey$201 = lastProps[propKey$222], lastProps.hasOwnProperty(propKey$222) && null != propKey$201 && !nextProps.hasOwnProperty(propKey$222) && setProp(domElement, tag, propKey$222, null, nextProps, propKey$201);
              for (checked in nextProps)
                if (propKey$201 = nextProps[checked], propKey = lastProps[checked], nextProps.hasOwnProperty(checked) && propKey$201 !== propKey && (null != propKey$201 || null != propKey))
                  switch (checked) {
                    case "children":
                    case "dangerouslySetInnerHTML":
                      if (null != propKey$201)
                        throw Error(formatProdErrorMessage(137, tag));
                      break;
                    default:
                      setProp(
                        domElement,
                        tag,
                        checked,
                        propKey$201,
                        nextProps,
                        propKey
                      );
                  }
              return;
            default:
              if (isCustomElement(tag)) {
                for (var propKey$227 in lastProps)
                  propKey$201 = lastProps[propKey$227], lastProps.hasOwnProperty(propKey$227) && void 0 !== propKey$201 && !nextProps.hasOwnProperty(propKey$227) && setPropOnCustomElement(
                    domElement,
                    tag,
                    propKey$227,
                    void 0,
                    nextProps,
                    propKey$201
                  );
                for (defaultChecked in nextProps)
                  propKey$201 = nextProps[defaultChecked], propKey = lastProps[defaultChecked], !nextProps.hasOwnProperty(defaultChecked) || propKey$201 === propKey || void 0 === propKey$201 && void 0 === propKey || setPropOnCustomElement(
                    domElement,
                    tag,
                    defaultChecked,
                    propKey$201,
                    nextProps,
                    propKey
                  );
                return;
              }
          }
          for (var propKey$232 in lastProps)
            propKey$201 = lastProps[propKey$232], lastProps.hasOwnProperty(propKey$232) && null != propKey$201 && !nextProps.hasOwnProperty(propKey$232) && setProp(domElement, tag, propKey$232, null, nextProps, propKey$201);
          for (lastProp in nextProps)
            propKey$201 = nextProps[lastProp], propKey = lastProps[lastProp], !nextProps.hasOwnProperty(lastProp) || propKey$201 === propKey || null == propKey$201 && null == propKey || setProp(domElement, tag, lastProp, propKey$201, nextProps, propKey);
        }
        function isLikelyStaticResource(initiatorType) {
          switch (initiatorType) {
            case "css":
            case "script":
            case "font":
            case "img":
            case "image":
            case "input":
            case "link":
              return true;
            default:
              return false;
          }
        }
        function estimateBandwidth() {
          if ("function" === typeof performance.getEntriesByType) {
            for (var count = 0, bits = 0, resourceEntries = performance.getEntriesByType("resource"), i = 0; i < resourceEntries.length; i++) {
              var entry = resourceEntries[i], transferSize = entry.transferSize, initiatorType = entry.initiatorType, duration = entry.duration;
              if (transferSize && duration && isLikelyStaticResource(initiatorType)) {
                initiatorType = 0;
                duration = entry.responseEnd;
                for (i += 1; i < resourceEntries.length; i++) {
                  var overlapEntry = resourceEntries[i], overlapStartTime = overlapEntry.startTime;
                  if (overlapStartTime > duration) break;
                  var overlapTransferSize = overlapEntry.transferSize, overlapInitiatorType = overlapEntry.initiatorType;
                  overlapTransferSize && isLikelyStaticResource(overlapInitiatorType) && (overlapEntry = overlapEntry.responseEnd, initiatorType += overlapTransferSize * (overlapEntry < duration ? 1 : (duration - overlapStartTime) / (overlapEntry - overlapStartTime)));
                }
                --i;
                bits += 8 * (transferSize + initiatorType) / (entry.duration / 1e3);
                count++;
                if (10 < count) break;
              }
            }
            if (0 < count) return bits / count / 1e6;
          }
          return navigator.connection && (count = navigator.connection.downlink, "number" === typeof count) ? count : 5;
        }
        var eventsEnabled = null, selectionInformation = null;
        function getOwnerDocumentFromRootContainer(rootContainerElement) {
          return 9 === rootContainerElement.nodeType ? rootContainerElement : rootContainerElement.ownerDocument;
        }
        function getOwnHostContext(namespaceURI) {
          switch (namespaceURI) {
            case "http://www.w3.org/2000/svg":
              return 1;
            case "http://www.w3.org/1998/Math/MathML":
              return 2;
            default:
              return 0;
          }
        }
        function getChildHostContextProd(parentNamespace, type) {
          if (0 === parentNamespace)
            switch (type) {
              case "svg":
                return 1;
              case "math":
                return 2;
              default:
                return 0;
            }
          return 1 === parentNamespace && "foreignObject" === type ? 0 : parentNamespace;
        }
        function shouldSetTextContent(type, props) {
          return "textarea" === type || "noscript" === type || "string" === typeof props.children || "number" === typeof props.children || "bigint" === typeof props.children || "object" === typeof props.dangerouslySetInnerHTML && null !== props.dangerouslySetInnerHTML && null != props.dangerouslySetInnerHTML.__html;
        }
        var currentPopstateTransitionEvent = null;
        function shouldAttemptEagerTransition() {
          var event = window.event;
          if (event && "popstate" === event.type) {
            if (event === currentPopstateTransitionEvent) return false;
            currentPopstateTransitionEvent = event;
            return true;
          }
          currentPopstateTransitionEvent = null;
          return false;
        }
        var scheduleTimeout = "function" === typeof setTimeout ? setTimeout : void 0, cancelTimeout = "function" === typeof clearTimeout ? clearTimeout : void 0, localPromise = "function" === typeof Promise ? Promise : void 0, scheduleMicrotask = "function" === typeof queueMicrotask ? queueMicrotask : "undefined" !== typeof localPromise ? function(callback) {
          return localPromise.resolve(null).then(callback).catch(handleErrorInNextTick);
        } : scheduleTimeout;
        function handleErrorInNextTick(error) {
          setTimeout(function() {
            throw error;
          });
        }
        function isSingletonScope(type) {
          return "head" === type;
        }
        function clearHydrationBoundary(parentInstance, hydrationInstance) {
          var node = hydrationInstance, depth = 0;
          do {
            var nextNode = node.nextSibling;
            parentInstance.removeChild(node);
            if (nextNode && 8 === nextNode.nodeType)
              if (node = nextNode.data, "/$" === node || "/&" === node) {
                if (0 === depth) {
                  parentInstance.removeChild(nextNode);
                  retryIfBlockedOn(hydrationInstance);
                  return;
                }
                depth--;
              } else if ("$" === node || "$?" === node || "$~" === node || "$!" === node || "&" === node)
                depth++;
              else if ("html" === node)
                releaseSingletonInstance(parentInstance.ownerDocument.documentElement);
              else if ("head" === node) {
                node = parentInstance.ownerDocument.head;
                releaseSingletonInstance(node);
                for (var node$jscomp$0 = node.firstChild; node$jscomp$0; ) {
                  var nextNode$jscomp$0 = node$jscomp$0.nextSibling, nodeName = node$jscomp$0.nodeName;
                  node$jscomp$0[internalHoistableMarker] || "SCRIPT" === nodeName || "STYLE" === nodeName || "LINK" === nodeName && "stylesheet" === node$jscomp$0.rel.toLowerCase() || node.removeChild(node$jscomp$0);
                  node$jscomp$0 = nextNode$jscomp$0;
                }
              } else
                "body" === node && releaseSingletonInstance(parentInstance.ownerDocument.body);
            node = nextNode;
          } while (node);
          retryIfBlockedOn(hydrationInstance);
        }
        function hideOrUnhideDehydratedBoundary(suspenseInstance, isHidden) {
          var node = suspenseInstance;
          suspenseInstance = 0;
          do {
            var nextNode = node.nextSibling;
            1 === node.nodeType ? isHidden ? (node._stashedDisplay = node.style.display, node.style.display = "none") : (node.style.display = node._stashedDisplay || "", "" === node.getAttribute("style") && node.removeAttribute("style")) : 3 === node.nodeType && (isHidden ? (node._stashedText = node.nodeValue, node.nodeValue = "") : node.nodeValue = node._stashedText || "");
            if (nextNode && 8 === nextNode.nodeType)
              if (node = nextNode.data, "/$" === node)
                if (0 === suspenseInstance) break;
                else suspenseInstance--;
              else
                "$" !== node && "$?" !== node && "$~" !== node && "$!" !== node || suspenseInstance++;
            node = nextNode;
          } while (node);
        }
        function clearContainerSparingly(container) {
          var nextNode = container.firstChild;
          nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);
          for (; nextNode; ) {
            var node = nextNode;
            nextNode = nextNode.nextSibling;
            switch (node.nodeName) {
              case "HTML":
              case "HEAD":
              case "BODY":
                clearContainerSparingly(node);
                detachDeletedInstance(node);
                continue;
              case "SCRIPT":
              case "STYLE":
                continue;
              case "LINK":
                if ("stylesheet" === node.rel.toLowerCase()) continue;
            }
            container.removeChild(node);
          }
        }
        function canHydrateInstance(instance, type, props, inRootOrSingleton) {
          for (; 1 === instance.nodeType; ) {
            var anyProps = props;
            if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {
              if (!inRootOrSingleton && ("INPUT" !== instance.nodeName || "hidden" !== instance.type))
                break;
            } else if (!inRootOrSingleton)
              if ("input" === type && "hidden" === instance.type) {
                var name = null == anyProps.name ? null : "" + anyProps.name;
                if ("hidden" === anyProps.type && instance.getAttribute("name") === name)
                  return instance;
              } else return instance;
            else if (!instance[internalHoistableMarker])
              switch (type) {
                case "meta":
                  if (!instance.hasAttribute("itemprop")) break;
                  return instance;
                case "link":
                  name = instance.getAttribute("rel");
                  if ("stylesheet" === name && instance.hasAttribute("data-precedence"))
                    break;
                  else if (name !== anyProps.rel || instance.getAttribute("href") !== (null == anyProps.href || "" === anyProps.href ? null : anyProps.href) || instance.getAttribute("crossorigin") !== (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) || instance.getAttribute("title") !== (null == anyProps.title ? null : anyProps.title))
                    break;
                  return instance;
                case "style":
                  if (instance.hasAttribute("data-precedence")) break;
                  return instance;
                case "script":
                  name = instance.getAttribute("src");
                  if ((name !== (null == anyProps.src ? null : anyProps.src) || instance.getAttribute("type") !== (null == anyProps.type ? null : anyProps.type) || instance.getAttribute("crossorigin") !== (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) && name && instance.hasAttribute("async") && !instance.hasAttribute("itemprop"))
                    break;
                  return instance;
                default:
                  return instance;
              }
            instance = getNextHydratable(instance.nextSibling);
            if (null === instance) break;
          }
          return null;
        }
        function canHydrateTextInstance(instance, text, inRootOrSingleton) {
          if ("" === text) return null;
          for (; 3 !== instance.nodeType; ) {
            if ((1 !== instance.nodeType || "INPUT" !== instance.nodeName || "hidden" !== instance.type) && !inRootOrSingleton)
              return null;
            instance = getNextHydratable(instance.nextSibling);
            if (null === instance) return null;
          }
          return instance;
        }
        function canHydrateHydrationBoundary(instance, inRootOrSingleton) {
          for (; 8 !== instance.nodeType; ) {
            if ((1 !== instance.nodeType || "INPUT" !== instance.nodeName || "hidden" !== instance.type) && !inRootOrSingleton)
              return null;
            instance = getNextHydratable(instance.nextSibling);
            if (null === instance) return null;
          }
          return instance;
        }
        function isSuspenseInstancePending(instance) {
          return "$?" === instance.data || "$~" === instance.data;
        }
        function isSuspenseInstanceFallback(instance) {
          return "$!" === instance.data || "$?" === instance.data && "loading" !== instance.ownerDocument.readyState;
        }
        function registerSuspenseInstanceRetry(instance, callback) {
          var ownerDocument = instance.ownerDocument;
          if ("$~" === instance.data) instance._reactRetry = callback;
          else if ("$?" !== instance.data || "loading" !== ownerDocument.readyState)
            callback();
          else {
            var listener = function() {
              callback();
              ownerDocument.removeEventListener("DOMContentLoaded", listener);
            };
            ownerDocument.addEventListener("DOMContentLoaded", listener);
            instance._reactRetry = listener;
          }
        }
        function getNextHydratable(node) {
          for (; null != node; node = node.nextSibling) {
            var nodeType = node.nodeType;
            if (1 === nodeType || 3 === nodeType) break;
            if (8 === nodeType) {
              nodeType = node.data;
              if ("$" === nodeType || "$!" === nodeType || "$?" === nodeType || "$~" === nodeType || "&" === nodeType || "F!" === nodeType || "F" === nodeType)
                break;
              if ("/$" === nodeType || "/&" === nodeType) return null;
            }
          }
          return node;
        }
        var previousHydratableOnEnteringScopedSingleton = null;
        function getNextHydratableInstanceAfterHydrationBoundary(hydrationInstance) {
          hydrationInstance = hydrationInstance.nextSibling;
          for (var depth = 0; hydrationInstance; ) {
            if (8 === hydrationInstance.nodeType) {
              var data = hydrationInstance.data;
              if ("/$" === data || "/&" === data) {
                if (0 === depth)
                  return getNextHydratable(hydrationInstance.nextSibling);
                depth--;
              } else
                "$" !== data && "$!" !== data && "$?" !== data && "$~" !== data && "&" !== data || depth++;
            }
            hydrationInstance = hydrationInstance.nextSibling;
          }
          return null;
        }
        function getParentHydrationBoundary(targetInstance) {
          targetInstance = targetInstance.previousSibling;
          for (var depth = 0; targetInstance; ) {
            if (8 === targetInstance.nodeType) {
              var data = targetInstance.data;
              if ("$" === data || "$!" === data || "$?" === data || "$~" === data || "&" === data) {
                if (0 === depth) return targetInstance;
                depth--;
              } else "/$" !== data && "/&" !== data || depth++;
            }
            targetInstance = targetInstance.previousSibling;
          }
          return null;
        }
        function resolveSingletonInstance(type, props, rootContainerInstance) {
          props = getOwnerDocumentFromRootContainer(rootContainerInstance);
          switch (type) {
            case "html":
              type = props.documentElement;
              if (!type) throw Error(formatProdErrorMessage(452));
              return type;
            case "head":
              type = props.head;
              if (!type) throw Error(formatProdErrorMessage(453));
              return type;
            case "body":
              type = props.body;
              if (!type) throw Error(formatProdErrorMessage(454));
              return type;
            default:
              throw Error(formatProdErrorMessage(451));
          }
        }
        function releaseSingletonInstance(instance) {
          for (var attributes = instance.attributes; attributes.length; )
            instance.removeAttributeNode(attributes[0]);
          detachDeletedInstance(instance);
        }
        var preloadPropsMap = new Map(), preconnectsSet = new Set();
        function getHoistableRoot(container) {
          return "function" === typeof container.getRootNode ? container.getRootNode() : 9 === container.nodeType ? container : container.ownerDocument;
        }
        var previousDispatcher = ReactDOMSharedInternals.d;
        ReactDOMSharedInternals.d = {
          f: flushSyncWork,
          r: requestFormReset,
          D: prefetchDNS,
          C: preconnect,
          L: preload2,
          m: preloadModule,
          X: preinitScript,
          S: preinitStyle,
          M: preinitModuleScript
        };
        function flushSyncWork() {
          var previousWasRendering = previousDispatcher.f(), wasRendering = flushSyncWork$1();
          return previousWasRendering || wasRendering;
        }
        function requestFormReset(form) {
          var formInst = getInstanceFromNode(form);
          null !== formInst && 5 === formInst.tag && "form" === formInst.type ? requestFormReset$1(formInst) : previousDispatcher.r(form);
        }
        var globalDocument = "undefined" === typeof document ? null : document;
        function preconnectAs(rel, href, crossOrigin) {
          var ownerDocument = globalDocument;
          if (ownerDocument && "string" === typeof href && href) {
            var limitedEscapedHref = escapeSelectorAttributeValueInsideDoubleQuotes(href);
            limitedEscapedHref = 'link[rel="' + rel + '"][href="' + limitedEscapedHref + '"]';
            "string" === typeof crossOrigin && (limitedEscapedHref += '[crossorigin="' + crossOrigin + '"]');
            preconnectsSet.has(limitedEscapedHref) || (preconnectsSet.add(limitedEscapedHref), rel = { rel, crossOrigin, href }, null === ownerDocument.querySelector(limitedEscapedHref) && (href = ownerDocument.createElement("link"), setInitialProperties(href, "link", rel), markNodeAsHoistable(href), ownerDocument.head.appendChild(href)));
          }
        }
        function prefetchDNS(href) {
          previousDispatcher.D(href);
          preconnectAs("dns-prefetch", href, null);
        }
        function preconnect(href, crossOrigin) {
          previousDispatcher.C(href, crossOrigin);
          preconnectAs("preconnect", href, crossOrigin);
        }
        function preload2(href, as, options2) {
          previousDispatcher.L(href, as, options2);
          var ownerDocument = globalDocument;
          if (ownerDocument && href && as) {
            var preloadSelector = 'link[rel="preload"][as="' + escapeSelectorAttributeValueInsideDoubleQuotes(as) + '"]';
            "image" === as ? options2 && options2.imageSrcSet ? (preloadSelector += '[imagesrcset="' + escapeSelectorAttributeValueInsideDoubleQuotes(
              options2.imageSrcSet
            ) + '"]', "string" === typeof options2.imageSizes && (preloadSelector += '[imagesizes="' + escapeSelectorAttributeValueInsideDoubleQuotes(
              options2.imageSizes
            ) + '"]')) : preloadSelector += '[href="' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '"]' : preloadSelector += '[href="' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '"]';
            var key = preloadSelector;
            switch (as) {
              case "style":
                key = getStyleKey(href);
                break;
              case "script":
                key = getScriptKey(href);
            }
            preloadPropsMap.has(key) || (href = assign(
              {
                rel: "preload",
                href: "image" === as && options2 && options2.imageSrcSet ? void 0 : href,
                as
              },
              options2
            ), preloadPropsMap.set(key, href), null !== ownerDocument.querySelector(preloadSelector) || "style" === as && ownerDocument.querySelector(getStylesheetSelectorFromKey(key)) || "script" === as && ownerDocument.querySelector(getScriptSelectorFromKey(key)) || (as = ownerDocument.createElement("link"), setInitialProperties(as, "link", href), markNodeAsHoistable(as), ownerDocument.head.appendChild(as)));
          }
        }
        function preloadModule(href, options2) {
          previousDispatcher.m(href, options2);
          var ownerDocument = globalDocument;
          if (ownerDocument && href) {
            var as = options2 && "string" === typeof options2.as ? options2.as : "script", preloadSelector = 'link[rel="modulepreload"][as="' + escapeSelectorAttributeValueInsideDoubleQuotes(as) + '"][href="' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '"]', key = preloadSelector;
            switch (as) {
              case "audioworklet":
              case "paintworklet":
              case "serviceworker":
              case "sharedworker":
              case "worker":
              case "script":
                key = getScriptKey(href);
            }
            if (!preloadPropsMap.has(key) && (href = assign({ rel: "modulepreload", href }, options2), preloadPropsMap.set(key, href), null === ownerDocument.querySelector(preloadSelector))) {
              switch (as) {
                case "audioworklet":
                case "paintworklet":
                case "serviceworker":
                case "sharedworker":
                case "worker":
                case "script":
                  if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))
                    return;
              }
              as = ownerDocument.createElement("link");
              setInitialProperties(as, "link", href);
              markNodeAsHoistable(as);
              ownerDocument.head.appendChild(as);
            }
          }
        }
        function preinitStyle(href, precedence, options2) {
          previousDispatcher.S(href, precedence, options2);
          var ownerDocument = globalDocument;
          if (ownerDocument && href) {
            var styles = getResourcesFromRoot(ownerDocument).hoistableStyles, key = getStyleKey(href);
            precedence = precedence || "default";
            var resource = styles.get(key);
            if (!resource) {
              var state = { loading: 0, preload: null };
              if (resource = ownerDocument.querySelector(
                getStylesheetSelectorFromKey(key)
              ))
                state.loading = 5;
              else {
                href = assign(
                  { rel: "stylesheet", href, "data-precedence": precedence },
                  options2
                );
                (options2 = preloadPropsMap.get(key)) && adoptPreloadPropsForStylesheet(href, options2);
                var link = resource = ownerDocument.createElement("link");
                markNodeAsHoistable(link);
                setInitialProperties(link, "link", href);
                link._p = new Promise(function(resolve, reject) {
                  link.onload = resolve;
                  link.onerror = reject;
                });
                link.addEventListener("load", function() {
                  state.loading |= 1;
                });
                link.addEventListener("error", function() {
                  state.loading |= 2;
                });
                state.loading |= 4;
                insertStylesheet(resource, precedence, ownerDocument);
              }
              resource = {
                type: "stylesheet",
                instance: resource,
                count: 1,
                state
              };
              styles.set(key, resource);
            }
          }
        }
        function preinitScript(src, options2) {
          previousDispatcher.X(src, options2);
          var ownerDocument = globalDocument;
          if (ownerDocument && src) {
            var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts, key = getScriptKey(src), resource = scripts.get(key);
            resource || (resource = ownerDocument.querySelector(getScriptSelectorFromKey(key)), resource || (src = assign({ src, async: true }, options2), (options2 = preloadPropsMap.get(key)) && adoptPreloadPropsForScript(src, options2), resource = ownerDocument.createElement("script"), markNodeAsHoistable(resource), setInitialProperties(resource, "link", src), ownerDocument.head.appendChild(resource)), resource = {
              type: "script",
              instance: resource,
              count: 1,
              state: null
            }, scripts.set(key, resource));
          }
        }
        function preinitModuleScript(src, options2) {
          previousDispatcher.M(src, options2);
          var ownerDocument = globalDocument;
          if (ownerDocument && src) {
            var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts, key = getScriptKey(src), resource = scripts.get(key);
            resource || (resource = ownerDocument.querySelector(getScriptSelectorFromKey(key)), resource || (src = assign({ src, async: true, type: "module" }, options2), (options2 = preloadPropsMap.get(key)) && adoptPreloadPropsForScript(src, options2), resource = ownerDocument.createElement("script"), markNodeAsHoistable(resource), setInitialProperties(resource, "link", src), ownerDocument.head.appendChild(resource)), resource = {
              type: "script",
              instance: resource,
              count: 1,
              state: null
            }, scripts.set(key, resource));
          }
        }
        function getResource(type, currentProps, pendingProps, currentResource) {
          var JSCompiler_inline_result = (JSCompiler_inline_result = rootInstanceStackCursor.current) ? getHoistableRoot(JSCompiler_inline_result) : null;
          if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));
          switch (type) {
            case "meta":
            case "title":
              return null;
            case "style":
              return "string" === typeof pendingProps.precedence && "string" === typeof pendingProps.href ? (currentProps = getStyleKey(pendingProps.href), pendingProps = getResourcesFromRoot(
                JSCompiler_inline_result
              ).hoistableStyles, currentResource = pendingProps.get(currentProps), currentResource || (currentResource = {
                type: "style",
                instance: null,
                count: 0,
                state: null
              }, pendingProps.set(currentProps, currentResource)), currentResource) : { type: "void", instance: null, count: 0, state: null };
            case "link":
              if ("stylesheet" === pendingProps.rel && "string" === typeof pendingProps.href && "string" === typeof pendingProps.precedence) {
                type = getStyleKey(pendingProps.href);
                var styles$243 = getResourcesFromRoot(
                  JSCompiler_inline_result
                ).hoistableStyles, resource$244 = styles$243.get(type);
                resource$244 || (JSCompiler_inline_result = JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result, resource$244 = {
                  type: "stylesheet",
                  instance: null,
                  count: 0,
                  state: { loading: 0, preload: null }
                }, styles$243.set(type, resource$244), (styles$243 = JSCompiler_inline_result.querySelector(
                  getStylesheetSelectorFromKey(type)
                )) && !styles$243._p && (resource$244.instance = styles$243, resource$244.state.loading = 5), preloadPropsMap.has(type) || (pendingProps = {
                  rel: "preload",
                  as: "style",
                  href: pendingProps.href,
                  crossOrigin: pendingProps.crossOrigin,
                  integrity: pendingProps.integrity,
                  media: pendingProps.media,
                  hrefLang: pendingProps.hrefLang,
                  referrerPolicy: pendingProps.referrerPolicy
                }, preloadPropsMap.set(type, pendingProps), styles$243 || preloadStylesheet(
                  JSCompiler_inline_result,
                  type,
                  pendingProps,
                  resource$244.state
                )));
                if (currentProps && null === currentResource)
                  throw Error(formatProdErrorMessage(528, ""));
                return resource$244;
              }
              if (currentProps && null !== currentResource)
                throw Error(formatProdErrorMessage(529, ""));
              return null;
            case "script":
              return currentProps = pendingProps.async, pendingProps = pendingProps.src, "string" === typeof pendingProps && currentProps && "function" !== typeof currentProps && "symbol" !== typeof currentProps ? (currentProps = getScriptKey(pendingProps), pendingProps = getResourcesFromRoot(
                JSCompiler_inline_result
              ).hoistableScripts, currentResource = pendingProps.get(currentProps), currentResource || (currentResource = {
                type: "script",
                instance: null,
                count: 0,
                state: null
              }, pendingProps.set(currentProps, currentResource)), currentResource) : { type: "void", instance: null, count: 0, state: null };
            default:
              throw Error(formatProdErrorMessage(444, type));
          }
        }
        function getStyleKey(href) {
          return 'href="' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '"';
        }
        function getStylesheetSelectorFromKey(key) {
          return 'link[rel="stylesheet"][' + key + "]";
        }
        function stylesheetPropsFromRawProps(rawProps) {
          return assign({}, rawProps, {
            "data-precedence": rawProps.precedence,
            precedence: null
          });
        }
        function preloadStylesheet(ownerDocument, key, preloadProps, state) {
          ownerDocument.querySelector('link[rel="preload"][as="style"][' + key + "]") ? state.loading = 1 : (key = ownerDocument.createElement("link"), state.preload = key, key.addEventListener("load", function() {
            return state.loading |= 1;
          }), key.addEventListener("error", function() {
            return state.loading |= 2;
          }), setInitialProperties(key, "link", preloadProps), markNodeAsHoistable(key), ownerDocument.head.appendChild(key));
        }
        function getScriptKey(src) {
          return '[src="' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '"]';
        }
        function getScriptSelectorFromKey(key) {
          return "script[async]" + key;
        }
        function acquireResource(hoistableRoot, resource, props) {
          resource.count++;
          if (null === resource.instance)
            switch (resource.type) {
              case "style":
                var instance = hoistableRoot.querySelector(
                  'style[data-href~="' + escapeSelectorAttributeValueInsideDoubleQuotes(props.href) + '"]'
                );
                if (instance)
                  return resource.instance = instance, markNodeAsHoistable(instance), instance;
                var styleProps = assign({}, props, {
                  "data-href": props.href,
                  "data-precedence": props.precedence,
                  href: null,
                  precedence: null
                });
                instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(
                  "style"
                );
                markNodeAsHoistable(instance);
                setInitialProperties(instance, "style", styleProps);
                insertStylesheet(instance, props.precedence, hoistableRoot);
                return resource.instance = instance;
              case "stylesheet":
                styleProps = getStyleKey(props.href);
                var instance$249 = hoistableRoot.querySelector(
                  getStylesheetSelectorFromKey(styleProps)
                );
                if (instance$249)
                  return resource.state.loading |= 4, resource.instance = instance$249, markNodeAsHoistable(instance$249), instance$249;
                instance = stylesheetPropsFromRawProps(props);
                (styleProps = preloadPropsMap.get(styleProps)) && adoptPreloadPropsForStylesheet(instance, styleProps);
                instance$249 = (hoistableRoot.ownerDocument || hoistableRoot).createElement("link");
                markNodeAsHoistable(instance$249);
                var linkInstance = instance$249;
                linkInstance._p = new Promise(function(resolve, reject) {
                  linkInstance.onload = resolve;
                  linkInstance.onerror = reject;
                });
                setInitialProperties(instance$249, "link", instance);
                resource.state.loading |= 4;
                insertStylesheet(instance$249, props.precedence, hoistableRoot);
                return resource.instance = instance$249;
              case "script":
                instance$249 = getScriptKey(props.src);
                if (styleProps = hoistableRoot.querySelector(
                  getScriptSelectorFromKey(instance$249)
                ))
                  return resource.instance = styleProps, markNodeAsHoistable(styleProps), styleProps;
                instance = props;
                if (styleProps = preloadPropsMap.get(instance$249))
                  instance = assign({}, props), adoptPreloadPropsForScript(instance, styleProps);
                hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;
                styleProps = hoistableRoot.createElement("script");
                markNodeAsHoistable(styleProps);
                setInitialProperties(styleProps, "link", instance);
                hoistableRoot.head.appendChild(styleProps);
                return resource.instance = styleProps;
              case "void":
                return null;
              default:
                throw Error(formatProdErrorMessage(443, resource.type));
            }
          else
            "stylesheet" === resource.type && 0 === (resource.state.loading & 4) && (instance = resource.instance, resource.state.loading |= 4, insertStylesheet(instance, props.precedence, hoistableRoot));
          return resource.instance;
        }
        function insertStylesheet(instance, precedence, root2) {
          for (var nodes = root2.querySelectorAll(
            'link[rel="stylesheet"][data-precedence],style[data-precedence]'
          ), last = nodes.length ? nodes[nodes.length - 1] : null, prior = last, i = 0; i < nodes.length; i++) {
            var node = nodes[i];
            if (node.dataset.precedence === precedence) prior = node;
            else if (prior !== last) break;
          }
          prior ? prior.parentNode.insertBefore(instance, prior.nextSibling) : (precedence = 9 === root2.nodeType ? root2.head : root2, precedence.insertBefore(instance, precedence.firstChild));
        }
        function adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {
          null == stylesheetProps.crossOrigin && (stylesheetProps.crossOrigin = preloadProps.crossOrigin);
          null == stylesheetProps.referrerPolicy && (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);
          null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);
        }
        function adoptPreloadPropsForScript(scriptProps, preloadProps) {
          null == scriptProps.crossOrigin && (scriptProps.crossOrigin = preloadProps.crossOrigin);
          null == scriptProps.referrerPolicy && (scriptProps.referrerPolicy = preloadProps.referrerPolicy);
          null == scriptProps.integrity && (scriptProps.integrity = preloadProps.integrity);
        }
        var tagCaches = null;
        function getHydratableHoistableCache(type, keyAttribute, ownerDocument) {
          if (null === tagCaches) {
            var cache = new Map();
            var caches = tagCaches = new Map();
            caches.set(ownerDocument, cache);
          } else
            caches = tagCaches, cache = caches.get(ownerDocument), cache || (cache = new Map(), caches.set(ownerDocument, cache));
          if (cache.has(type)) return cache;
          cache.set(type, null);
          ownerDocument = ownerDocument.getElementsByTagName(type);
          for (caches = 0; caches < ownerDocument.length; caches++) {
            var node = ownerDocument[caches];
            if (!(node[internalHoistableMarker] || node[internalInstanceKey] || "link" === type && "stylesheet" === node.getAttribute("rel")) && "http://www.w3.org/2000/svg" !== node.namespaceURI) {
              var nodeKey = node.getAttribute(keyAttribute) || "";
              nodeKey = type + nodeKey;
              var existing = cache.get(nodeKey);
              existing ? existing.push(node) : cache.set(nodeKey, [node]);
            }
          }
          return cache;
        }
        function mountHoistable(hoistableRoot, type, instance) {
          hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;
          hoistableRoot.head.insertBefore(
            instance,
            "title" === type ? hoistableRoot.querySelector("head > title") : null
          );
        }
        function isHostHoistableType(type, props, hostContext) {
          if (1 === hostContext || null != props.itemProp) return false;
          switch (type) {
            case "meta":
            case "title":
              return true;
            case "style":
              if ("string" !== typeof props.precedence || "string" !== typeof props.href || "" === props.href)
                break;
              return true;
            case "link":
              if ("string" !== typeof props.rel || "string" !== typeof props.href || "" === props.href || props.onLoad || props.onError)
                break;
              switch (props.rel) {
                case "stylesheet":
                  return type = props.disabled, "string" === typeof props.precedence && null == type;
                default:
                  return true;
              }
            case "script":
              if (props.async && "function" !== typeof props.async && "symbol" !== typeof props.async && !props.onLoad && !props.onError && props.src && "string" === typeof props.src)
                return true;
          }
          return false;
        }
        function preloadResource(resource) {
          return "stylesheet" === resource.type && 0 === (resource.state.loading & 3) ? false : true;
        }
        function suspendResource(state, hoistableRoot, resource, props) {
          if ("stylesheet" === resource.type && ("string" !== typeof props.media || false !== matchMedia(props.media).matches) && 0 === (resource.state.loading & 4)) {
            if (null === resource.instance) {
              var key = getStyleKey(props.href), instance = hoistableRoot.querySelector(
                getStylesheetSelectorFromKey(key)
              );
              if (instance) {
                hoistableRoot = instance._p;
                null !== hoistableRoot && "object" === typeof hoistableRoot && "function" === typeof hoistableRoot.then && (state.count++, state = onUnsuspend.bind(state), hoistableRoot.then(state, state));
                resource.state.loading |= 4;
                resource.instance = instance;
                markNodeAsHoistable(instance);
                return;
              }
              instance = hoistableRoot.ownerDocument || hoistableRoot;
              props = stylesheetPropsFromRawProps(props);
              (key = preloadPropsMap.get(key)) && adoptPreloadPropsForStylesheet(props, key);
              instance = instance.createElement("link");
              markNodeAsHoistable(instance);
              var linkInstance = instance;
              linkInstance._p = new Promise(function(resolve, reject) {
                linkInstance.onload = resolve;
                linkInstance.onerror = reject;
              });
              setInitialProperties(instance, "link", props);
              resource.instance = instance;
            }
            null === state.stylesheets && (state.stylesheets = new Map());
            state.stylesheets.set(resource, hoistableRoot);
            (hoistableRoot = resource.state.preload) && 0 === (resource.state.loading & 3) && (state.count++, resource = onUnsuspend.bind(state), hoistableRoot.addEventListener("load", resource), hoistableRoot.addEventListener("error", resource));
          }
        }
        var estimatedBytesWithinLimit = 0;
        function waitForCommitToBeReady(state, timeoutOffset) {
          state.stylesheets && 0 === state.count && insertSuspendedStylesheets(state, state.stylesheets);
          return 0 < state.count || 0 < state.imgCount ? function(commit) {
            var stylesheetTimer = setTimeout(function() {
              state.stylesheets && insertSuspendedStylesheets(state, state.stylesheets);
              if (state.unsuspend) {
                var unsuspend = state.unsuspend;
                state.unsuspend = null;
                unsuspend();
              }
            }, 6e4 + timeoutOffset);
            0 < state.imgBytes && 0 === estimatedBytesWithinLimit && (estimatedBytesWithinLimit = 62500 * estimateBandwidth());
            var imgTimer = setTimeout(
              function() {
                state.waitingForImages = false;
                if (0 === state.count && (state.stylesheets && insertSuspendedStylesheets(state, state.stylesheets), state.unsuspend)) {
                  var unsuspend = state.unsuspend;
                  state.unsuspend = null;
                  unsuspend();
                }
              },
              (state.imgBytes > estimatedBytesWithinLimit ? 50 : 800) + timeoutOffset
            );
            state.unsuspend = commit;
            return function() {
              state.unsuspend = null;
              clearTimeout(stylesheetTimer);
              clearTimeout(imgTimer);
            };
          } : null;
        }
        function onUnsuspend() {
          this.count--;
          if (0 === this.count && (0 === this.imgCount || !this.waitingForImages)) {
            if (this.stylesheets) insertSuspendedStylesheets(this, this.stylesheets);
            else if (this.unsuspend) {
              var unsuspend = this.unsuspend;
              this.unsuspend = null;
              unsuspend();
            }
          }
        }
        var precedencesByRoot = null;
        function insertSuspendedStylesheets(state, resources) {
          state.stylesheets = null;
          null !== state.unsuspend && (state.count++, precedencesByRoot = new Map(), resources.forEach(insertStylesheetIntoRoot, state), precedencesByRoot = null, onUnsuspend.call(state));
        }
        function insertStylesheetIntoRoot(root2, resource) {
          if (!(resource.state.loading & 4)) {
            var precedences = precedencesByRoot.get(root2);
            if (precedences) var last = precedences.get(null);
            else {
              precedences = new Map();
              precedencesByRoot.set(root2, precedences);
              for (var nodes = root2.querySelectorAll(
                "link[data-precedence],style[data-precedence]"
              ), i = 0; i < nodes.length; i++) {
                var node = nodes[i];
                if ("LINK" === node.nodeName || "not all" !== node.getAttribute("media"))
                  precedences.set(node.dataset.precedence, node), last = node;
              }
              last && precedences.set(null, last);
            }
            nodes = resource.instance;
            node = nodes.getAttribute("data-precedence");
            i = precedences.get(node) || last;
            i === last && precedences.set(null, nodes);
            precedences.set(node, nodes);
            this.count++;
            last = onUnsuspend.bind(this);
            nodes.addEventListener("load", last);
            nodes.addEventListener("error", last);
            i ? i.parentNode.insertBefore(nodes, i.nextSibling) : (root2 = 9 === root2.nodeType ? root2.head : root2, root2.insertBefore(nodes, root2.firstChild));
            resource.state.loading |= 4;
          }
        }
        var HostTransitionContext = {
          $$typeof: REACT_CONTEXT_TYPE,
          Provider: null,
          Consumer: null,
          _currentValue: sharedNotPendingObject,
          _currentValue2: sharedNotPendingObject,
          _threadCount: 0
        };
        function FiberRootNode(containerInfo, tag, hydrate, identifierPrefix, onUncaughtError, onCaughtError, onRecoverableError, onDefaultTransitionIndicator, formState) {
          this.tag = 1;
          this.containerInfo = containerInfo;
          this.pingCache = this.current = this.pendingChildren = null;
          this.timeoutHandle = -1;
          this.callbackNode = this.next = this.pendingContext = this.context = this.cancelPendingCommit = null;
          this.callbackPriority = 0;
          this.expirationTimes = createLaneMap(-1);
          this.entangledLanes = this.shellSuspendCounter = this.errorRecoveryDisabledLanes = this.expiredLanes = this.warmLanes = this.pingedLanes = this.suspendedLanes = this.pendingLanes = 0;
          this.entanglements = createLaneMap(0);
          this.hiddenUpdates = createLaneMap(null);
          this.identifierPrefix = identifierPrefix;
          this.onUncaughtError = onUncaughtError;
          this.onCaughtError = onCaughtError;
          this.onRecoverableError = onRecoverableError;
          this.pooledCache = null;
          this.pooledCacheLanes = 0;
          this.formState = formState;
          this.incompleteTransitions = new Map();
        }
        function createFiberRoot(containerInfo, tag, hydrate, initialChildren, hydrationCallbacks, isStrictMode, identifierPrefix, formState, onUncaughtError, onCaughtError, onRecoverableError, onDefaultTransitionIndicator) {
          containerInfo = new FiberRootNode(
            containerInfo,
            tag,
            hydrate,
            identifierPrefix,
            onUncaughtError,
            onCaughtError,
            onRecoverableError,
            onDefaultTransitionIndicator,
            formState
          );
          tag = 1;
          true === isStrictMode && (tag |= 24);
          isStrictMode = createFiberImplClass(3, null, null, tag);
          containerInfo.current = isStrictMode;
          isStrictMode.stateNode = containerInfo;
          tag = createCache();
          tag.refCount++;
          containerInfo.pooledCache = tag;
          tag.refCount++;
          isStrictMode.memoizedState = {
            element: initialChildren,
            isDehydrated: hydrate,
            cache: tag
          };
          initializeUpdateQueue(isStrictMode);
          return containerInfo;
        }
        function getContextForSubtree(parentComponent) {
          if (!parentComponent) return emptyContextObject;
          parentComponent = emptyContextObject;
          return parentComponent;
        }
        function updateContainerImpl(rootFiber, lane, element, container, parentComponent, callback) {
          parentComponent = getContextForSubtree(parentComponent);
          null === container.context ? container.context = parentComponent : container.pendingContext = parentComponent;
          container = createUpdate(lane);
          container.payload = { element };
          callback = void 0 === callback ? null : callback;
          null !== callback && (container.callback = callback);
          element = enqueueUpdate(rootFiber, container, lane);
          null !== element && (scheduleUpdateOnFiber(element, rootFiber, lane), entangleTransitions(element, rootFiber, lane));
        }
        function markRetryLaneImpl(fiber, retryLane) {
          fiber = fiber.memoizedState;
          if (null !== fiber && null !== fiber.dehydrated) {
            var a = fiber.retryLane;
            fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;
          }
        }
        function markRetryLaneIfNotHydrated(fiber, retryLane) {
          markRetryLaneImpl(fiber, retryLane);
          (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);
        }
        function attemptContinuousHydration(fiber) {
          if (13 === fiber.tag || 31 === fiber.tag) {
            var root2 = enqueueConcurrentRenderForLane(fiber, 67108864);
            null !== root2 && scheduleUpdateOnFiber(root2, fiber, 67108864);
            markRetryLaneIfNotHydrated(fiber, 67108864);
          }
        }
        function attemptHydrationAtCurrentPriority(fiber) {
          if (13 === fiber.tag || 31 === fiber.tag) {
            var lane = requestUpdateLane();
            lane = getBumpedLaneForHydrationByLane(lane);
            var root2 = enqueueConcurrentRenderForLane(fiber, lane);
            null !== root2 && scheduleUpdateOnFiber(root2, fiber, lane);
            markRetryLaneIfNotHydrated(fiber, lane);
          }
        }
        var _enabled = true;
        function dispatchDiscreteEvent(domEventName, eventSystemFlags, container, nativeEvent) {
          var prevTransition = ReactSharedInternals.T;
          ReactSharedInternals.T = null;
          var previousPriority = ReactDOMSharedInternals.p;
          try {
            ReactDOMSharedInternals.p = 2, dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);
          } finally {
            ReactDOMSharedInternals.p = previousPriority, ReactSharedInternals.T = prevTransition;
          }
        }
        function dispatchContinuousEvent(domEventName, eventSystemFlags, container, nativeEvent) {
          var prevTransition = ReactSharedInternals.T;
          ReactSharedInternals.T = null;
          var previousPriority = ReactDOMSharedInternals.p;
          try {
            ReactDOMSharedInternals.p = 8, dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);
          } finally {
            ReactDOMSharedInternals.p = previousPriority, ReactSharedInternals.T = prevTransition;
          }
        }
        function dispatchEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent) {
          if (_enabled) {
            var blockedOn = findInstanceBlockingEvent(nativeEvent);
            if (null === blockedOn)
              dispatchEventForPluginEventSystem(
                domEventName,
                eventSystemFlags,
                nativeEvent,
                return_targetInst,
                targetContainer
              ), clearIfContinuousEvent(domEventName, nativeEvent);
            else if (queueIfContinuousEvent(
              blockedOn,
              domEventName,
              eventSystemFlags,
              targetContainer,
              nativeEvent
            ))
              nativeEvent.stopPropagation();
            else if (clearIfContinuousEvent(domEventName, nativeEvent), eventSystemFlags & 4 && -1 < discreteReplayableEvents.indexOf(domEventName)) {
              for (; null !== blockedOn; ) {
                var fiber = getInstanceFromNode(blockedOn);
                if (null !== fiber)
                  switch (fiber.tag) {
                    case 3:
                      fiber = fiber.stateNode;
                      if (fiber.current.memoizedState.isDehydrated) {
                        var lanes = getHighestPriorityLanes(fiber.pendingLanes);
                        if (0 !== lanes) {
                          var root2 = fiber;
                          root2.pendingLanes |= 2;
                          for (root2.entangledLanes |= 2; lanes; ) {
                            var lane = 1 << 31 - clz32(lanes);
                            root2.entanglements[1] |= lane;
                            lanes &= ~lane;
                          }
                          ensureRootIsScheduled(fiber);
                          0 === (executionContext & 6) && (workInProgressRootRenderTargetTime = now() + 500, flushSyncWorkAcrossRoots_impl(0));
                        }
                      }
                      break;
                    case 31:
                    case 13:
                      root2 = enqueueConcurrentRenderForLane(fiber, 2), null !== root2 && scheduleUpdateOnFiber(root2, fiber, 2), flushSyncWork$1(), markRetryLaneIfNotHydrated(fiber, 2);
                  }
                fiber = findInstanceBlockingEvent(nativeEvent);
                null === fiber && dispatchEventForPluginEventSystem(
                  domEventName,
                  eventSystemFlags,
                  nativeEvent,
                  return_targetInst,
                  targetContainer
                );
                if (fiber === blockedOn) break;
                blockedOn = fiber;
              }
              null !== blockedOn && nativeEvent.stopPropagation();
            } else
              dispatchEventForPluginEventSystem(
                domEventName,
                eventSystemFlags,
                nativeEvent,
                null,
                targetContainer
              );
          }
        }
        function findInstanceBlockingEvent(nativeEvent) {
          nativeEvent = getEventTarget(nativeEvent);
          return findInstanceBlockingTarget(nativeEvent);
        }
        var return_targetInst = null;
        function findInstanceBlockingTarget(targetNode) {
          return_targetInst = null;
          targetNode = getClosestInstanceFromNode(targetNode);
          if (null !== targetNode) {
            var nearestMounted = getNearestMountedFiber(targetNode);
            if (null === nearestMounted) targetNode = null;
            else {
              var tag = nearestMounted.tag;
              if (13 === tag) {
                targetNode = getSuspenseInstanceFromFiber(nearestMounted);
                if (null !== targetNode) return targetNode;
                targetNode = null;
              } else if (31 === tag) {
                targetNode = getActivityInstanceFromFiber(nearestMounted);
                if (null !== targetNode) return targetNode;
                targetNode = null;
              } else if (3 === tag) {
                if (nearestMounted.stateNode.current.memoizedState.isDehydrated)
                  return 3 === nearestMounted.tag ? nearestMounted.stateNode.containerInfo : null;
                targetNode = null;
              } else nearestMounted !== targetNode && (targetNode = null);
            }
          }
          return_targetInst = targetNode;
          return null;
        }
        function getEventPriority(domEventName) {
          switch (domEventName) {
            case "beforetoggle":
            case "cancel":
            case "click":
            case "close":
            case "contextmenu":
            case "copy":
            case "cut":
            case "auxclick":
            case "dblclick":
            case "dragend":
            case "dragstart":
            case "drop":
            case "focusin":
            case "focusout":
            case "input":
            case "invalid":
            case "keydown":
            case "keypress":
            case "keyup":
            case "mousedown":
            case "mouseup":
            case "paste":
            case "pause":
            case "play":
            case "pointercancel":
            case "pointerdown":
            case "pointerup":
            case "ratechange":
            case "reset":
            case "resize":
            case "seeked":
            case "submit":
            case "toggle":
            case "touchcancel":
            case "touchend":
            case "touchstart":
            case "volumechange":
            case "change":
            case "selectionchange":
            case "textInput":
            case "compositionstart":
            case "compositionend":
            case "compositionupdate":
            case "beforeblur":
            case "afterblur":
            case "beforeinput":
            case "blur":
            case "fullscreenchange":
            case "focus":
            case "hashchange":
            case "popstate":
            case "select":
            case "selectstart":
              return 2;
            case "drag":
            case "dragenter":
            case "dragexit":
            case "dragleave":
            case "dragover":
            case "mousemove":
            case "mouseout":
            case "mouseover":
            case "pointermove":
            case "pointerout":
            case "pointerover":
            case "scroll":
            case "touchmove":
            case "wheel":
            case "mouseenter":
            case "mouseleave":
            case "pointerenter":
            case "pointerleave":
              return 8;
            case "message":
              switch (getCurrentPriorityLevel()) {
                case ImmediatePriority:
                  return 2;
                case UserBlockingPriority:
                  return 8;
                case NormalPriority$1:
                case LowPriority:
                  return 32;
                case IdlePriority:
                  return 268435456;
                default:
                  return 32;
              }
            default:
              return 32;
          }
        }
        var hasScheduledReplayAttempt = false, queuedFocus = null, queuedDrag = null, queuedMouse = null, queuedPointers = new Map(), queuedPointerCaptures = new Map(), queuedExplicitHydrationTargets = [], discreteReplayableEvents = "mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(
          " "
        );
        function clearIfContinuousEvent(domEventName, nativeEvent) {
          switch (domEventName) {
            case "focusin":
            case "focusout":
              queuedFocus = null;
              break;
            case "dragenter":
            case "dragleave":
              queuedDrag = null;
              break;
            case "mouseover":
            case "mouseout":
              queuedMouse = null;
              break;
            case "pointerover":
            case "pointerout":
              queuedPointers.delete(nativeEvent.pointerId);
              break;
            case "gotpointercapture":
            case "lostpointercapture":
              queuedPointerCaptures.delete(nativeEvent.pointerId);
          }
        }
        function accumulateOrCreateContinuousQueuedReplayableEvent(existingQueuedEvent, blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {
          if (null === existingQueuedEvent || existingQueuedEvent.nativeEvent !== nativeEvent)
            return existingQueuedEvent = {
              blockedOn,
              domEventName,
              eventSystemFlags,
              nativeEvent,
              targetContainers: [targetContainer]
            }, null !== blockedOn && (blockedOn = getInstanceFromNode(blockedOn), null !== blockedOn && attemptContinuousHydration(blockedOn)), existingQueuedEvent;
          existingQueuedEvent.eventSystemFlags |= eventSystemFlags;
          blockedOn = existingQueuedEvent.targetContainers;
          null !== targetContainer && -1 === blockedOn.indexOf(targetContainer) && blockedOn.push(targetContainer);
          return existingQueuedEvent;
        }
        function queueIfContinuousEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {
          switch (domEventName) {
            case "focusin":
              return queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(
                queuedFocus,
                blockedOn,
                domEventName,
                eventSystemFlags,
                targetContainer,
                nativeEvent
              ), true;
            case "dragenter":
              return queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(
                queuedDrag,
                blockedOn,
                domEventName,
                eventSystemFlags,
                targetContainer,
                nativeEvent
              ), true;
            case "mouseover":
              return queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(
                queuedMouse,
                blockedOn,
                domEventName,
                eventSystemFlags,
                targetContainer,
                nativeEvent
              ), true;
            case "pointerover":
              var pointerId = nativeEvent.pointerId;
              queuedPointers.set(
                pointerId,
                accumulateOrCreateContinuousQueuedReplayableEvent(
                  queuedPointers.get(pointerId) || null,
                  blockedOn,
                  domEventName,
                  eventSystemFlags,
                  targetContainer,
                  nativeEvent
                )
              );
              return true;
            case "gotpointercapture":
              return pointerId = nativeEvent.pointerId, queuedPointerCaptures.set(
                pointerId,
                accumulateOrCreateContinuousQueuedReplayableEvent(
                  queuedPointerCaptures.get(pointerId) || null,
                  blockedOn,
                  domEventName,
                  eventSystemFlags,
                  targetContainer,
                  nativeEvent
                )
              ), true;
          }
          return false;
        }
        function attemptExplicitHydrationTarget(queuedTarget) {
          var targetInst = getClosestInstanceFromNode(queuedTarget.target);
          if (null !== targetInst) {
            var nearestMounted = getNearestMountedFiber(targetInst);
            if (null !== nearestMounted) {
              if (targetInst = nearestMounted.tag, 13 === targetInst) {
                if (targetInst = getSuspenseInstanceFromFiber(nearestMounted), null !== targetInst) {
                  queuedTarget.blockedOn = targetInst;
                  runWithPriority(queuedTarget.priority, function() {
                    attemptHydrationAtCurrentPriority(nearestMounted);
                  });
                  return;
                }
              } else if (31 === targetInst) {
                if (targetInst = getActivityInstanceFromFiber(nearestMounted), null !== targetInst) {
                  queuedTarget.blockedOn = targetInst;
                  runWithPriority(queuedTarget.priority, function() {
                    attemptHydrationAtCurrentPriority(nearestMounted);
                  });
                  return;
                }
              } else if (3 === targetInst && nearestMounted.stateNode.current.memoizedState.isDehydrated) {
                queuedTarget.blockedOn = 3 === nearestMounted.tag ? nearestMounted.stateNode.containerInfo : null;
                return;
              }
            }
          }
          queuedTarget.blockedOn = null;
        }
        function attemptReplayContinuousQueuedEvent(queuedEvent) {
          if (null !== queuedEvent.blockedOn) return false;
          for (var targetContainers = queuedEvent.targetContainers; 0 < targetContainers.length; ) {
            var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);
            if (null === nextBlockedOn) {
              nextBlockedOn = queuedEvent.nativeEvent;
              var nativeEventClone = new nextBlockedOn.constructor(
                nextBlockedOn.type,
                nextBlockedOn
              );
              currentReplayingEvent = nativeEventClone;
              nextBlockedOn.target.dispatchEvent(nativeEventClone);
              currentReplayingEvent = null;
            } else
              return targetContainers = getInstanceFromNode(nextBlockedOn), null !== targetContainers && attemptContinuousHydration(targetContainers), queuedEvent.blockedOn = nextBlockedOn, false;
            targetContainers.shift();
          }
          return true;
        }
        function attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {
          attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);
        }
        function replayUnblockedEvents() {
          hasScheduledReplayAttempt = false;
          null !== queuedFocus && attemptReplayContinuousQueuedEvent(queuedFocus) && (queuedFocus = null);
          null !== queuedDrag && attemptReplayContinuousQueuedEvent(queuedDrag) && (queuedDrag = null);
          null !== queuedMouse && attemptReplayContinuousQueuedEvent(queuedMouse) && (queuedMouse = null);
          queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);
          queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);
        }
        function scheduleCallbackIfUnblocked(queuedEvent, unblocked) {
          queuedEvent.blockedOn === unblocked && (queuedEvent.blockedOn = null, hasScheduledReplayAttempt || (hasScheduledReplayAttempt = true, Scheduler.unstable_scheduleCallback(
            Scheduler.unstable_NormalPriority,
            replayUnblockedEvents
          )));
        }
        var lastScheduledReplayQueue = null;
        function scheduleReplayQueueIfNeeded(formReplayingQueue) {
          lastScheduledReplayQueue !== formReplayingQueue && (lastScheduledReplayQueue = formReplayingQueue, Scheduler.unstable_scheduleCallback(
            Scheduler.unstable_NormalPriority,
            function() {
              lastScheduledReplayQueue === formReplayingQueue && (lastScheduledReplayQueue = null);
              for (var i = 0; i < formReplayingQueue.length; i += 3) {
                var form = formReplayingQueue[i], submitterOrAction = formReplayingQueue[i + 1], formData = formReplayingQueue[i + 2];
                if ("function" !== typeof submitterOrAction)
                  if (null === findInstanceBlockingTarget(submitterOrAction || form))
                    continue;
                  else break;
                var formInst = getInstanceFromNode(form);
                null !== formInst && (formReplayingQueue.splice(i, 3), i -= 3, startHostTransition(
                  formInst,
                  {
                    pending: true,
                    data: formData,
                    method: form.method,
                    action: submitterOrAction
                  },
                  submitterOrAction,
                  formData
                ));
              }
            }
          ));
        }
        function retryIfBlockedOn(unblocked) {
          function unblock(queuedEvent) {
            return scheduleCallbackIfUnblocked(queuedEvent, unblocked);
          }
          null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);
          null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);
          null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);
          queuedPointers.forEach(unblock);
          queuedPointerCaptures.forEach(unblock);
          for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {
            var queuedTarget = queuedExplicitHydrationTargets[i];
            queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);
          }
          for (; 0 < queuedExplicitHydrationTargets.length && (i = queuedExplicitHydrationTargets[0], null === i.blockedOn); )
            attemptExplicitHydrationTarget(i), null === i.blockedOn && queuedExplicitHydrationTargets.shift();
          i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;
          if (null != i)
            for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {
              var form = i[queuedTarget], submitterOrAction = i[queuedTarget + 1], formProps = form[internalPropsKey] || null;
              if ("function" === typeof submitterOrAction)
                formProps || scheduleReplayQueueIfNeeded(i);
              else if (formProps) {
                var action = null;
                if (submitterOrAction && submitterOrAction.hasAttribute("formAction"))
                  if (form = submitterOrAction, formProps = submitterOrAction[internalPropsKey] || null)
                    action = formProps.formAction;
                  else {
                    if (null !== findInstanceBlockingTarget(form)) continue;
                  }
                else action = formProps.action;
                "function" === typeof action ? i[queuedTarget + 1] = action : (i.splice(queuedTarget, 3), queuedTarget -= 3);
                scheduleReplayQueueIfNeeded(i);
              }
            }
        }
        function defaultOnDefaultTransitionIndicator() {
          function handleNavigate(event) {
            event.canIntercept && "react-transition" === event.info && event.intercept({
              handler: function() {
                return new Promise(function(resolve) {
                  return pendingResolve = resolve;
                });
              },
              focusReset: "manual",
              scroll: "manual"
            });
          }
          function handleNavigateComplete() {
            null !== pendingResolve && (pendingResolve(), pendingResolve = null);
            isCancelled || setTimeout(startFakeNavigation, 20);
          }
          function startFakeNavigation() {
            if (!isCancelled && !navigation.transition) {
              var currentEntry = navigation.currentEntry;
              currentEntry && null != currentEntry.url && navigation.navigate(currentEntry.url, {
                state: currentEntry.getState(),
                info: "react-transition",
                history: "replace"
              });
            }
          }
          if ("object" === typeof navigation) {
            var isCancelled = false, pendingResolve = null;
            navigation.addEventListener("navigate", handleNavigate);
            navigation.addEventListener("navigatesuccess", handleNavigateComplete);
            navigation.addEventListener("navigateerror", handleNavigateComplete);
            setTimeout(startFakeNavigation, 100);
            return function() {
              isCancelled = true;
              navigation.removeEventListener("navigate", handleNavigate);
              navigation.removeEventListener("navigatesuccess", handleNavigateComplete);
              navigation.removeEventListener("navigateerror", handleNavigateComplete);
              null !== pendingResolve && (pendingResolve(), pendingResolve = null);
            };
          }
        }
        function ReactDOMRoot(internalRoot) {
          this._internalRoot = internalRoot;
        }
        ReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render = function(children) {
          var root2 = this._internalRoot;
          if (null === root2) throw Error(formatProdErrorMessage(409));
          var current = root2.current, lane = requestUpdateLane();
          updateContainerImpl(current, lane, children, root2, null, null);
        };
        ReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount = function() {
          var root2 = this._internalRoot;
          if (null !== root2) {
            this._internalRoot = null;
            var container = root2.containerInfo;
            updateContainerImpl(root2.current, 2, null, root2, null, null);
            flushSyncWork$1();
            container[internalContainerInstanceKey] = null;
          }
        };
        function ReactDOMHydrationRoot(internalRoot) {
          this._internalRoot = internalRoot;
        }
        ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function(target) {
          if (target) {
            var updatePriority = resolveUpdatePriority();
            target = { blockedOn: null, target, priority: updatePriority };
            for (var i = 0; i < queuedExplicitHydrationTargets.length && 0 !== updatePriority && updatePriority < queuedExplicitHydrationTargets[i].priority; i++) ;
            queuedExplicitHydrationTargets.splice(i, 0, target);
            0 === i && attemptExplicitHydrationTarget(target);
          }
        };
        var isomorphicReactPackageVersion$jscomp$inline_1840 = React2.version;
        if ("19.2.5" !== isomorphicReactPackageVersion$jscomp$inline_1840)
          throw Error(
            formatProdErrorMessage(
              527,
              isomorphicReactPackageVersion$jscomp$inline_1840,
              "19.2.5"
            )
          );
        ReactDOMSharedInternals.findDOMNode = function(componentOrElement) {
          var fiber = componentOrElement._reactInternals;
          if (void 0 === fiber) {
            if ("function" === typeof componentOrElement.render)
              throw Error(formatProdErrorMessage(188));
            componentOrElement = Object.keys(componentOrElement).join(",");
            throw Error(formatProdErrorMessage(268, componentOrElement));
          }
          componentOrElement = findCurrentFiberUsingSlowPath(fiber);
          componentOrElement = null !== componentOrElement ? findCurrentHostFiberImpl(componentOrElement) : null;
          componentOrElement = null === componentOrElement ? null : componentOrElement.stateNode;
          return componentOrElement;
        };
        var internals$jscomp$inline_2347 = {
          bundleType: 0,
          version: "19.2.5",
          rendererPackageName: "react-dom",
          currentDispatcherRef: ReactSharedInternals,
          reconcilerVersion: "19.2.5"
        };
        if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
          var hook$jscomp$inline_2348 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
          if (!hook$jscomp$inline_2348.isDisabled && hook$jscomp$inline_2348.supportsFiber)
            try {
              rendererID = hook$jscomp$inline_2348.inject(
                internals$jscomp$inline_2347
              ), injectedHook = hook$jscomp$inline_2348;
            } catch (err) {
            }
        }
        reactDomClient_production.createRoot = function(container, options2) {
          if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));
          var isStrictMode = false, identifierPrefix = "", onUncaughtError = defaultOnUncaughtError, onCaughtError = defaultOnCaughtError, onRecoverableError = defaultOnRecoverableError;
          null !== options2 && void 0 !== options2 && (true === options2.unstable_strictMode && (isStrictMode = true), void 0 !== options2.identifierPrefix && (identifierPrefix = options2.identifierPrefix), void 0 !== options2.onUncaughtError && (onUncaughtError = options2.onUncaughtError), void 0 !== options2.onCaughtError && (onCaughtError = options2.onCaughtError), void 0 !== options2.onRecoverableError && (onRecoverableError = options2.onRecoverableError));
          options2 = createFiberRoot(
            container,
            1,
            false,
            null,
            null,
            isStrictMode,
            identifierPrefix,
            null,
            onUncaughtError,
            onCaughtError,
            onRecoverableError,
            defaultOnDefaultTransitionIndicator
          );
          container[internalContainerInstanceKey] = options2.current;
          listenToAllSupportedEvents(container);
          return new ReactDOMRoot(options2);
        };
        reactDomClient_production.hydrateRoot = function(container, initialChildren, options2) {
          if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));
          var isStrictMode = false, identifierPrefix = "", onUncaughtError = defaultOnUncaughtError, onCaughtError = defaultOnCaughtError, onRecoverableError = defaultOnRecoverableError, formState = null;
          null !== options2 && void 0 !== options2 && (true === options2.unstable_strictMode && (isStrictMode = true), void 0 !== options2.identifierPrefix && (identifierPrefix = options2.identifierPrefix), void 0 !== options2.onUncaughtError && (onUncaughtError = options2.onUncaughtError), void 0 !== options2.onCaughtError && (onCaughtError = options2.onCaughtError), void 0 !== options2.onRecoverableError && (onRecoverableError = options2.onRecoverableError), void 0 !== options2.formState && (formState = options2.formState));
          initialChildren = createFiberRoot(
            container,
            1,
            true,
            initialChildren,
            null != options2 ? options2 : null,
            isStrictMode,
            identifierPrefix,
            formState,
            onUncaughtError,
            onCaughtError,
            onRecoverableError,
            defaultOnDefaultTransitionIndicator
          );
          initialChildren.context = getContextForSubtree(null);
          options2 = initialChildren.current;
          isStrictMode = requestUpdateLane();
          isStrictMode = getBumpedLaneForHydrationByLane(isStrictMode);
          identifierPrefix = createUpdate(isStrictMode);
          identifierPrefix.callback = null;
          enqueueUpdate(options2, identifierPrefix, isStrictMode);
          options2 = isStrictMode;
          initialChildren.current.lanes = options2;
          markRootUpdated$1(initialChildren, options2);
          ensureRootIsScheduled(initialChildren);
          container[internalContainerInstanceKey] = initialChildren.current;
          listenToAllSupportedEvents(container);
          return new ReactDOMHydrationRoot(initialChildren);
        };
        reactDomClient_production.version = "19.2.5";
        return reactDomClient_production;
      }
      var hasRequiredClient;
      function requireClient() {
        if (hasRequiredClient) return client.exports;
        hasRequiredClient = 1;
        function checkDCE() {
          if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === "undefined" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== "function") {
            return;
          }
          try {
            __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);
          } catch (err) {
            console.error(err);
          }
        }
        {
          checkDCE();
          client.exports = requireReactDomClient_production();
        }
        return client.exports;
      }
      var clientExports = requireClient();
      const ReactDOM = getDefaultExportFromCjs(clientExports);
      const readerStyles = `:root{--readerBg: #000000;--sidebarCol: #28292b;--accentCol: #b73636;--icoCol: #eee;--textCol: #ddd;--sidebarColDark: #2b2f33;--sidebarColDarkA: #2b2f3300;--prevCol: #34393d;--accentSelected: #ffffff;--accentSelectedInvert: #333333;--sidebarColFocus: rgba(0, 0, 0, .3);--borderColor: rgba(0, 0, 0, .7);--blackFlag: rgba(0, 0, 0, .7);--blackLight: rgba(0, 0, 0, .2);--rdrBorderL: 1px;--rdr-wb: 2px;--rdrAncBottomWhite: rgba(255, 255, 255, .35);--rescueShade: unset}.ico-btn{font-family:guya!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-tap-highlight-color:transparent}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,sub,sup,tt,var,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1;position:relative;max-height:100vh;max-height:100dvh}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}@supports (-webkit-overflow-scrolling: touch){html,body{height:100.001vh}}button{border:0;margin:0;padding:0;cursor:pointer;background:none;border:none;all:unset}button::-moz-focus-inner{border:0;margin:0;padding:0;cursor:pointer;background:none;border:none}button:focus,option,details,summary{outline:none!important}*[tabindex="-1"]{outline:none;outline-style:none;box-shadow:none;border-color:transparent}html{background:var(--readerBg)}body{background:var(--readerBg);font-size:1.2rem;font-family:Open Sans,sans-serif;line-height:1.3;color:var(--textCol)}main{font-size:1.2rem;display:flex;height:100vh;height:100dvh;overflow:hidden;max-height:100vh;max-height:100dvh;position:relative}main>aside{height:100vh;height:100dvh;min-width:16em;max-width:16em;display:flex;flex-direction:column;background:var(--sidebarCol);position:relative;transition:margin-left .3s ease}main>aside>header{display:flex;align-items:flex-top;align-content:stretch}*{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.3) var(--prevCol)}*::-webkit-scrollbar{border-radius:4px;width:6px}*::-webkit-scrollbar-track{border-radius:4px;background:var(--prevCol);background-clip:content-box}*::-webkit-scrollbar-thumb{border-radius:4px;background:#0000004d}.ico-btn{display:flex;justify-content:center;align-items:center;font-size:18px;width:3rem;height:3rem;flex-shrink:0;color:var(--icoCol);text-decoration:none;cursor:default;position:relative;transition:all .1s ease,top 0s linear}.ico-btn:hover{color:var(--accentCol);top:-1px}.inline-icon{font-family:guya!important;font-size:1em}.ico-btn:active{top:0}header>h1{display:flex;justify-content:center;text-align:center;padding:.5rem;font-size:1rem;flex-grow:1;align-items:center;min-height:3rem;box-sizing:border-box}header>h1 a{color:inherit;text-decoration:none}header>h1 a:hover{text-decoration:underline}.ico-btn.guya:before{content:"";font-size:1.2em}.ico-btn.close:before{content:""}.ico-btn.search{cursor:pointer}.ico-btn.search:before{content:""}.ico-btn.jump{cursor:pointer}.ico-btn.jump:before{content:"⮠";transform:scaleX(-1)}.ico-btn.download:before{content:""}.download-anchor{width:.1px;position:relative}.download-wrapper{display:flex;border-radius:1px;background:var(--blackLight);box-shadow:2px 10px 20px var(--borderColor);height:2rem;position:absolute;right:0}.ico-btn.downloading{width:7rem!important;font-family:Open Sans,sans-serif!important;font-size:70%;font-weight:600;top:0!important;background:var(--sidebarCol);color:var(--accentCol);display:inherit;height:99%!important}.ico-btn.ico-btn.download-cancel{display:inherit}.ico-btn.download-cancel:before{content:""}.rdr-aside-content{display:flex;width:100%;flex-grow:1;flex-direction:column}.rdr-selector{display:flex;flex-direction:column;flex-grow:0}.rdr-selector>div{display:flex;align-items:stretch;align-content:stretch}.rdr-selector select{flex-grow:1;border:0;background:transparent;color:var(--icoCol)}.rdr-selector option{color:var(--icoCol);background:var(--sidebarColDark);padding:.4em .2em;display:block;line-height:1.3em;cursor:pointer}.rdr-selector-top,.rdr-selector-bot{padding-left:2rem;height:2rem}.rdr-selector-top .ico-btn,.rdr-selector-bot .ico-btn{height:2rem;width:2.6rem}.rdr-selector-mid{height:2.5rem;background:var(--sidebarColDark)}#message-box{flex-grow:1;text-align:right;font-size:.7rem;padding:0 1rem;line-height:2.2rem;color:#aaa;opacity:1;transition:opacity .3s ease}.initFlash{animation:initFlash 2s}.flash{animation:flash .5s}.fade{animation:fade .5s}.fadeOut{opacity:0;transition:opacity .3s ease}@keyframes flash{0%{color:#fff}to{color:#aaa;text-shadow:none}}@keyframes initFlash{0%{background:#ffffff4d}to{background:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}.rdr-selector-mid .ico-btn{height:2.5rem;width:2.5rem}.rdr-selector-vol{height:2rem}.flex-spacer{flex-grow:1000}.rdr-selector-chap.prev:before{content:""}.rdr-selector-chap.next:before{content:""}.rdr-selector-vol.prev,.rdr-selector-vol.next{width:2.9rem}.rdr-selector-vol.prev:before{content:""}.rdr-selector-vol.next:before{content:""}[data-apr\\.selpinned].ico-btn:before{content:"";transform:rotate(270deg)}[data-apr\\.selpinned=true].ico-btn:before{content:""}.ico-btn.password[data-password-active=true]{color:var(--accentCol)}[data-lyt\\.fit=height].ico-btn:before{content:"h"}[data-lyt\\.fit=width].ico-btn:before{content:"w"}[data-lyt\\.fit=height_limit].ico-btn:before{content:"H"}[data-lyt\\.fit=width_limit].ico-btn:before{content:"W"}[data-lyt\\.fit=all].ico-btn:before{content:""}[data-lyt\\.fit=all_limit].ico-btn:before{content:""}[data-lyt\\.fit=none].ico-btn:before{content:""}[data-lyt\\.direction].ico-btn:before{font-size:.8em}[data-lyt\\.direction=ltr].ico-btn:before{content:""}[data-lyt\\.direction=rtl].ico-btn:before{content:"";transform:scaleX(-1)}[data-lyt\\.direction=ttb].ico-btn:before{content:"";transform:rotate(90deg)}[data-lyt\\.spread="1"].ico-btn:before{content:""}[data-lyt\\.spread="2"].ico-btn:before{content:""}[data-lyt\\.spread="2-odd"].ico-btn:before{content:"";transform:scaleX(-1)}[data-bind=settings_button].ico-btn{box-shadow:-4px 1px 4px -5px #000;margin-left:.3rem;color:var(--icoCol);text-shadow:1px 1px 3px var(--borderColor)}[data-bind=settings_button].ico-btn:before{content:""}.rdr-comment{cursor:pointer}.rdr-comment.ico-btn:before{content:"";font-size:.9em}.rdr-share.ico-btn:before{content:""}[data-bhv\\.preload="1"].ico-btn:before{content:""}[data-bhv\\.preload="2"].ico-btn:before{content:""}[data-bhv\\.preload="3"].ico-btn:before{content:""}[data-bhv\\.preload="4"].ico-btn:before{content:""}[data-bhv\\.preload="5"].ico-btn:before{content:""}[data-bhv\\.preload="6"].ico-btn:before{content:""}[data-bhv\\.preload="7"].ico-btn:before{content:""}[data-bhv\\.preload="8"].ico-btn:before{content:""}[data-bhv\\.preload="9"].ico-btn:before{content:""}[data-bhv\\.preload="100"].ico-btn:before{content:""}.rdr-page-selector .preloaded{border-left-color:var(--accentCol)}.rdr-vol-wrap{position:relative;flex-grow:0;min-width:2rem;overflow:hidden;font-size:12px}.rdr-chap-wrap{position:relative;flex-grow:7;overflow:hidden;font-size:12px}.rdr-chap-wrap:after{content:"";position:absolute;bottom:0;right:0;top:0;width:2rem;background:linear-gradient(90deg,var(--sidebarColDarkA) 0%,var(--sidebarColDark) 100%);pointer-events:none}.rdr-vol-wrap label{justify-content:center}.rdr-chap-wrap label{padding-left:1ch;white-space:nowrap}.rdr-vol-wrap:hover label,.rdr-chap-wrap:hover label{color:var(--accentCol)}.rdr-groups{margin-top:.5rem;flex-grow:0}.rdr-groups div{font-size:.7em;padding:.7rem;text-align:center;cursor:default}.rdr-groups div:hover{background:#ffffff08;color:var(--accentCol)}.rdr-groups div.is-active{background:var(--sidebarColFocus);color:var(--icoCol)}.rdr-description div{margin:2em .8em;line-height:1.8;white-space:pre-wrap;font-size:.7em;max-height:50vh;overflow-y:auto}@media(max-width:768px){.rdr-description{display:none}}.rdr-previews{display:flex;flex-direction:column;margin-top:1rem;overflow:hidden;flex-basis:0;flex-grow:1}.rdr-previews .header{display:flex;flex-wrap:nowrap;list-style:none;background:var(--prevCol);flex-grow:0;font-size:0}.rdr-previews .header:hover,.rdr-previews .header:hover .expander{color:var(--accentCol)}.rdr-previews .header span{display:flex;align-items:center;padding:0 0 0 1rem;flex-grow:1;font-size:.8rem}.rdr-previews .header .expander{height:2.6rem;font-size:1.5rem}.rdr-previews .header .expander:before{content:""}.previews-true .rdr-previews .header .expander:before{content:""}.rdr-previews-gallery{flex-wrap:wrap;justify-content:space-around;align-items:center;padding-top:.25rem;overflow:auto;display:none;max-height:calc(100% - 3rem)}.previews-true .rdr-previews-gallery{display:flex}.rdr-previews-gallery img{flex-basis:30%;width:30%;margin-bottom:.5rem;box-shadow:0 1px 3px #0000004d;cursor:pointer}.rdr-previews-gallery .is-active{opacity:.7;outline:2px solid var(--accentCol)}.unload .rdr-selector-chap.next{transform:translate(-18rem)}.unload .rdr-selector-chap.prev{transform:translate(18rem)}.unload .rdr-selector-vol.prev{transform:translateY(230%)}.unload .rdr-selector-vol.next{transform:translateY(-230%)}.unload .rdr-vol-wrap label{transform:scaleY(0)}.unload .rdr-chap-wrap label{transform:scaleX(0)}.unload .rdr-groups{transform:translateY(2rem)}.rdr-selector-chap.next,.rdr-selector-chap.prev,.rdr-selector-vol.next,.rdr-selector-vol.prev,.rdr-selector-top,.rdr-selector-bot,.rdr-chap-wrap label,.rdr-vol-wrap label,.rdr-groups,.rdr-previews{transition:all .5s cubic-bezier(.22,.61,.36,1)}.rdr-chap-wrap label,.rdr-vol-wrap label{transform-origin:5.1rem center;transition-delay:.1s}.rdr-selector-top,.rdr-selector-bot{transition-delay:.2s;transition-duration:.5s}.unload .rdr-selector-chap.next,.unload .rdr-selector-chap.prev,.unload .rdr-selector-top,.unload .rdr-selector-bot,.unload .rdr-chap-wrap label,.unload .rdr-vol-wrap label,.unload .rdr-groups,.unload .rdr-previews{opacity:0}.unload .rdr-selector-mid:before{content:"";font-family:Guya;display:block;position:absolute;left:50%;animation:rotat 1.1s infinite linear;font-size:24px;line-height:2.4rem;transform-origin:center 52.5%}@keyframes rotat{0%{transform:translate3d(-50%,0,0) rotate(0)}to{transform:translate3d(-50%,0,0) rotate(360deg)}}.rdr-area{overflow:hidden;position:relative;min-height:100%;flex-grow:1;cursor:pointer}.rdr-area .hover-prev,.rdr-area .hover-next{position:fixed;bottom:0;right:0;width:10rem;height:13rem;background:linear-gradient(310deg,#00000073,#0000 50%);transition:opacity 1s ease;opacity:0;display:flex;justify-content:flex-end;align-items:flex-end;align-content:flex-end;pointer-events:none;-webkit-user-select:none;user-select:none;padding-bottom:1.5rem;z-index:1;box-sizing:border-box;will-change:transform}.direction-ttb .hover-prev,.direction-ttb .hover-next,.hoverinos-false .hover-prev,.hoverinos-false .hover-next{display:none}.rdr-area .hover-prev{justify-content:flex-start;align-items:flex-end;right:unset;background:linear-gradient(50deg,#00000073,#0000 50%);padding-left:2rem}.rdr-area .hover-prev.viz,.rdr-area .hover-next.viz{transition:opacity .5s ease;opacity:1}.rdr-area .hover-prev.nodelay,.rdr-area .hover-next.nodelay{transition:opacity .5s ease}.direction-ttb .rdr-area .hover-arrow{transform:translate(18%) rotate(90deg) translate(18%)}.rdr-area .hover-wrap{display:flex;flex-direction:column;text-align:center}.rdr-area .hover-arrow{color:#fff;display:block;font-family:guya;font-size:2em;padding:2rem 2rem 0rem;text-shadow:0px 2px 1px rgba(0,0,0,.7),0px 1px 3px rgba(0,0,0,.7)}.rdr-area .hover-sub{color:#fff;display:block;margin-top:.1rem;text-shadow:0px 2px 1px rgba(0,0,0,.7),0px 1px 3px rgba(0,0,0,.7);width:100%;font-size:.8em;font-variant:small-caps}.rdr-area .hover-prev .hover-sub:before{content:"prev"}.rdr-area .hover-next .hover-sub:before{content:"next"}.direction-rtl .rdr-area .hover-prev .hover-sub:before{content:"next"}.direction-rtl .rdr-area .hover-next .hover-sub:before{content:"prev"}#test_element{position:absolute;width:100%;left:0;z-index:3000;height:1px;background:red}.rdr-image-wrap{display:flex;height:100%;width:100%;position:relative;outline:none;outline-style:none;box-shadow:none;border-color:transparent;transform:translateZ(0);-webkit-transform:translate3d(0,0,0);perspective:1000;-webkit-perspective:1000}.direction-rtl .rdr-image-wrap,.direction-ltr .rdr-image-wrap{will-change:transform}.direction-ttb .rdr-image-wrap{margin-left:unset!important}.loaded .rdr-image-wrap{scroll-behavior:smooth}.rdr-image-wrap:after{content:"ы";font-size:.005em}.rdr-image-wrap *{transform:translateZ(0);-webkit-transform:translate3d(0,0,0);perspective:1000;-webkit-perspective:1000}.rdr-image-wrap:after{content:"讎";font-size:.005em}.rdr-image-wrap .ReaderImageWrapper{display:flex;min-width:100%;min-height:100%;justify-content:center;align-items:flex-start;position:relative;overflow:auto;outline-style:none;box-shadow:none;border-color:transparent;box-sizing:border-box}.o .rdr-image-wrap{opacity:.03}.rdr-image-wrap .ReaderImageWrapper img{-webkit-user-select:none;user-select:none;min-height:16rem;min-width:9rem;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M12 2A10 10 0 1 0 22 12A10 10 0 0 0 12 2Zm0 18a8 8 0 1 1 8-8A8 8 0 0 1 12 20Z' opacity='.5'/%3E%3Cpath fill='%23fff' d='M20 12h2A10 10 0 0 0 12 2V4A8 8 0 0 1 20 12Z'%3E%3CanimateTransform attributeName='transform' dur='1s' from='0 12 12' repeatCount='indefinite' to='360 12 12' type='rotate'/%3E%3C/path%3E%3C/svg%3E");background-size:10vw auto;background-position:50% 50%;background-repeat:no-repeat}.fit-width .rdr-image-wrap .ReaderImageWrapper img{min-width:0;width:100%;height:auto;max-width:unset;flex-grow:1}.fit-width_limit .rdr-image-wrap .ReaderImageWrapper img{height:auto;max-width:100%;object-fit:contain}.fit-width_limit .rdr-image-wrap .ReaderImageWrapper.two-page img{max-width:50%}.fit-height .rdr-image-wrap .ReaderImageWrapper.too-wide{justify-content:flex-start}.fit-height .rdr-image-wrap .ReaderImageWrapper img{max-width:unset;min-width:unset;width:auto;max-height:100%;min-height:100%;flex-shrink:1}.fit-height_limit .rdr-image-wrap .ReaderImageWrapper{max-height:100vh;max-height:100dvh}.fit-height_limit .rdr-image-wrap .ReaderImageWrapper img{max-width:unset;max-height:100%;width:auto;height:auto;flex-shrink:0}_:-webkit-full-screen:not(:root:root),.fit-height_limit .rdr-image-wrap .ReaderImageWrapper img{flex-shrink:1}.fit-none .rdr-image-wrap .ReaderImageWrapper{min-height:100vh;min-height:100dvh}.too-wide{justify-content:flex-start!important}.fit-none .rdr-image-wrap .ReaderImageWrapper img{flex-shrink:0}.fit-all .rdr-image-wrap .ReaderImageWrapper{min-height:100vh;min-height:100dvh;min-width:100%;align-items:center}.fit-all .rdr-image-wrap .ReaderImageWrapper img{object-fit:contain;min-width:0;width:auto;height:100%}.fit-all_limit .rdr-image-wrap .ReaderImageWrapper img{width:auto;height:100%;max-width:100%;max-height:100%;object-fit:contain}.direction-ttb .rdr-image-wrap{transform:none!important;flex-direction:row;flex-wrap:wrap;overflow-y:auto}.direction-ttb .rdr-image-wrap .ReaderImageWrapper{flex-shrink:0;margin-bottom:1em;min-height:20%!important;max-width:100%}.gap-true .rdr-image-wrap .ReaderImageWrapper{margin-bottom:0!important}.direction-ttb.fit-width .rdr-image-wrap .ReaderImageWrapper,.direction-ttb.fit-all .rdr-image-wrap .ReaderImageWrapper{min-height:auto}.direction-ttb.fit-all .rdr-image-wrap .ReaderImageWrapper img{max-height:100vh;max-height:100dvh}.direction-ttb.fit-height .rdr-image-wrap .ReaderImageWrapper img{min-height:100vh;min-height:100dvh;max-height:100vh;max-height:100dvh}.rdr-page-selector{height:100vh;height:100dvh;width:1px;top:0;opacity:0;position:relative;z-index:3;transition:left .3s ease,opacity .3s ease;min-width:2rem;margin-right:-2rem;cursor:pointer}.selPinned-true .rdr-page-selector,.vis,.rdr-page-selector:hover{opacity:1!important}.rdr-page-selector:hover .rdr-page-selector-keys,.rdr-page-selector.vis .rdr-page-selector-keys,.selPinned-true .rdr-page-selector-keys{left:3px}.rdr-page-selector-keys{height:100%;display:flex;flex-direction:column;position:relative;left:0;transition:left .3s ease,opacity .2s ease,box-shadow .2s ease}.rdr-page-selector-keys div{flex-grow:1;z-index:2;margin-bottom:2px;border-left:var(--rdrBorderL) solid #555;transition:left .2s ease,opacity .2s ease,box-shadow .2s ease,margin .2s ease,padding .2s ease,color .2s ease,text-shadow .2s ease,border .2s ease;position:relative;text-align:left;color:transparent;font-size:2vh;line-height:0;display:flex;align-items:center;justify-content:flex-start;padding-left:1em;will-change:transform;text-shadow:none}.rdr-page-selector-keys div:before{content:"";display:block;position:absolute;vertical-align:middle;margin-right:1.4ch;height:100%;width:var(--rdr-wb);left:-4px;background:#272b30}.rdr-page-selector-keys div:after{content:"";display:block;height:102%;width:100%;position:absolute}.rdr-page-selector-keys div:hover{border-left:1px solid lightgray;box-shadow:100px 0 20px -100px #ffffff80 inset,100px 0 20px -100px #0000008c inset;left:2px;color:#fff;text-shadow:1px 1px 0px rgba(0,0,0,.5),-1px -1px 0px rgba(0,0,0,.5),1px -1px 0px rgba(0,0,0,.5),-1px 1px 0px rgba(0,0,0,.5),1px 0px 0px rgba(0,0,0,.5),-1px 0px 0px rgba(0,0,0,.5),0px -1px 0px rgba(0,0,0,.5),0px 1px 0px rgba(0,0,0,.5),0px 0px 3px rgba(0,0,0,.5)}.rdr-page-selector-keys div.shown{border-left:1px solid white;color:#fff;box-shadow:100px 0 20px -100px #fff inset,100px 0 20px -90px inset #0000009e;text-shadow:1px 1px 0px rgba(0,0,0,.5),-1px -1px 0px rgba(0,0,0,.5),1px -1px 0px rgba(0,0,0,.5),-1px 1px 0px rgba(0,0,0,.5),1px 0px 0px rgba(0,0,0,.5),-1px 0px 0px rgba(0,0,0,.5),0px -1px 0px rgba(0,0,0,.5),0px 1px 0px rgba(0,0,0,.5),0px 0px 3px rgba(0,0,0,.5);left:0}.selPinned-true .rdr-page-selector-keys div.shown{color:#ffffffe6}.selPinned-true.selNum-false .rdr-page-selector-keys div.shown{color:transparent;text-shadow:none}.selPinned-true.selNum-false .rdr-page-selector-keys div.shown:hover{color:#fff;text-shadow:1px 1px 1px black,-1px -1px 1px black,1px -1px 1px black,-1px 1px 1px black}.selNum-false .rdr-page-selector-keys div,.selNum-false .rdr-page-selector-keys div:hover,.selNum-false .rdr-page-selector-keys div.shown,.selNum-false .rdr-page-selector-keys div.shown:hover{color:transparent;text-shadow:none}.rdr-page-selector-keys div.shown{padding-bottom:2px;margin-bottom:0}.rdr-page-selector-counter{display:none}.hide-side{position:absolute;top:0;right:0;top:unset!important;z-index:500;width:3rem}.hide-side div{top:unset!important}.hide-side div:after{content:"";transform:scaleX(-1);position:relative;bottom:.5rem;left:.6rem}.hide-side div:before{content:"";position:absolute;width:0;height:0;border-style:solid;border-width:0 3rem 3rem 0;border-color:transparent var(--sidebarColDark) transparent transparent}.hide-side:hover div:before{border-color:transparent var(--prevCol) transparent transparent}.zoom-level{top:0;flex-direction:column;overflow:hidden;right:24px;padding:2rem 3.5rem;opacity:.01;transition:opacity .3s ease;position:absolute;-webkit-user-select:none;user-select:none;display:none}.fit-width .zoom-level,.fit-width_limit .zoom-level{display:block}@keyframes zoomFlash{0%{opacity:0;padding:2rem 0rem}10%{opacity:1;padding:2rem 3.5rem}70%{opacity:1}to{opacity:0}}.zoom-level .ico-btn{background:var(--sidebarCol);width:3rem;height:3rem;border-top-left-radius:4px;border-top-right-radius:4px}.zoom-level .ico-btn:last-child{width:3rem;height:3rem;border-radius:0 0 4px 4px;margin-top:-1px}.zoom-level .ico-btn:hover{background:var(--sidebarColDark)}.fit-width .zoom-level:hover,.fit-width_limit .zoom-level:hover{opacity:1!important;animation-play-state:paused}.Tooltippy{position:absolute;padding:.4em .8em;background:var(--sidebarColFocus);border-radius:2px;box-shadow:2px 2px 3px #00000080;z-index:3000;font-size:11px;pointer-events:none;display:none}.Tooltippy.Error{border:1px solid rgb(230,60,60)}.Tooltippy .Tooltippy-key{display:inline-block;border:1px solid rgba(255,255,255,.2);padding:.1em .2em;min-width:1em;text-align:center;border-radius:2px;font-family:monospace}.Tooltippy .Tooltippy-key:first-of-type{margin-left:1ch}.FauxDrop{position:relative;display:flex}.FauxDrop select{position:absolute;width:100%;left:0;top:0;bottom:0;opacity:0}#rdr-vol,#rdr-chap{opacity:0}.FauxDrop label{display:flex;flex-grow:1;align-items:center;pointer-events:none}.LodaManager{inset:0;z-index:2000;display:flex;overflow:auto;position:fixed;will-change:transform;background:#0009;justify-content:center;align-items:flex-start;flex-direction:row;flex-wrap:wrap}.LodaManager:after{content:"";display:block;padding:5vh 0;min-width:100%}.Loda{display:flex;flex-direction:column;background:var(--prevCol);border-radius:4px;position:relative;box-shadow:0 4px 7px 3px #0000004d;margin-top:10vh;min-width:40vw}.Loda .close{position:absolute;right:0;top:0;z-index:20}.Loda header{display:flex;min-width:10rem;padding:0 4rem 0 1rem;font-size:.8rem;text-transform:uppercase;align-items:center;min-height:3rem;font-weight:600;letter-spacing:.04ch;color:var(--textCol)}.Loda_Search content{padding:0 .8em .8em}.Loda_Search input{background:#ffffff1a;width:100%;height:3rem;line-height:3rem;padding:0 1rem;box-sizing:border-box;border:none;font-size:1.2rem;color:var(--textCol);box-shadow:0 4px 8px var(--blackLight)}.Loda_Search input::-webkit-input-placeholder,.Loda_Search input::-moz-placeholder,.Loda_Search input:-ms-input-placeholder,.Loda_Search input:-moz-placeholder,.Loda_Jump input::-webkit-input-placeholder,.Loda_Jump input::-moz-placeholder,.Loda_Jump input:-ms-input-placeholder,.Loda_Jump input:-moz-placeholder{font-family:guya;opacity:.5}.Loda_Search .list{padding:1rem 0 0}.Loda_Search .list:empty{padding:0}.Loda.Loda_Jump{max-width:35ch;min-width:27ch;margin-top:0;align-self:center}.Loda_Jump .close{right:auto;top:-3rem;text-shadow:0px 1px 3px black}.Loda_Jump header{display:none}.Jump-Wrapper{display:flex;justify-content:stretch;height:3.5rem;align-items:stretch;align-content:stretch;border-radius:4px;overflow:hidden}.Loda_Jump input::placeholder{font-size:.7em}.Loda_Jump input{background:#ffffff1a;width:0%;text-align:center;line-height:2.5rem;padding:0 1rem;box-sizing:border-box;border:none;font-size:1.4rem;color:rgba(var(--textCol),.9);box-shadow:0 3.5px 6px #0003;flex-grow:1;height:auto;font-family:Open Sans}.Loda_Jump input:focus{outline:none;border:none}.Loda_Jump input:first-child{border-bottom-left-radius:4px;border-top-left-radius:4px}.Loda_Jump .Button{display:inline-block;color:#333;box-shadow:0 3.5px 6px #0003;font-family:Open Sans;height:auto;font-size:1.5em;color:var(--accentCol)}.Loda_Password{min-width:min(34rem,calc(100vw - 2rem));max-width:34rem}.Loda_Password .password-dialog-content{display:flex;flex-direction:column;gap:1.2rem;padding:0 1rem 1rem}.Loda_Password .password-field{display:flex;flex-direction:column;gap:.5rem}.Loda_Password .password-field span,.Loda_Password .password-methods legend{color:var(--textCol);font-size:.78rem;font-weight:600;text-transform:uppercase}.Loda_Password .password-field input{background:#ffffff1a;border:1px solid var(--borderColor);border-radius:4px;box-shadow:0 4px 8px var(--blackLight);color:var(--textCol);font-family:Open Sans;font-size:1rem;height:2.8rem;padding:0 .85rem}.Loda_Password .password-methods{border:0;margin:0;padding:0}.Loda_Password .password-method-grid{display:grid;gap:.8rem;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:.6rem}.Loda_Password .password-method-card{background:var(--sidebarColDark);border:1px solid var(--borderColor);border-radius:4px;cursor:pointer;display:flex;flex-direction:column;gap:.35rem;min-height:11rem;padding:.7rem;position:relative}.Loda_Password .password-method-card[data-selected=true]{border-color:var(--accentCol);box-shadow:0 0 0 1px var(--accentCol)}.Loda_Password .password-method-card input{height:1rem;margin:0;position:absolute;right:.7rem;top:.7rem;width:1rem}.Loda_Password .password-method-illustration{align-items:center;background:var(--sidebarColFocus);border:1px solid rgba(255,255,255,.1);border-radius:4px;display:flex;min-height:5.2rem;width:100%;overflow:hidden;position:relative;transition:border-color .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1)}.Loda_Password .password-method-card:hover .password-method-illustration{border-color:#ffffff40;box-shadow:0 0 10px #0000004d}.Loda_Password .password-method-card[data-selected=true] .password-method-illustration{border-color:var(--accentCol)}.Loda_Password .password-method-illustration svg{display:block;height:100%;width:100%}.Loda_Password .password-method-illustration .center-symbol{transform-origin:center;transition:transform .3s cubic-bezier(.175,.885,.32,1.275)}.Loda_Password .password-method-card:hover .center-symbol{transform:translate(80px,40px) scale(1.1)}.Loda_Password .password-method-card:hover .center-symbol circle:first-of-type{opacity:.3}.Loda_Password .password-method-illustration .scramble-slices rect{transition:transform .2s ease}@keyframes jitter-s1{0%,to{transform:translate(0)}20%{transform:translate(-3px)}40%{transform:translate(1px)}60%{transform:translate(-1px)}80%{transform:translate(2px)}}@keyframes jitter-s2{0%,to{transform:translate(0)}15%{transform:translate(2px)}35%{transform:translate(-2px)}55%{transform:translate(4px)}75%{transform:translate(-1px)}}@keyframes jitter-s3{0%,to{transform:translate(0)}25%{transform:translate(-4px)}50%{transform:translate(3px)}75%{transform:translate(-2px)}}@keyframes jitter-s4{0%,to{transform:translate(0)}10%{transform:translate(4px)}30%{transform:translate(-1px)}50%{transform:translate(2px)}70%{transform:translate(-3px)}90%{transform:translate(1px)}}@keyframes jitter-s5{0%,to{transform:translate(0)}30%{transform:translate(-2px)}60%{transform:translate(2px)}90%{transform:translate(-4px)}}.Loda_Password .scramble-slice-1{animation:jitter-s1 2.5s infinite steps(2)}.Loda_Password .scramble-slice-2{animation:jitter-s2 3.1s infinite steps(1)}.Loda_Password .scramble-slice-3{animation:jitter-s3 1.9s infinite steps(2)}.Loda_Password .scramble-slice-4{animation:jitter-s4 2.7s infinite steps(1)}.Loda_Password .scramble-slice-5{animation:jitter-s5 3.5s infinite steps(2)}.Loda_Password .password-method-card:hover .scramble-slice-1{animation-duration:.8s}.Loda_Password .password-method-card:hover .scramble-slice-2{animation-duration:.6s}.Loda_Password .password-method-card:hover .scramble-slice-3{animation-duration:.7s}.Loda_Password .password-method-card:hover .scramble-slice-4{animation-duration:.5s}.Loda_Password .password-method-card:hover .scramble-slice-5{animation-duration:.9s}.Loda_Password .password-method-title{color:var(--textCol);font-size:1rem;font-weight:700;padding-right:1.5rem}.Loda_Password .password-method-description{color:#ffffffa8;font-size:.78rem;line-height:1.4}.Loda_Password .password-actions{align-items:center;display:grid;gap:.6rem;grid-template-columns:auto 1fr auto auto}.Loda_Password .password-actions .ResetButton{margin-top:0;min-height:2.15rem}.Loda_Password .password-confirm{background:var(--accentCol);color:#111}.Loda_Password .password-field input:focus-visible,.Loda_Password .password-method-card:focus-within,.Loda_Password .ResetButton:focus-visible{outline:2px solid var(--accentCol);outline-offset:2px}@media(max-width:480px){.Loda_Password .password-method-grid{grid-template-columns:1fr}.Loda_Password .password-actions{grid-template-columns:1fr 1fr}.Loda_Password .password-actions span{display:none}}.Loda_Settings{margin-right:auto;margin-left:8rem;flex-direction:row;align-content:stretch;-webkit-user-select:none;user-select:none;min-width:31.2rem}.Loda_Settings aside{width:11.2rem;background-color:var(--sidebarColDark);padding-bottom:2rem}.Loda_Settings content{padding-bottom:2rem;min-width:20rem;max-width:30rem}.Loda_Settings .Tab{padding:.5rem 1rem;font-size:.9em}.Loda_Settings .Tab:hover{background:#ffffff26;cursor:default}.Loda_Settings .Tab.is-active{background:var(--sidebarColFocus);padding:.5rem 1rem;font-size:.9em}.Loda_Settings .Tab .ico-btn{display:none}.Loda_Settings .setting-wrapper{padding:.3rem 1rem 1.2rem;border-bottom:1px solid rgba(0,0,0,.3)}.Loda_Settings .setting-wrapper:last-child{border-bottom:none}.Loda_Settings .setting-header{padding:0;min-height:2.5rem;padding-top:.5rem;color:var(--textCol)}.Loda_Settings .t-row{margin:0 0 .7rem}.Loda_Settings .ico-btn{font-size:17.8px}.compact.setting-wrapper{padding:.5rem 1rem;display:flex}.Loda_Settings .setting-header{padding-top:0}.compact .UI.SettingDisplay{align-items:center;align-content:center;display:flex;flex-grow:1;justify-content:flex-end}.SettingUnit.compact .ToggleButton>*{display:none}.SettingUnit.compact .ToggleButton:before{content:"";display:inline-block;font-family:Guya;font-size:1.7em;line-height:0;margin-right:-.2em}.SettingUnit.compact .ToggleButton:last-child:before{content:""}.SettingUnit.compact .t-1{flex-grow:0;margin-left:1rem}.SettingUnit.compact .ButtonGroup{margin-bottom:0}.IndexSearch:empty:before{content:"Type your query and press Enter to search the entire manga contents.";width:100%;display:flex;padding:1rem 4rem;text-align:center;opacity:.5;box-sizing:border-box}.ChapterUnit{display:flex;flex-grow:1;justify-content:flex-start;align-items:stretch;margin-bottom:.8rem;border-radius:3px;overflow:hidden;border:1px solid transparent;cursor:pointer}.ChapterUnit:last-child{margin-bottom:0}.ChapterUnit:hover{border:1px solid #393939;background:#0000004d}.ChapterUnit figure{flex-grow:0;max-width:3rem;min-width:3rem;margin-right:.2rem;background-size:cover;background-position:center center}.ChapterUnit content{display:flex;flex-direction:column;font-size:1rem;padding:.8em}.ChapterUnit h2{font-size:1.2em;padding-bottom:.5em}.ChapterUnit blockquote:before{color:#ffffff1a;font-size:.8rem}.ChapterUnit .pages div{display:inline-block;border:1px solid rgba(255,255,255,.2);padding:.1em .2em;min-width:1em;text-align:center;border-radius:2px;font-family:monospace;margin-right:.4rem}.ChapterUnit .pages div:hover{background:#ffffff80;color:#000}.ChapterUnit i{color:var(--accentCol);text-decoration:none;font-style:normal}.Loadable{position:relative}.Loadable:after{content:"Loading...";position:absolute;top:50%;left:50%;transform:translate(-50%) translateY(-50%);display:flex;width:10rem;max-width:100%;height:5rem;background-position:left center;background-repeat:no-repeat;background-size:contain;display:none}.Loadable.loading:after{min-height:6rem;display:flex;background-image:url(data:image/png;base64,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);animation:weewoo 1s infinite}@keyframes weewoo{0%{transform:translate(-50%),translateY(-50%) scale(1) rotate(0)}20%{transform:translate(-50%) translateY(-50%) scale(1.2) rotate(10deg)}50%{transform:translate(-50%) translateY(-50%) scale(1) rotate(0)}75%{transform:translate(-50%) translateY(-50%) scale(1.2) rotate(-10deg)}to{transform:translate(-50%) translateY(-50%) scale(1) rotate(0)}}.search-tabs{display:flex;width:100%;justify-content:stretch;align-items:center;margin-top:.5rem}.search-tabs .Tab{flex-grow:1;display:flex;align-items:center;justify-content:center;padding:.5rem 0;font-size:.8em;cursor:default;border-bottom:1px solid transparent}.search-tabs .Tab:hover{border-bottom:1px solid rgba(255,255,255,.2)}.search-tabs .Tab.is-active{border-bottom:1px solid var(--accentCol, .8)}.search-tabs .Tab i{font-style:normal;font-weight:400;display:inline-block;padding:.1em .3em;border:1px solid gray;border-radius:3px;font-size:.8em;margin-left:1em;text-align:center;min-width:2ch}.search-tabs .Tab i:empty{display:none}.rdr-aside-overlay{position:absolute;top:0;bottom:0;width:100%;background:#000000b3;z-index:100;display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;padding:1rem;box-sizing:border-box;cursor:pointer}.card-arrow-up{width:0;height:0;border-style:solid;border-width:0 .6em .6em .6em;border-color:transparent transparent #3a3f40 transparent}.rdr-aside-overlay:before{content:"×";font-family:Open Sans;font-size:1.5em;height:2em;width:1.7em;font-weight:700;text-shadow:0px 1px 2px rgba(0,0,0,.4);display:flex;justify-content:center;align-items:center;cursor:pointer;align-self:flex-start}.rdr-aside-view{cursor:default;padding:.5rem 1rem;background:var(--sidebarCol);border-radius:3px;position:relative;box-shadow:0 4px 7px 3px #0006}.zoom-level.refresh-chapter{will-change:transform;flex-direction:row;display:flex;bottom:10px;top:unset;right:20px;left:unset;opacity:1}.zoom-level.refresh-chapter .ico-btn{border-radius:4px;background:#c83200b3}.refresh-chapter-note{background:#000c;margin-right:6px;padding:.5em .7em;font-size:1rem;color:#fff;opacity:0;border-radius:4px;transition:opacity .2s ease}.zoom-level.refresh-chapter:hover .refresh-chapter-note{opacity:1}.rdr-aside-view .header{text-align:left;padding:.5em 0;font-size:.6em;text-transform:uppercase;font-weight:700}.rdr-aside-view .ToggleButton{flex-grow:1;text-align:center}.t-row{display:flex;justify-content:flex-end;flex-wrap:nowrap;width:100%;margin:.7rem 0}.t-row>div{display:flex;align-items:stretch}.t-0{flex-grow:0}.t-1{flex-grow:1}.t-tooltip{display:flex;flex-basis:5em;font-size:12px;align-items:center!important;padding-right:.4em}.ToggleButton{display:inline-block;padding:.5em 1.4em .5em 1em;line-height:1;font-size:.59em;line-height:1.2;cursor:default;-webkit-user-select:none;user-select:none;text-align:center;display:flex;justify-content:center;align-items:center;background:var(--blackLight);min-height:1.1rem;flex-grow:1;border-left:1px solid var(--borderColor);border-top:1px solid var(--borderColor);margin-top:-1px;margin-left:-1px}.ToggleButton.s{background:var(--accentCol);color:var(--accentSelected)}.ToggleButton.s .ico-btn{color:var(--accentSelected)}.ButtonGroup .t-1{flex-wrap:wrap;max-width:99.499%;border:1px solid var(--borderColor);border-radius:3px;overflow:hidden}.ButtonGroup.b4 .ToggleButton{flex-basis:30%}.ButtonGroup .Button .ico-btn{padding:0 .4em 0 0;height:auto;width:auto;pointer-events:none;transition:none}.s .ico-btn{color:#333}.selectorAnchor-bottom .rdr-page-selector{min-width:unset;margin-right:unset;position:fixed;will-change:transform;width:100vw;height:1px;min-height:3rem;bottom:0;background:linear-gradient(0deg,var(--blackFlag) 10%,rgba(0,0,0,0) 100%);top:unset!important}.selectorAnchor-bottom .rdr-page-selector:hover .rdr-page-selector-keys,.selectorAnchor-bottom .rdr-page-selector.vis .rdr-page-selector-keys,.selectorAnchor-bottom.selPinned-true .rdr-page-selector-keys{left:unset;bottom:3px}.selectorAnchor-bottom .rdr-page-selector-counter{position:absolute;width:100%;height:2.2rem;bottom:-3px;font-size:.7rem;display:flex;justify-content:center;align-items:flex-start;color:#fff;text-shadow:1px 1px 1px black,-1px -1px 1px black,1px -1px 1px black,-1px 1px 1px black,1px 1px 6px black;transition:all .3s ease}.selectorAnchor-bottom.selPinned-true.selNum-false .rdr-page-selector-counter{opacity:0}.selNum-false .rdr-page-selector-counter{display:none!important}.selectorAnchor-bottom .rdr-page-selector:hover .rdr-page-selector-counter,.selectorAnchor-bottom .rdr-page-selector.vis .rdr-page-selector-counter,.selectorAnchor-bottom.selPinned-true .rdr-page-selector-counter{bottom:0}.selectorAnchor-bottom .rdr-page-selector-keys{height:unset;width:100%;height:100%;flex-direction:row;left:unset;bottom:0}.selectorAnchor-bottom .rdr-page-selector-keys div{margin-right:1px;margin-bottom:unset;border-left:none;border-bottom:1.5px solid #555;text-align:center;font-size:3vw;min-width:0px;align-items:flex-start;justify-content:center;padding-left:0;font-size:0;padding-bottom:1em}.selectorAnchor-bottom .rdr-page-selector-keys div:before{content:"";display:block;position:absolute;vertical-align:middle;margin-right:1.4ch;height:3px;width:100%;left:0;bottom:-4px}.selectorAnchor-bottom .rdr-page-selector-keys div:after{content:"";display:block;height:100%;width:102%;position:absolute}.selectorAnchor-bottom .rdr-page-selector-keys div:hover{border-left:none;border-bottom:1px solid lightgray;box-shadow:0 -100px 20px -100px #fffc inset,0 -100px 20px -100px #00000080 inset;left:0;bottom:2px}.selectorAnchor-bottom .rdr-page-selector-keys div.shown{border-left:none;border-bottom:3.5px solid var(--accentCol);box-shadow:0 -100px 20px -80px var(--rdrAncBottomWhite) inset}.selectorAnchor-bottom .rdr-page-selector-keys div.shown:hover{bottom:0!important}.selectorAnchor-bottom .rdr-page-selector .preloaded{border-bottom-color:var(--accentCol)}@media(min-width:699px){.sidebar-false main>aside{margin-left:-16em}.rdr-aside-buffer{display:none}.selectorAnchor-left.sidebar-false .rdr-page-selector{height:calc(100vh - 3rem);height:calc(100dvh - 3rem);top:3rem}.sidebar-false .hide-side{right:-3rem;z-index:20;transform:scaleX(-1)}.sidebar-false .hide-side div:hover:before{filter:brightness(110%)}.fit-width.zoom-10 .ReaderImageWrapper img{max-width:10%;min-height:0}.fit-width_limit.zoom-10 .ReaderImageWrapper img{max-width:10%}.fit-width.zoom-20 .ReaderImageWrapper img{max-width:20%;min-height:0}.fit-width_limit.zoom-20 .ReaderImageWrapper img{max-width:20%}.fit-width.zoom-30 .ReaderImageWrapper img{max-width:30%;min-height:0}.fit-width_limit.zoom-30 .ReaderImageWrapper img{max-width:30%}.fit-width.zoom-40 .ReaderImageWrapper img{max-width:40%;min-height:0}.fit-width_limit.zoom-40 .ReaderImageWrapper img{max-width:40%}.fit-width.zoom-50 .ReaderImageWrapper img{max-width:50%;min-height:0}.fit-width_limit.zoom-50 .ReaderImageWrapper img{max-width:50%}.fit-width.zoom-60 .ReaderImageWrapper img{max-width:60%;min-height:0}.fit-width_limit.zoom-60 .ReaderImageWrapper img{max-width:60%}.fit-width.zoom-70 .ReaderImageWrapper img{max-width:70%;min-height:0}.fit-width_limit.zoom-70 .ReaderImageWrapper img{max-width:70%}.fit-width.zoom-80 .ReaderImageWrapper img{max-width:80%;min-height:0}.fit-width_limit.zoom-80 .ReaderImageWrapper img{max-width:80%}.fit-width.zoom-90 .ReaderImageWrapper img{max-width:90%;min-height:0}.fit-width_limit.zoom-90 .ReaderImageWrapper img{max-width:90%}.fit-width.zoom-10 .two-page.ReaderImageWrapper img{max-width:25%!important;min-height:0}.fit-width_limit.zoom-10 .two-page.ReaderImageWrapper img{max-width:25%!important}.fit-width.zoom-20 .two-page.ReaderImageWrapper img{max-width:25%!important;min-height:0}.fit-width_limit.zoom-20 .two-page.ReaderImageWrapper img{max-width:25%!important}.fit-width.zoom-30 .two-page.ReaderImageWrapper img{max-width:25%!important;min-height:0}.fit-width_limit.zoom-30 .two-page.ReaderImageWrapper img{max-width:25%!important}.fit-width.zoom-40 .two-page.ReaderImageWrapper img{max-width:25%!important;min-height:0}.fit-width_limit.zoom-40 .two-page.ReaderImageWrapper img{max-width:25%!important}.fit-width.zoom-50 .two-page.ReaderImageWrapper img{max-width:25%!important;min-height:0}.fit-width_limit.zoom-50 .two-page.ReaderImageWrapper img{max-width:25%!important}.fit-width.zoom-60 .two-page.ReaderImageWrapper img{max-width:30%!important;min-height:0}.fit-width_limit.zoom-60 .two-page.ReaderImageWrapper img{max-width:30%!important}.fit-width.zoom-70 .two-page.ReaderImageWrapper img{max-width:35%!important;min-height:0}.fit-width_limit.zoom-70 .two-page.ReaderImageWrapper img{max-width:35%!important}.fit-width.zoom-80 .two-page.ReaderImageWrapper img{max-width:40%!important;min-height:0}.fit-width_limit.zoom-80 .two-page.ReaderImageWrapper img{max-width:40%!important}.fit-width.zoom-90 .two-page.ReaderImageWrapper img{max-width:45%!important;min-height:0}.fit-width_limit.zoom-90 .two-page.ReaderImageWrapper img{max-width:45%!important}}@media(max-width:700px){main{flex-direction:column;height:auto;max-height:unset;max-height:auto;overflow:auto}main>aside{min-width:100%;height:auto;position:relative;flex-shrink:0;transition:none}main>aside>header{overflow-y:auto;max-height:3rem}.rdr-aside-overlay{position:fixed;justify-content:flex-start;will-change:transform}.rdr-aside-overlay:before{align-self:flex-end}.rdr-previews{display:none}.rdr-page-selector{min-width:unset;margin-right:unset;position:fixed;will-change:transform;width:100vw;height:1px;min-height:3rem;bottom:0;background:linear-gradient(0deg,#000 10%,#0000);top:unset!important}.rdr-page-selector:hover .rdr-page-selector-keys,.rdr-page-selector.vis .rdr-page-selector-keys,.selPinned-true .rdr-page-selector-keys{left:unset;bottom:3px}.rdr-page-selector-counter{position:absolute;width:100%;height:2.2rem;bottom:-3px;font-size:.7rem;display:flex;justify-content:center;align-items:flex-start;color:#fff;text-shadow:1px 1px 1px black,-1px -1px 1px black,1px -1px 1px black,-1px 1px 1px black,1px 1px 6px black;transition:all .3s ease}.selPinned-true.selNum-false .rdr-page-selector-counter{opacity:0}.rdr-page-selector:hover .rdr-page-selector-counter,.rdr-page-selector.vis .rdr-page-selector-counter,.selPinned-true .rdr-page-selector-counter{bottom:0}.rdr-page-selector-keys{height:unset;width:100%;height:100%;flex-direction:row;left:unset;bottom:0}.rdr-page-selector-keys div{margin-right:1px;margin-bottom:unset;border-left:none;border-bottom:1px solid #555;text-align:center;font-size:3vw;min-width:0px;align-items:flex-start;justify-content:center;padding-left:0;font-size:0;padding-bottom:1em}.rdr-page-selector-keys div:before{content:"";display:block;position:absolute;vertical-align:middle;margin-right:1.4ch;height:3px;width:100%;left:0;bottom:-4px}.rdr-page-selector-keys div:after{content:"";display:block;height:100%;width:102%;position:absolute}.rdr-page-selector-keys div:hover{border-left:none;border-bottom:1px solid lightgray;box-shadow:0 -100px 20px -100px #ffffff80 inset,0 -100px 20px -100px #000 inset;left:0;bottom:2px}.rdr-page-selector-keys div.shown{border-left:none;border-bottom:1px solid white;box-shadow:0 -100px 20px -100px #fff inset}.rdr-page-selector-keys div.shown:hover{bottom:0!important}.rdr-page-selector .preloaded{border-bottom-color:var(--accentCol)}.rdr-groups{margin-top:0rem}.rdr-selector{padding-bottom:.5rem}.rdr-aside-buffer{transition:none}.selPinned-true.direction-ttb .stick header{width:100%;position:fixed;will-change:transform;z-index:100;background:var(--sidebarCol);top:0}.selPinned-true.direction-ttb .stick .rdr-selector{width:100%;position:fixed;will-change:transform;z-index:100;background:var(--sidebarCol)}.rdr-image-wrap{height:auto;max-height:100vh;max-height:100dvh;min-height:100vh;min-height:100dvh}.direction-ttb .rdr-image-wrap{max-height:unset;overflow-y:hidden}.direction-ttb.fit-all_limit .ReaderImageWrapper img,.direction-ttb.fit-all .ReaderImageWrapper img{height:unset}.hide-side{display:none!important}.fit-width div.zoom-level{display:none}.fit-width .ReaderImageWrapper img{flex-grow:1}.Tooltippy{position:fixed;will-change:transform;top:30vh;bottom:unset!important;font-size:.9rem;text-align:center;max-width:80vw;border:1px solid rgba(255,255,255,.1);border-radius:3px}.Tooltippy .Tooltippy-key{display:none}.Loda{min-width:96vw!important;max-width:96vw!important}.refresh-chapter{position:fixed;bottom:unset;top:0;right:.5rem;padding:0;align-items:flex-start;z-index:200}.refresh-chapter .ico-btn{font-size:.8em;height:2em;width:2em;border-top-left-radius:0;border-top-right-radius:0}main>.zoom-level{display:none!important}.Loda_Settings{width:100%;margin:0 1rem;height:57vh;flex-direction:column-reverse}.Loda_Settings aside{display:flex;width:auto;padding:0;flex-shrink:1;flex-grow:0}.Loda_Settings aside header{display:none}.Loda_Settings content{font-size:110%;max-width:100%;flex-grow:1;overflow:auto}.Loda_Settings content>div{padding-bottom:.5rem}.Loda_Settings .close{position:static;order:100;margin-left:auto}.Loda_Settings .settings-tabs{display:flex}.Loda_Settings .IconTab{padding:0!important;display:flex;justify-content:center;align-items:center;font-size:16px}.IconTab>span{display:none}.IconTab .ico-btn{display:flex!important}.IconTab[data-name=Reader] .ico-btn:before{content:""}.IconTab[data-name=Behavior] .ico-btn:before{content:""}.IconTab[data-name=Layout] .ico-btn:before{content:""}.IconTab[data-name=Themes] .ico-btn:before{content:""}.IconTab[data-name=Advanced] .ico-btn:before{content:""}.IconTab[data-name=About] .ico-btn:before{content:""}.nomobile{display:none!important}.Loda_Settings{align-self:flex-end;order:100;margin-bottom:5vh}}.preload-entity{opacity:.0000000000001;z-index:-1;position:absolute;width:100vw;height:100vw;overflow:hidden;top:0;left:0;pointer-events:none}.preload-entity img{height:100%;position:absolute;right:0;display:inline-block}.disabled{opacity:.2;pointer-events:none}.nextCha{opacity:.5;color:#fff;min-height:5rem;display:flex;min-width:80%;max-width:80%;margin:0 auto;justify-content:center;align-items:center;margin-top:2rem;margin-bottom:4rem;border:2px dashed rgba(255,255,255,.4);box-sizing:border-box}.nextCha:hover{opacity:.7;background:#ffffff1a}.nextCha:before{content:"Next chapter"}.nextCha:after{content:"⮠";font-family:Guya;margin-left:1em;border:1px solid gray;border-radius:3px;padding:.1rem .4rem;position:relative;top:1px}.last-chapter .nextCha{display:none}input[type=range]{-webkit-appearance:none;width:100%;height:2rem;background:none;border-radius:4px;margin:0;position:relative;z-index:1}input[type=range]:focus{outline:none}input[type=range]::-webkit-slider-runnable-track{width:100%;background:var(--blackLight);border-radius:1.3px;border:.2px solid var(--borderColor);height:.2rem}input[type=range]::-webkit-slider-thumb{border:1px solid var(--borderColor);height:1.4rem;width:.6rem;margin-top:-.65rem;border-radius:3px;cursor:pointer;background:var(--accentCol);-webkit-appearance:none}input[type=range]::-moz-range-track{width:100%;background:var(--blackLight);border-radius:1.3px;border:.2px solid var(--borderColor)}input[type=range]::-moz-range-thumb{border:1px solid var(--borderColor);height:1.4rem;width:.6rem;border-radius:3px;cursor:pointer;background:var(--accentCol)}input[type=range]::-ms-track{width:100%;height:8.4px;cursor:pointer;animate:.2s;background:transparent;border-color:transparent;border-width:16px 0;color:transparent}input[type=range]::-ms-track{width:100%;height:.3rem;cursor:pointer;background:transparent;border-color:transparent;border-width:1px 0;color:transparent}input[type=range]::-ms-fill-lower{background:var(--blackLight);border:.2px solid var(--borderColor);border-radius:2.6px}input[type=range]::-ms-fill-upper{background:#0003;border:.2px solid #010101;border-radius:2.6px}input[type=range]::-ms-thumb{border:1px solid var(--borderColor);height:1.4rem;width:.5rem;border-radius:3px;background:var(--accentCol);cursor:pointer}.Slider input[type=text]::-webkit-inner-spin-button,.Slider input[type=text]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.Slider input[type=text]{-moz-appearance:textfield;border-radius:3px;display:inline-block;line-height:1;font-size:.7em;line-height:1.2;border:1px solid var(--borderColor);background:#0000001a;min-height:1.1rem;min-width:0px;max-width:10rem;color:var(--textCol);padding:0 .5em;text-align:center;height:1.8rem;margin-left:.5rem}.Slider{display:flex}.Slider .slider-wrap{flex-grow:1}.Slider .ticks{display:flex;justify-content:space-between;padding:0 .4rem 0 .3rem}.Slider .ticks i{width:0;display:inline-flex;justify-content:center;flex-grow:0;flex-shrink:1;font-style:normal;color:var(--textCol);font-size:.6rem;position:relative;margin:0 2ch;opacity:.7}.Slider .ticks i:last-child{margin-right:0}.Slider .ticks i:first-child{margin-left:0}.Slider .ticks i:before{content:"";display:block;height:.9rem;margin-top:-1.75rem;position:absolute;border-right:1px solid var(--borderColor);z-index:0}.Slider .slider-value{flex-basis:6ch}.hidden,.is-hidden{display:none!important}.About{display:flex;flex-direction:column;align-items:center;font-size:.8em}.About>*{margin-left:auto;margin-right:auto}.About img{height:3.3rem;padding:2rem 0 1rem}.muted{opacity:.5;font-size:.8em}.About hr{border:none;border-bottom:1px solid rgba(0,0,0,.3);width:100%}.About p{padding:.2rem;font-size:.9em}.About a{color:var(--accentCol);text-decoration:none;padding:.3em}.cubari{height:1em;width:100%;margin-top:.5rem;position:relative;font-size:6rem}.cubari:after{content:"";background:url(data:image/webp;base64,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);height:1em;width:1em;background-size:contain;background-position:center;background-repeat:no-repeat;display:block;position:absolute;top:0;display:inline-block;margin:auto;left:50%;transform:translate(-50%)}.cubari>div{height:1em;width:1em;background-size:contain;background-position:50% 50%;background-repeat:no-repeat;position:relative;margin:auto}.ReaderNotice{display:flex;-webkit-user-select:none;user-select:none;object-fit:contain;min-width:100%;min-height:100%;height:100%;flex-direction:column;justify-content:center;align-items:center;padding:1rem;text-align:center;box-sizing:border-box}.ReaderNotice h2{font-size:1.5em;margin-bottom:1rem}.ReaderNotice p{color:#999}.ReaderNotice .timer{border-top:1px solid rgba(255,255,255,.3);margin-top:.5rem;padding-top:.5rem;margin-bottom:.6rem;text-align:center}.ReaderNotice .timer:after{content:unset;display:block;text-align:center;font-size:.7rem;color:#999;margin-top:.4em}.ReaderNotice a{color:var(--accentCol);text-decoration:none;font-size:.9em;margin-top:.8em;display:inline-block;border:1px solid var(--borderColor);border-radius:4px;padding:.4em 1em}.ReaderNotice a:hover{background:var(--accentCol);color:var(--accentSelected)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.ColorPicker{display:block;width:2em;height:2em;outline:none!important;border:1px solid rgba(0,0,0,.3);border-radius:4px;color:transparent;box-shadow:0 0 0 1px inset #fff6;cursor:pointer;-webkit-user-select:none;user-select:none}body,button,button:before{text-shadow:var(--rescueShade)}.ResetButton{margin-top:1em;font-size:12px;text-align:center;text-transform:uppercase;letter-spacing:.07em;font-family:Open Sans;text-shadow:var(--rescueShade);border:1px solid var(--borderColor);border-radius:2px;overflow:hidden;box-shadow:0 2px 3px -1px #0000004d;color:var(--textCol);background-color:var(--sidebarColDark);padding:.4rem 1.6rem}.pcr-app[data-theme=nano] .pcr-selection .pcr-color-chooser{grid-area:2/1/2 / span 2!important}.pcr-app[data-theme=nano] .pcr-swatches{display:none!important}.pcr-app{background:#33383d}.pcr-app .pcr-interaction .pcr-save{background:#b2dffb}.pcr-app .pcr-interaction .pcr-cancel,.pcr-app .pcr-interaction .pcr-clear,.pcr-app .pcr-interaction .pcr-save{color:#000;font-family:Open Sans}.pcr-app .pcr-interaction input{letter-spacing:unset;font-size:.8rem;border-radius:unset;padding:unset;margin-top:unset;padding:.45em 1.1em}.pcr-app .pcr-interaction>*{margin:unset}.pcr-app .pcr-interaction{margin:unset;align-items:stretch;overflow:hidden;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.pcr-app[data-theme=nano] .pcr-interaction{padding:unset;height:2.1rem;margin-bottom:-5px}.pcr-app .pcr-interaction .pcr-result{border-radius:unset;background:#292d31;color:#eee;outline:none!important;box-shadow:none!important}.pcr-app[data-theme=nano] .pcr-selection .pcr-color-palette .pcr-palette{border-radius:unset;border-top-left-radius:4px;border-top-right-radius:4px}.pcr-app[data-theme=nano] .pcr-selection .pcr-color-chooser,.pcr-app[data-theme=nano] .pcr-selection .pcr-color-opacity{margin:.2em .8em}.dropbtn{background-color:var(--blackLight);color:var(--textCol);height:2.2em;min-width:165px;font-family:Open Sans;display:flex;justify-content:space-between;align-items:center;padding:0 11px;border:1px solid var(--borderColor);border-radius:4px;cursor:initial;outline:none!important}.input-container{display:flex}.arrd{height:4px;width:4px}.arrd:after{position:relative;left:-25px;bottom:-2px;font-family:Guya;font-size:20px;content:""}.dropdown{position:relative;display:inline-block}.dropdown-content{margin-top:.5em;position:absolute;background-color:var(--sidebarCol);min-width:190px;overflow-x:hidden;overflow-y:auto;box-shadow:0 8px 16px #0003;border-radius:4px;z-index:1}.dropdown-content button{color:var(--textCol);padding:0 11px;min-width:190px;height:35px;display:flex;font-size:.8em;align-items:center;text-decoration:none}.dropdown-content button:not(:last-child){border-bottom:1px solid var(--sidebarColDark)}.dropdown:hover .dropbtn,.dropdown-content button:hover{background-color:var(--sidebarColDark)}.dropdown:hover .dropdown-content{display:block}.dd-s{background-color:var(--sidebarColDark)}.Loda_Notice,.Loda_Webtoon{max-width:15em}.Loda_Notice content,.Loda_Webtoon content{font-size:.8em;padding:1em;text-align:center;line-height:1.5}.Loda_Notice content~button,.Loda_Webtoon .buttons button{display:inline-block;margin:auto auto 1em;border:1px solid var(--textCol);color:var(--textCol);padding:.5em 2em;border-radius:4px}.Loda_Notice content~button:before,.Loda_Webtoon button.yes:before{content:"";display:inline-block;font-family:Guya;font-size:1.7em}.Loda_Webtoon .buttons{text-align:center;padding-bottom:1rem}.Loda_Webtoon .buttons button{margin:0 1em}.Loda_Webtoon .buttons button.no:before{content:"";display:inline-block;font-family:Guya;font-size:1.7em}.chapter-list-overlay,.mode-picker-backdrop{position:fixed;inset:0;z-index:2147483647}.chapter-list-overlay{display:flex;align-items:stretch;justify-content:center;background:linear-gradient(180deg,#000000e0,#0d0d0df5),var(--readerBg)}.chapter-list-panel{display:flex;width:min(960px,100vw);height:100vh;height:100dvh;flex-direction:column;background:linear-gradient(180deg,rgba(255,255,255,.03),transparent 18%),var(--sidebarCol);box-shadow:0 18px 48px #00000059}.chapter-list-header{display:flex;min-height:4.5rem;align-items:center;gap:1rem;padding:1rem 1.5rem;border-bottom:1px solid rgba(255,255,255,.08)}.chapter-list-header h1{margin:0;flex:1;font-size:1.15rem;font-weight:600}.chapter-list-close{display:inline-flex;width:2.5rem;height:2.5rem;align-items:center;justify-content:center;border-radius:999px;color:var(--icoCol);background:#ffffff0f;transition:background .2s ease,color .2s ease,transform .2s ease}.chapter-list-close:hover,.chapter-list-close:focus-visible{color:var(--accentSelected);background:#ffffff24;transform:translateY(-1px)}.chapter-list-items{display:flex;flex:1;flex-direction:column;overflow-y:auto}.chapter-list-row{display:flex;width:100%;flex-direction:column;gap:.35rem;padding:1rem 1.5rem;border-bottom:1px solid rgba(255,255,255,.06);color:var(--textCol);transition:background .2s ease,color .2s ease}.chapter-list-row:hover,.chapter-list-row:focus-visible{color:var(--accentSelected);background:#ffffff14}.chapter-list-name{font-size:1rem;font-weight:600}.chapter-list-meta{font-size:.78rem;color:#ffffffb3}.chapter-list-status{padding:.9rem 1.5rem 1.2rem;font-size:.82rem;color:#ffffffb3}`;
      const comicStyles = '.ico-btn{font-family:coobaree,guya!important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-ri:before{content:">";font-size:1.6em}.icon-help:before{content:"?"}.icon-close:before{content:"×";font-size:1.5em}.icon-pin:before{content:""}.icon-pin-x:before{content:""}.icon-close:before{content:""}html *{box-sizing:border-box;font-family:Open Sans,sans-serif}a{color:#e25656;text-decoration:none!important}html{width:100%;height:100%}body{width:100%;min-height:100%;background:#050505;position:relative;color:#fff;padding:0}p{line-height:1.5}code{font-family:monospace;font-size:1.2em;margin:0 .2em}.home body{background:#1c1c1c;height:100%}.body-wrapper{width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}.home-background,.home header .cubari-logo{display:none}.home .home-background{display:block;position:absolute;inset:0;overflow:hidden;z-index:-1}.home .home-background:before{content:"";width:300vh;height:300vh;display:block;position:absolute;top:50%;left:50%;transform-origin:50% 50%;transform:translate(-50%) translateY(-50%) rotate(14deg);box-shadow:0 0 140vh 100vh #000 inset;pointer-events:none;z-index:-1;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAYAAACO98lFAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFEGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIxLTAzLTI1VDIyOjAzKzAzOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMS0wMy0yNVQyMjowMzo0NiswMzowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMS0wMy0yNVQyMjowMzo0NiswMzowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5NTdmNzY3NC1iODNkLTc2NDUt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)}.home #main{display:flex;flex-direction:column;align-items:center;height:100%}.home .donate{visibility:visible}header{flex-grow:0;width:100%;display:flex;justify-content:space-between;align-items:center}header>*{width:33%}header .donate{margin-left:2rem}header .cubari-logo{color:#fff;opacity:.5;font-size:3rem}header .cubari-logo:hover{opacity:1}#main>section{flex-grow:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;max-width:650px;width:100%;padding:0 1.5rem}#main .header-wrapper{display:flex;flex-direction:column;justify-content:center;align-items:center}#main .header-wrapper h1{margin-top:0;margin-right:-.7em;margin-bottom:.1rem;-webkit-user-select:none;user-select:none;font-size:3.5rem;font-weight:100;letter-spacing:.7em;text-align:center}#main .header-wrapper h2{font-weight:400;font-size:.8rem;letter-spacing:.5px;color:#888;margin-bottom:2rem;-webkit-user-select:none;user-select:none;text-align:center}.search-focus .header-wrapper{opacity:0}.search-focus .donate,.search-focus footer{opacity:0;pointer-events:none}.search-wrapper{height:50vh;margin-bottom:1.4rem;width:100%}.ico-btn{width:2.8rem;height:2.8rem;border:none;background:none;padding:0;text-align:center;color:#e25656;font-family:coobaree;display:inline-block;margin:0;line-height:2.88rem;outline:none!important}#search{border-radius:4px;border:none;height:2.8rem;line-height:2.8rem;padding:0 .8rem;width:100%;outline:none}#search+.ico-btn{margin-left:-2.8rem;cursor:pointer}#search+.ico-btn:hover:before{color:#822828}#status{text-align:center;padding-top:1.5rem;font-style:italic;line-height:1.5;font-size:.9em;opacity:.8}#status.red{color:#ff9393}.search-box{white-space:nowrap;display:flex;position:relative}.search-box .cubari-logo{font-size:30rem;position:absolute;transform:rotate(0);z-index:-1;opacity:.03;height:0;width:0;text-align:center;display:flex;justify-content:center;align-items:center;top:50%;left:50%;margin-right:-100%;margin-bottom:-100%;transition:transform .6s ease}.search-box.spin .cubari-logo{transform:rotate(0);transition:none;animation:10s linear infinite spin}.rhombutton{border:1px solid rgba(255,255,255,.4);border-radius:2px;margin:2rem;transform:rotate(45deg);height:2.5rem;width:2.5rem;display:inline-flex;justify-content:center;align-items:center;background:#000;font-family:Open Sans,coobaree,guya}.rhombutton:before{transform:rotate(-45deg)}.rhombutton:hover,a:hover,a:hover span{color:#fff;border-color:#fff}.home footer{flex-grow:0;width:100%;height:5rem;margin-top:-5rem;position:relative}footer{display:flex;justify-content:space-between;padding:0 2rem;align-items:flex-start}footer a{display:inline-block;max-height:100%}.donate span{font-size:1.8em;position:relative;top:.09em;vertical-align:baseline;line-height:0}footer .guya img{width:7rem}#layers{position:fixed;top:0;left:0;right:0;max-height:100%;overflow:auto;background:#00000080}#layers article{position:relative;width:100%;max-width:50rem;margin:0 auto;background:#1c1c1cfb;padding:1rem 3rem;min-height:100vh;z-index:2}#layers article .icon-close{position:fixed;cursor:pointer;top:0;right:0;z-index:1000}article p{line-height:1.5}article h2{margin-top:2em}*{transition:opacity .25s ease}.hidden{display:none!important}.series-content{background-color:#1a1a1a;background-attachment:fixed;background-position:50% 10%;background-size:1500px;border-radius:5px;padding:0;max-width:95%;margin:0 auto;width:60rem;margin-bottom:5rem}.series-content .sidecard{background-color:#1a1a1a;background-attachment:fixed;background-position:50% 10%;background-size:1500px}.series-content .side-cover .media{border-top-left-radius:3px;overflow:hidden;border-top-right-radius:3px}.series-content article{padding:1em;display:flex}.series-content article aside{flex-grow:0;display:flex;flex-direction:column;align-items:center}.series-content article .series-content-body{min-width:7em;overflow:hidden}.series-content article .series-content-body .manga-link.chapter{margin-top:1rem;display:none}.series-content article h1{color:#fff;font-size:2em;margin-bottom:.5em;margin-top:0;display:inline;margin-right:.5em}.series-content article h2{font-size:.9em;color:#aaa;font-weight:400}.series-content article p{font-size:1em;margin-bottom:0;margin-top:.5em;font-size:.9em;color:#ccc}.series-content article p:nth-of-type(1){margin-top:1.5em}.series-content article picture{width:11em;margin-right:1.4em;border-radius:4px;overflow:hidden;margin-bottom:.5em;max-height:19em}.series-content .card{border-top-left-radius:0;border-top-right-radius:0;border:none}.series-content .card-body{padding:.7em;border-top-left-radius:0;border-top-right-radius:0}.series-content .table{color:#ddd}.series-content #chapters th{white-space:nowrap;padding:0 .75em;line-height:3em;font-weight:400;font-size:1em;border-bottom:0;border-top:0}.series-content #chapters th:first-child{padding-left:1.2rem}.series-content #chapters th:last-child{text-align:right;padding-right:1.5rem}.series-content #chapters td{border-bottom:0;border-top:1px solid #444;box-shadow:none!important;outline:none!important}.series-content #chapters td:first-child{padding-left:1.2rem}.series-content #chapters td:last-child{text-align:right;padding-right:1.5rem}.series-content #chapters a{text-decoration:none}.series-content .chapter-title a{color:#fff}.series-content .chapter-title a:hover{color:#e25656}.series-content .read-icon{text-align:center;cursor:pointer;position:relative}.series-content td.read-icon:hover{color:#eee}.series-content .read-icon:before{font-family:guya;content:""}.series-content th.read-icon.confirm:after{content:attr(data-tooltip);position:absolute;padding:.4em .6em;color:#fff;margin-left:8px;margin-top:4px;line-height:1.5em;white-space:pre-wrap;text-align:left;width:34ch;background:#141414f2;border-radius:2px;box-shadow:2px 2px 3px #000000b3,0 2px 10px #000000e6;z-index:3000;pointer-events:none;border:1px solid rgba(255,255,255,.1)}.is-read{opacity:.6}.is-read .read-icon:before,.series-content .all-read:before{content:""}.series-content .btn-group{display:flex;height:3em;width:100%}.series-content .btn-group .btn{outline:none!important;border:none!important;border-radius:0!important;box-shadow:none!important;padding:0;border-bottom:1px solid transparent!important}.series-content .btn-group .btn.s{border-bottom:1px solid #bbb!important;box-shadow:0 -34px 20px -40px #bbb inset!important;color:#fff}.series-content .btn-group .btn:not(.s):hover{box-shadow:0 -35px 20px -40px #666 inset!important;border-bottom:1px solid #666!important}.series-content .btn-group a{display:flex;justify-content:center;align-items:center;padding:0 1em;text-decoration:none}.series-content .btn-group a i{font-size:1.5em}.series-content #chapterTitleSearch{border:none!important;background:#0003!important;border-radius:0!important;line-height:inherit;height:3em;color:#fff;padding-left:1em}.series-content #chapterTitleSearch::placeholder{color:#fff;opacity:.6}.series-content .card table{margin-bottom:0}.series-content .detailed-chapter-upload-date{text-align:right;width:0;white-space:nowrap;padding-right:1.5rem}#compactView .card{background:none;padding:0}#compactView .card-title{color:#fff;padding:0 0 1em 1em;border-bottom:1px solid #555}#compactView .card .chapter-number{font-size:1.3em}#compactView .card .compact-chapter-upload-date,#compactView .card .chapter-group{color:#aaa!important}#compactView .card .row{margin:0!important}#compactView .card .col-3{padding:0!important}#compactView .card .col-3 a{text-decoration:none!important;padding:1em;display:block}#compactView .card .col-3 a:hover{background:#ffffff1a}#volumeCoversView{display:flex;flex-wrap:wrap}#volumeCoversView a{display:block;flex-grow:1;flex-shrink:1;min-width:14em;flex-basis:0;padding:1em;max-width:16em}#volumeCoversView a img{height:100%;width:100%}.img-fluid{max-width:100%;height:auto}aside .table{font-size:.8em}aside .table td,aside .table th{padding:.5em}.table{width:100%;color:#aaa;border-collapse:collapse}.table thead th{vertical-align:bottom;text-align:left}.table th,.table td{padding:.75rem;vertical-align:top;text-align:left}.table-responsive{overflow:auto}.manga-link{display:inline-block;padding:.6em 1em;border:1px solid rgba(255,255,255,.2);border-radius:.2em;text-align:center;position:relative;font-size:.8em;margin:0 1rem 0 0;-webkit-user-select:none;user-select:none;cursor:pointer}.manga-link.external{margin:1em 0 0;padding:.5em 1em;top:-.3em}.manga-link.chapter{font-size:.9rem;border-color:#f00c;background-color:#c608082e;padding:0;cursor:pointer;margin-left:0;outline:none!important;white-space:nowrap}.manga-link.chapter>span{border-color:#f00c;padding:.6em 1em;display:inline-block;color:#ddd}.manga-link.chapter .manga-link-chap{border-right:1px solid #f00c;padding:.6em .5em}.manga-link.chapter .manga-link-text{background:#0006}.manga-link.chapter.no-chapter .manga-link-chap{display:none}.manga-card{display:block;border-radius:5px;background:#141414;box-shadow:0 2px 10px #00000080;overflow:hidden;margin:0rem 0 1rem;color:#eee;background-size:cover;background-repeat:no-repeat;position:relative;font-size:1em;flex-grow:1;transform:translateZ(0)}.manga-card{min-height:9em}.manga-card picture img{height:9em}.manga-card:before{content:"";display:block;position:absolute;inset:4em;outline:2px solid rgba(0,0,0,1);background:#000;box-shadow:0 0 4em 6em #000;z-index:0;opacity:.95;background-clip:padding-box}.manga-card>*{z-index:2;position:relative}.manga-card>a.picture,.manga-card>picture{display:inline-block;float:left;margin-right:2em;z-index:4}.manga-card picture:after{content:"";position:absolute;inset:0;box-shadow:3em 3em 3em -3em #0a0a0ab3 inset}.manga-card article{padding:1em 2em 1em 1em;flex-direction:column}.manga-card article h1{font-size:2em;line-height:1.5;display:inline;margin-right:auto}.manga-card article>a:hover h1{text-decoration:underline}.manga-card article h2{font-size:.9em;color:#aaa;font-weight:400;line-height:1.5;margin-top:.5em}.manga-card article p{margin:.4em 0 0;color:#ddd;font-size:.9em}.manga-card.proxy picture img{max-width:6.5rem;min-width:6.5rem;object-fit:cover}.manga-card.smol{margin:.75rem .5rem;transition:top .3s ease;background-position:50% 30%;text-decoration:none;position:relative;top:0;outline:none;display:flex}.manga-card.smol .bloor{position:absolute;inset:-10px;background:#0f0f0f;filter:blur(20px);opacity:.3;box-shadow:none!important}.manga-card.smol:hover .bloor{opacity:.2}.manga-card.smol:hover picture{opacity:.7}.manga-card.smol h2{font-size:1.3em;color:#fff;line-height:1.5;margin-top:0}.manga-card.smol h3{font-size:1em}.manga-card.smol p{color:#ccc}.manga-card.smol picture{margin-right:1em;float:none}.manga-card.smol article{padding-top:.5em;padding-right:1em;flex-grow:1}.manga-card.smol .button-drawer{display:flex;flex-direction:column;justify-content:center;width:0;overflow:hidden}.manga-card.smol:hover .button-drawer{width:auto;min-width:3.8rem}@media(max-width:768px){.manga-card.smol .button-drawer{width:auto;min-width:3rem}}.manga-card.smol .button-drawer>i{flex-grow:1;display:flex;flex-direction:column;justify-content:center;font-size:1.4em;width:100%}.manga-card.smol .button-drawer>i:hover{background:#0003;color:#fff}.manga-card.full{flex-basis:100%;flex-shrink:1;max-width:100%}.history-scroller{overflow:hidden;padding-bottom:1em;position:relative;text-shadow:0px 0px 2px black,0px 0px 2px black,0px 0px 2px black,0px 0px 2px black,0px 0px 2px black,0px 0px 2px black;letter-spacing:3px;padding-left:3px;font-size:.9em;cursor:pointer;-webkit-user-select:none;user-select:none}.history-scroller:before{content:"";display:block;position:absolute;width:.8rem;height:.8rem;border-right:1px solid white;border-bottom:1px solid white;transform:translate(-50%) rotate(45deg);transform-origin:50% 50%;left:50%;z-index:-1;margin-top:1em}#history{padding:1rem;box-shadow:0 39px 10px -40px #000 inset;margin:0 auto}#history .history-button{margin:2rem 0 0;font-size:1.3em}#history .HistoryView .history-header{justify-content:space-between}#history .HistoryView .history-header .manga-link{font-size:.5em;margin:0;font-weight:400}#history .HistoryView>h2{padding:0 .75rem;font-weight:400;font-size:1.9em}#history .HistoryView .pinned-header,#history .HistoryView .pinned,#history .HistoryView .history-header,#history .HistoryView .history{display:none}#history .HistoryView.has-pinned .pinned-header,#history .HistoryView.has-history .history-header{align-items:center;display:flex;max-width:150rem;margin:2rem auto .2rem}#history .HistoryView.has-history .history,#history .HistoryView.has-pinned .pinned{display:flex;flex-wrap:wrap;justify-content:center}#history .HistoryView .List>div{flex-grow:1;flex-basis:33%;flex-shrink:0;min-width:32em;max-width:50em}#history .pinned .button-drawer .icon-close{display:none}#history .HistoryView .List:before,#history .HistoryView .List:after{content:"";box-sizing:border-box;box-shadow:0 1px 8px 1px #0006 inset;display:inline-block;flex-grow:1;flex-basis:33%;flex-shrink:0;min-width:32em;border:0px solid transparent;border-width:.75rem .5rem .75rem .5rem;border-radius:1rem;max-width:50em}#history .HistoryView .List[data-things="2"]:before{display:none}#history .HistoryView .List[data-things="3"]:before,#history .HistoryView .List[data-things="3"]:after{display:none}@media(max-width:80em){#history .HistoryView .List:after{display:none}}@media(max-width:120em){#history .HistoryView .List:before{display:none}}.history-desc,.history-sync{max-width:650px;margin:0 auto}.history-desc{padding-top:3rem}#history #rs-widget{display:flex;justify-content:center;margin:2rem 0}#history .rs-widget{box-sizing:content-box;padding:.7rem 0rem .5rem;border:1px solid rgba(255,255,255,.2);border-radius:4px}#history #rs-main-logo-remotestorage{margin:0 .8rem}#history .rs-widget-icon{text-align:center}@media(max-width:768px){.series-content h1{font-size:1.8em}.series-content picture{max-width:5rem}.series-content article aside .manga-link{display:none}.series-content article .series-content-body .manga-link.chapter{display:inline-block}aside .table *{display:block}aside .table td{padding-top:0;padding-bottom:1em}#history .HistoryView .List:before,#history .HistoryView .List:after,#history .HistoryView .List>div{font-size:.8em;min-width:30em}#main .header-wrapper h1{letter-spacing:.6em;margin-right:-.6em}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}';
      const defaultSeriesImg = "data:image/png;base64,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";
      const logo = "data:image/webp;base64,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";
      function formatUpdatedAt(updatedAt) {
        if (updatedAt <= 0) {
          return "Unknown date";
        }
        return new Date(updatedAt).toLocaleString();
      }
      const ChapterList = reactExports.memo(function ChapterList2({
        chapters,
        folderDetails,
        onClose,
        onSelectChapter,
        statusMessage,
        title
      }) {
        const [search, setSearch] = reactExports.useState("");
        const seriesTitle = folderDetails?.title || title || "Unknown Series";
        const { filteredChapters, isLoading } = reactExports.useMemo(() => {
          const normalizedSearch = search.toLowerCase();
          return {
            filteredChapters: chapters.map((chapter, index) => ({ chapter, index })).filter(
              ({ chapter }) => chapter.name.toLowerCase().includes(normalizedSearch)
            ),
            isLoading: statusMessage.includes("Loading")
          };
        }, [chapters, search, statusMessage]);
        const handleClose = reactExports.useCallback(
          (event) => {
            event.preventDefault();
            onClose();
          },
          [onClose]
        );
        const handlePreventDefault = reactExports.useCallback(
          (event) => {
            event.preventDefault();
          },
          []
        );
        const handleSearchChange = reactExports.useCallback(
          (event) => {
            setSearch(event.target.value);
          },
          []
        );
        const handleReadLatest = reactExports.useCallback(
          (event) => {
            event.preventDefault();
            if (chapters.length === 0) {
              return;
            }
            const latestChapterIndex = chapters.length - 1;
            const latestChapter = chapters[latestChapterIndex];
            if (!latestChapter) {
              return;
            }
            onSelectChapter(latestChapter.id, latestChapterIndex);
          },
          [chapters, onSelectChapter]
        );
        const handleChapterClick = reactExports.useCallback(
          (event) => {
            event.preventDefault();
            const { chapterId, chapterIndex } = event.currentTarget.dataset;
            if (!chapterId || !chapterIndex) {
              return;
            }
            const parsedIndex = Number.parseInt(chapterIndex, 10);
            if (Number.isNaN(parsedIndex)) {
              return;
            }
            onSelectChapter(chapterId, parsedIndex);
          },
          [onSelectChapter]
        );
        return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
jsxRuntimeExports.jsx("style", { children: comicStyles }),
jsxRuntimeExports.jsxs("div", { className: "body-wrapper", children: [
jsxRuntimeExports.jsx("div", { className: "home-background" }),
jsxRuntimeExports.jsxs("header", { children: [
jsxRuntimeExports.jsxs(
                "a",
                {
                  className: "donate",
                  href: "https://github.com/zennomi/truyendrive",
                  target: "_blank",
                  rel: "noreferrer",
                  children: [
jsxRuntimeExports.jsx("span", { children: "‹" }),
                    "  github  ",
jsxRuntimeExports.jsx("span", { children: "›" })
                  ]
                }
              ),
jsxRuntimeExports.jsx("a", { href: "#", className: "cubari-logo", onClick: handlePreventDefault, children: jsxRuntimeExports.jsx(
                "img",
                {
                  style: {
                    height: "60px",
                    width: "60px"
                  },
                  src: logo,
                  alt: "TruyenDrive"
                }
              ) }),
jsxRuntimeExports.jsx("a", { className: "rhombutton icon-close", onClick: handleClose })
            ] }),
jsxRuntimeExports.jsxs("div", { className: "series-content", children: [
jsxRuntimeExports.jsxs("article", { children: [
jsxRuntimeExports.jsxs("aside", { children: [
jsxRuntimeExports.jsx("picture", { children: jsxRuntimeExports.jsx(
                    "img",
                    {
                      src: folderDetails?.thumbnailUrl || defaultSeriesImg,
                      className: "img-fluid",
                      alt: `${seriesTitle} cover`
                    }
                  ) }),
jsxRuntimeExports.jsxs(
                    "a",
                    {
                      href: "#",
                      className: "manga-link chapter no-chapter",
                      onClick: handleReadLatest,
                      children: [
jsxRuntimeExports.jsx("span", { className: "manga-link-chap" }),
jsxRuntimeExports.jsx("span", { className: "manga-link-text", children: "Read latest chapter ›" })
                      ]
                    }
                  )
                ] }),
jsxRuntimeExports.jsxs("section", { className: "series-content-body", children: [
jsxRuntimeExports.jsx("h1", { children: seriesTitle }),
jsxRuntimeExports.jsx("table", { className: "table table-borderless table-sm small", children: jsxRuntimeExports.jsx("tbody", { children: jsxRuntimeExports.jsxs("tr", { children: [
jsxRuntimeExports.jsx("th", { children: "Uploader" }),
jsxRuntimeExports.jsx("td", { className: "text-sm", children: folderDetails?.ownerEmail ?? "Unknown" })
                  ] }) }) }),
jsxRuntimeExports.jsxs(
                    "a",
                    {
                      href: "#",
                      className: "manga-link chapter no-chapter",
                      onClick: handleReadLatest,
                      children: [
jsxRuntimeExports.jsx("span", { className: "manga-link-chap" }),
jsxRuntimeExports.jsx("span", { className: "manga-link-text", children: "Read latest chapter ›" })
                      ]
                    }
                  )
                ] })
              ] }),
jsxRuntimeExports.jsx("div", { id: "detailedView", className: "table-responsive", children: jsxRuntimeExports.jsxs("table", { id: "chapters", className: "table table-hover", children: [
jsxRuntimeExports.jsx("thead", { children: jsxRuntimeExports.jsxs("tr", { children: [
jsxRuntimeExports.jsx("th", { scope: "col", className: "read-icon all-read" }),
jsxRuntimeExports.jsxs("th", { scope: "col", children: [
                    "Title    ",
jsxRuntimeExports.jsx(
                      "input",
                      {
                        className: "form-control-sm",
                        id: "chapterTitleSearch",
                        type: "text",
                        placeholder: "⌕  Search",
                        value: search,
                        onChange: handleSearchChange
                      }
                    )
                  ] }),
jsxRuntimeExports.jsx("th", { scope: "col", children: "Uploader" }),
jsxRuntimeExports.jsx("th", { scope: "col", children: "Last Updated" })
                ] }) }),
jsxRuntimeExports.jsxs("tbody", { id: "chapterTable", children: [
                  isLoading && jsxRuntimeExports.jsx("tr", { children: jsxRuntimeExports.jsx(
                    "td",
                    {
                      colSpan: 4,
                      style: { textAlign: "center", padding: "2rem" },
                      children: statusMessage
                    }
                  ) }),
                  filteredChapters.map(({ chapter, index }) => jsxRuntimeExports.jsxs(
                    "tr",
                    {
                      className: "table-default is-read",
                      "data-chapter": chapter.name,
                      children: [
jsxRuntimeExports.jsx("td", { scope: "row", className: "read-icon" }),
jsxRuntimeExports.jsx("td", { scope: "row", className: "chapter-title", children: jsxRuntimeExports.jsx(
                          "a",
                          {
                            "data-chapter-id": chapter.id,
                            "data-chapter-index": String(index),
                            href: "#",
                            onClick: handleChapterClick,
                            children: chapter.name
                          }
                        ) }),
jsxRuntimeExports.jsx("td", { scope: "row", children: chapter.creator || "Unknown Group" }),
jsxRuntimeExports.jsx("td", { scope: "row", className: "detailed-chapter-upload-date", children: formatUpdatedAt(chapter.updatedAt) })
                      ]
                    },
                    chapter.id
                  ))
                ] })
              ] }) })
            ] })
          ] })
        ] });
      });
      const ModePickerDialog = reactExports.memo(function ModePickerDialog2({
        onSelectMode
      }) {
        const handleSelectChapters = reactExports.useCallback(() => {
          onSelectMode("chapters");
        }, [onSelectMode]);
        const handleSelectImages = reactExports.useCallback(() => {
          onSelectMode("images");
        }, [onSelectMode]);
        return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
jsxRuntimeExports.jsx("style", { children: comicStyles }),
jsxRuntimeExports.jsx(
            "div",
            {
              id: "layers",
              "aria-label": "Choose comic mode",
              role: "dialog",
              style: {
                display: "flex",
                alignItems: "center",
                justifyContent: "center",
                bottom: 0,
                zIndex: 99999
              },
              children: jsxRuntimeExports.jsxs(
                "article",
                {
                  style: {
                    minHeight: "auto",
                    padding: "2rem 3rem",
                    borderRadius: "4px",
                    maxWidth: "45rem"
                  },
                  children: [
jsxRuntimeExports.jsx(
                      "h2",
                      {
                        style: {
                          marginTop: 0,
                          marginBottom: "1rem",
                          color: "white",
                          fontSize: "1.5rem"
                        },
                        children: "How should this folder open?"
                      }
                    ),
jsxRuntimeExports.jsx("p", { style: { color: "#ccc", fontSize: "0.9rem" }, children: "This folder contains a mix of items, so Comic Mode needs a hint before it can continue." }),
jsxRuntimeExports.jsxs(
                      "div",
                      {
                        style: {
                          display: "flex",
                          gap: "1rem",
                          marginTop: "2rem",
                          flexWrap: "wrap"
                        },
                        children: [
jsxRuntimeExports.jsxs(
                            "button",
                            {
                              className: "manga-link chapter",
                              onClick: handleSelectChapters,
                              type: "button",
                              children: [
jsxRuntimeExports.jsx("span", { className: "manga-link-chap", children: "Chapter List" }),
jsxRuntimeExports.jsx("span", { className: "manga-link-text", children: "Browse sub-folders" })
                              ]
                            }
                          ),
jsxRuntimeExports.jsxs(
                            "button",
                            {
                              className: "manga-link chapter",
                              onClick: handleSelectImages,
                              type: "button",
                              children: [
jsxRuntimeExports.jsx("span", { className: "manga-link-chap", children: "Direct Images" }),
jsxRuntimeExports.jsx("span", { className: "manga-link-text", children: "Open flat image list" })
                              ]
                            }
                          )
                        ]
                      }
                    )
                  ]
                }
              )
            }
          )
        ] });
      });
      const READER_HISTORY_HASH = "truyendrive-page";
      const READER_STATE_HASH_PREFIX = "truyendrive-chap";
      const READER_PAGE_SEARCH_PARAM = "truyendrive-page";
      const READER_CHAPTER_SEARCH_PARAM = "truyendrive-chap";
      function buildPageGroups(images, spread, direction) {
        const groupSize = spread === "1" ? 1 : 2;
        const oddOffset = spread === "2-odd" ? 1 : 0;
        const groups = [];
        let startIndex = 0;
        if (oddOffset === 1 && images.length > 0) {
          groups.push({
            id: "group-0",
            pages: [
              {
                index: 0,
                ...images[0]
              }
            ]
          });
          startIndex = 1;
        }
        for (let index = startIndex; index < images.length; index += groupSize) {
          const pages = images.slice(index, index + groupSize).map((image, offset) => ({
            index: index + offset,
            ...image
          }));
          groups.push({
            id: `group-${index}`,
            pages
          });
        }
        return direction === "rtl" ? [...groups].reverse() : groups;
      }
      function getRootClasses(settings) {
        return [
          `direction-${settings.lyt.direction}`,
          `fit-${settings.lyt.fit}`,
          `gap-${settings.lyt.gap}`,
          `spread-${settings.lyt.spread}`,
          `selectorAnchor-${settings.apr.selectorAnchor}`,
          `selPinned-${settings.apr.selPinned}`,
          `selNum-${settings.apr.selNum}`,
          `hoverinos-${settings.apr.hoverinos}`,
          `sidebar-${settings.apr.sidebar}`,
          `previews-${settings.apr.previews}`,
          `zoom-${settings.lyt.zoom}`,
          "loaded"
        ].join(" ");
      }
      function pageLabel(group) {
        if (group.pages.length === 1) {
          return `${group.pages[0].index + 1}`;
        }
        return `${group.pages[0].index + 1}-${group.pages[group.pages.length - 1].index + 1}`;
      }
      function getDisplayGroupIndex(logicalIndex, groupCount, direction) {
        if (direction !== "rtl") {
          return logicalIndex;
        }
        return groupCount - 1 - logicalIndex;
      }
      function getLogicalGroupIndex(displayIndex, groupCount, direction) {
        if (direction !== "rtl") {
          return displayIndex;
        }
        return groupCount - 1 - displayIndex;
      }
      function getChapterStartGroupIndex(groupCount, direction) {
        if (groupCount <= 0) {
          return 0;
        }
        return direction === "rtl" ? groupCount - 1 : 0;
      }
      function getMaxGroupDistance(distance, groupCount) {
        return distance === 100 ? groupCount : Math.max(distance, 1);
      }
      function getGroupsInRange(displayGroups, anchorGroupIndex, maxDistance, includeAnchor) {
        const groups = [];
        for (let distance = includeAnchor ? 0 : 1; distance <= maxDistance; distance += 1) {
          const nextGroup = displayGroups[anchorGroupIndex + distance];
          if (nextGroup) {
            groups.push(nextGroup);
          }
          if (distance === 0) {
            continue;
          }
          const previousGroup = displayGroups[anchorGroupIndex - distance];
          if (previousGroup) {
            groups.push(previousGroup);
          }
        }
        return groups;
      }
      function clampIndex(value, max) {
        return Math.max(0, Math.min(max, value));
      }
      function findGroupIndexForPage(groups, pageIndex) {
        return groups.findIndex(
          (group) => group.pages.some((page) => page.index === pageIndex)
        );
      }
      function buildPageTitle(title, pageIndex) {
        return `${title} • Page ${pageIndex + 1}`;
      }
      function buildReaderHistoryUrl(baseUrl, pageIndex) {
        const url = new URL(baseUrl);
        url.searchParams.delete(READER_CHAPTER_SEARCH_PARAM);
        url.searchParams.set(READER_PAGE_SEARCH_PARAM, `${pageIndex + 1}`);
        url.hash = "";
        return url.toString();
      }
      function buildChapterStateUrl(baseUrl, chapterId, pageIndex) {
        const url = new URL(baseUrl);
        url.searchParams.set(READER_CHAPTER_SEARCH_PARAM, chapterId);
        url.searchParams.set(READER_PAGE_SEARCH_PARAM, `${pageIndex + 1}`);
        url.hash = "";
        return url.toString();
      }
      function parseReaderStateFromUrl(url) {
        let parsedUrl;
        try {
          parsedUrl = new URL(url);
        } catch {
          return { chapterId: null, page: -1 };
        }
        const searchPage = parsedUrl.searchParams.get(READER_PAGE_SEARCH_PARAM);
        if (searchPage) {
          const parsedPage = Number.parseInt(searchPage, 10);
          return {
            chapterId: parsedUrl.searchParams.get(READER_CHAPTER_SEARCH_PARAM),
            page: Number.isNaN(parsedPage) ? -1 : Math.max(parsedPage - 1, 0)
          };
        }
        const hash = parsedUrl.hash.slice(1);
        const pageOnlyMatch = hash.match(
          new RegExp(`^${READER_HISTORY_HASH}-(\\d+)$`)
        );
        if (pageOnlyMatch) {
          return {
            chapterId: null,
            page: Math.max(Number.parseInt(pageOnlyMatch[1], 10) - 1, 0)
          };
        }
        const chapterMatch = hash.match(
          new RegExp(`^${READER_STATE_HASH_PREFIX}-(.+)-page-(\\d+)$`)
        );
        if (!chapterMatch) {
          return { chapterId: null, page: -1 };
        }
        try {
          return {
            chapterId: decodeURIComponent(chapterMatch[1]),
            page: Math.max(Number.parseInt(chapterMatch[2], 10) - 1, 0)
          };
        } catch {
          return { chapterId: chapterMatch[1], page: 0 };
        }
      }
      function clearReaderStateUrl(url) {
        const nextUrl = new URL(url);
        nextUrl.searchParams.delete(READER_CHAPTER_SEARCH_PARAM);
        nextUrl.searchParams.delete(READER_PAGE_SEARCH_PARAM);
        nextUrl.hash = "";
        return nextUrl.toString();
      }
      function isReaderHistoryState(value) {
        return typeof value === "object" && value !== null && "truyendriveReader" in value && "page" in value && value.truyendriveReader === true && typeof value.page === "number";
      }
      const PageSelector = reactExports.memo(function PageSelector2({
        activeGroupIndex,
        activePageNumber,
        displayGroups,
        direction,
        isGroupLoaded,
        isSelectorVisible,
        pageCount,
        scrollToGroup
      }) {
        const orderedGroups = direction === "rtl" ? [...displayGroups].reverse() : displayGroups;
        const getGroupIndex = reactExports.useCallback((value) => {
          if (!value) {
            return -1;
          }
          const parsedIndex = Number.parseInt(value, 10);
          return Number.isNaN(parsedIndex) ? -1 : parsedIndex;
        }, []);
        const handleGroupClick = reactExports.useCallback(
          (event) => {
            const groupIndex = getGroupIndex(event.currentTarget.dataset.groupIndex);
            if (groupIndex !== -1) {
              scrollToGroup(groupIndex);
            }
          },
          [getGroupIndex, scrollToGroup]
        );
        const handleGroupKeyDown = reactExports.useCallback(
          (event) => {
            if (event.key !== "Enter" && event.key !== " ") {
              return;
            }
            event.preventDefault();
            const groupIndex = getGroupIndex(event.currentTarget.dataset.groupIndex);
            if (groupIndex !== -1) {
              scrollToGroup(groupIndex);
            }
          },
          [getGroupIndex, scrollToGroup]
        );
        return jsxRuntimeExports.jsxs("div", { className: `rdr-page-selector${isSelectorVisible ? " vis" : ""}`, children: [
jsxRuntimeExports.jsxs("div", { className: "rdr-page-selector-counter", children: [
            activePageNumber,
            " / ",
            pageCount
          ] }),
jsxRuntimeExports.jsx("div", { className: "rdr-page-selector-keys", children: orderedGroups.map((group, logicalIndex) => {
            const displayIndex = getDisplayGroupIndex(
              logicalIndex,
              displayGroups.length,
              direction
            );
            return jsxRuntimeExports.jsx(
              "div",
              {
                className: [
                  displayIndex === activeGroupIndex ? "shown" : "",
                  isGroupLoaded(displayIndex) ? "preloaded" : ""
                ].filter(Boolean).join(" "),
                "data-group-index": String(displayIndex),
                onClick: handleGroupClick,
                onKeyDown: handleGroupKeyDown,
                role: "button",
                tabIndex: 0,
                children: pageLabel(group)
              },
              group.id
            );
          }) })
        ] });
      });
      const ScanlineIllustration = () => {
        return jsxRuntimeExports.jsxs(
          "svg",
          {
            className: "illustration-scanline",
            viewBox: "0 0 160 80",
            xmlns: "http://www.w3.org/2000/svg",
            children: [
jsxRuntimeExports.jsxs("defs", { children: [
jsxRuntimeExports.jsxs("linearGradient", { id: "scanlineBgGrad", x1: "0%", y1: "0%", x2: "0%", y2: "100%", children: [
jsxRuntimeExports.jsx("stop", { offset: "0%", stopColor: "#0d0e12" }),
jsxRuntimeExports.jsx("stop", { offset: "100%", stopColor: "#15171f" })
                ] }),
jsxRuntimeExports.jsxs("linearGradient", { id: "panelGrad", x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
jsxRuntimeExports.jsx("stop", { offset: "0%", stopColor: "#ff0055", stopOpacity: "0.15" }),
jsxRuntimeExports.jsx("stop", { offset: "100%", stopColor: "#00ffff", stopOpacity: "0.15" })
                ] })
              ] }),
jsxRuntimeExports.jsx("rect", { width: "100%", height: "100%", fill: "url(#scanlineBgGrad)" }),
jsxRuntimeExports.jsxs("g", { stroke: "rgba(255, 255, 255, 0.03)", strokeWidth: "0.5", children: [
jsxRuntimeExports.jsx("line", { x1: "20", y1: "0", x2: "20", y2: "80" }),
jsxRuntimeExports.jsx("line", { x1: "40", y1: "0", x2: "40", y2: "80" }),
jsxRuntimeExports.jsx("line", { x1: "60", y1: "0", x2: "60", y2: "80" }),
jsxRuntimeExports.jsx("line", { x1: "80", y1: "0", x2: "80", y2: "80" }),
jsxRuntimeExports.jsx("line", { x1: "100", y1: "0", x2: "100", y2: "80" }),
jsxRuntimeExports.jsx("line", { x1: "120", y1: "0", x2: "120", y2: "80" }),
jsxRuntimeExports.jsx("line", { x1: "140", y1: "0", x2: "140", y2: "80" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "20", x2: "160", y2: "20" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "40", x2: "160", y2: "40" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "60", x2: "160", y2: "60" })
              ] }),
jsxRuntimeExports.jsxs("g", { className: "comic-panels-base", children: [
jsxRuntimeExports.jsx("rect", { x: "15", y: "12", width: "60", height: "56", fill: "url(#panelGrad)", stroke: "rgba(255, 255, 255, 0.2)", strokeWidth: "1", rx: "2" }),
jsxRuntimeExports.jsx("rect", { x: "85", y: "12", width: "60", height: "56", fill: "url(#panelGrad)", stroke: "rgba(255, 255, 255, 0.2)", strokeWidth: "1", rx: "2" }),
jsxRuntimeExports.jsxs("g", { className: "scramble-slices", children: [
jsxRuntimeExports.jsx("rect", { x: "-8", y: "16", width: "180", height: "4", fill: "#00ffff", opacity: "0.6", className: "scramble-slice-1" }),
jsxRuntimeExports.jsx("rect", { x: "-4", y: "16", width: "170", height: "4", fill: "#ffffff", opacity: "0.3", className: "scramble-slice-1" }),
jsxRuntimeExports.jsx("rect", { x: "12", y: "24", width: "140", height: "6", fill: "#ff0055", opacity: "0.6", className: "scramble-slice-2" }),
jsxRuntimeExports.jsx("rect", { x: "8", y: "24", width: "145", height: "6", fill: "#ffffff", opacity: "0.25", className: "scramble-slice-2" }),
jsxRuntimeExports.jsx("rect", { x: "-12", y: "34", width: "180", height: "5", fill: "#00ffff", opacity: "0.5", className: "scramble-slice-3" }),
jsxRuntimeExports.jsx("rect", { x: "-7", y: "34", width: "170", height: "5", fill: "#ffffff", opacity: "0.3", className: "scramble-slice-3" }),
jsxRuntimeExports.jsx("rect", { x: "6", y: "44", width: "150", height: "8", fill: "#ff0055", opacity: "0.7", className: "scramble-slice-4" }),
jsxRuntimeExports.jsx("rect", { x: "10", y: "44", width: "140", height: "8", fill: "#ffffff", opacity: "0.2", className: "scramble-slice-4" }),
jsxRuntimeExports.jsx("rect", { x: "-6", y: "56", width: "175", height: "4", fill: "#00ffff", opacity: "0.6", className: "scramble-slice-5" }),
jsxRuntimeExports.jsx("rect", { x: "-2", y: "56", width: "165", height: "4", fill: "#ffffff", opacity: "0.35", className: "scramble-slice-5" })
                ] }),
jsxRuntimeExports.jsxs("g", { className: "center-symbol", transform: "translate(80, 40)", children: [
jsxRuntimeExports.jsx("circle", { r: "14", fill: "#ff0055", opacity: "0.15" }),
jsxRuntimeExports.jsx("circle", { r: "10", fill: "none", stroke: "#ff0055", strokeWidth: "1.5", opacity: "0.8" }),
jsxRuntimeExports.jsx("path", { d: "M -6 -3 L 6 -3 L 6 3 L -6 3 Z", fill: "#ffffff" }),
jsxRuntimeExports.jsx("path", { d: "M -3 -3 L -3 -7 C -3 -9, 3 -9, 3 -7 L 3 -3", fill: "none", stroke: "#ffffff", strokeWidth: "1.5" })
                ] })
              ] }),
jsxRuntimeExports.jsxs("g", { stroke: "#000000", strokeWidth: "0.5", opacity: "0.25", children: [
jsxRuntimeExports.jsx("line", { x1: "0", y1: "4", x2: "160", y2: "4" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "8", x2: "160", y2: "8" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "12", x2: "160", y2: "12" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "16", x2: "160", y2: "16" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "20", x2: "160", y2: "20" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "24", x2: "160", y2: "24" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "28", x2: "160", y2: "28" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "32", x2: "160", y2: "32" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "36", x2: "160", y2: "36" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "40", x2: "160", y2: "40" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "44", x2: "160", y2: "44" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "48", x2: "160", y2: "48" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "52", x2: "160", y2: "52" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "56", x2: "160", y2: "56" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "60", x2: "160", y2: "60" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "64", x2: "160", y2: "64" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "68", x2: "160", y2: "68" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "72", x2: "160", y2: "72" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "76", x2: "160", y2: "76" })
              ] })
            ]
          }
        );
      };
      const NoiseIllustration = () => {
        return jsxRuntimeExports.jsxs(
          "svg",
          {
            className: "illustration-noise",
            viewBox: "0 0 160 80",
            xmlns: "http://www.w3.org/2000/svg",
            children: [
jsxRuntimeExports.jsxs("defs", { children: [
jsxRuntimeExports.jsxs("radialGradient", { id: "noiseBgGrad", cx: "50%", cy: "50%", r: "70%", children: [
jsxRuntimeExports.jsx("stop", { offset: "0%", stopColor: "#2a164d" }),
jsxRuntimeExports.jsx("stop", { offset: "100%", stopColor: "#0a0514" })
                ] }),
jsxRuntimeExports.jsxs("filter", { id: "staticFilter", x: "0", y: "0", width: "160", height: "80", children: [
jsxRuntimeExports.jsx(
                    "feTurbulence",
                    {
                      type: "fractalNoise",
                      baseFrequency: "0.85",
                      numOctaves: "3",
                      result: "noise",
                      children: jsxRuntimeExports.jsx(
                        "animate",
                        {
                          attributeName: "seed",
                          from: "1",
                          to: "100",
                          dur: "0.8s",
                          repeatCount: "indefinite"
                        }
                      )
                    }
                  ),
jsxRuntimeExports.jsx(
                    "feColorMatrix",
                    {
                      type: "matrix",
                      values: "\n              1 0 0 0 0\n              0 1 0 0 0\n              0 0 1 0 0\n              0 0 0 0.5 0"
                    }
                  )
                ] })
              ] }),
jsxRuntimeExports.jsx("rect", { width: "100%", height: "100%", fill: "url(#noiseBgGrad)" }),
jsxRuntimeExports.jsx("rect", { width: "100%", height: "100%", filter: "url(#staticFilter)" }),
jsxRuntimeExports.jsxs("g", { stroke: "rgba(0, 0, 0, 0.15)", strokeWidth: "0.5", children: [
jsxRuntimeExports.jsx("line", { x1: "0", y1: "10", x2: "160", y2: "10" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "20", x2: "160", y2: "20" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "30", x2: "160", y2: "30" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "40", x2: "160", y2: "40" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "50", x2: "160", y2: "50" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "60", x2: "160", y2: "60" }),
jsxRuntimeExports.jsx("line", { x1: "0", y1: "70", x2: "160", y2: "70" })
              ] }),
jsxRuntimeExports.jsxs("g", { className: "center-symbol", transform: "translate(80, 40)", children: [
jsxRuntimeExports.jsx("circle", { r: "14", fill: "#00e5ff", opacity: "0.15" }),
jsxRuntimeExports.jsx("circle", { r: "10", fill: "none", stroke: "#00e5ff", strokeWidth: "1.5", opacity: "0.8" }),
jsxRuntimeExports.jsx("path", { d: "M -6 -3 L 6 -3 L 6 3 L -6 3 Z", fill: "#ffffff" }),
jsxRuntimeExports.jsx("path", { d: "M -3 -3 L -3 -7 C -3 -9, 3 -9, 3 -7 L 3 -3", fill: "none", stroke: "#ffffff", strokeWidth: "1.5" })
              ] })
            ]
          }
        );
      };
      const METHOD_OPTIONS = [
        {
          description: "Default scanline scramble",
          label: "Scanline",
          value: "scanline"
        },
        {
          description: "Legacy pixel noise",
          label: "Noise",
          value: "noise"
        }
      ];
      const PasswordDialog = reactExports.memo(function PasswordDialog2({
        currentMethod,
        currentPassword,
        onClose,
        onConfirm
      }) {
        const passwordInputId = reactExports.useId();
        const titleId = reactExports.useId();
        const inputRef = reactExports.useRef(null);
        const [password, setPassword] = reactExports.useState(currentPassword ?? "");
        const [method, setMethod] = reactExports.useState(currentMethod);
        reactExports.useEffect(() => {
          setPassword(currentPassword ?? "");
          setMethod(currentMethod);
        }, [currentMethod, currentPassword]);
        reactExports.useEffect(() => {
          inputRef.current?.focus();
          inputRef.current?.select();
        }, []);
        const submitPassword = (event) => {
          event?.preventDefault();
          const trimmedPassword = password.trim();
          onConfirm(trimmedPassword.length > 0 ? trimmedPassword : null, method);
        };
        const clearPassword = () => {
          onConfirm(null, method);
        };
        const handleKeyDown = (event) => {
          event.stopPropagation();
          if (event.key === "Escape") {
            event.preventDefault();
            onClose();
          }
        };
        return jsxRuntimeExports.jsx(
          "div",
          {
            className: "LodaManager",
            onMouseDown: (event) => {
              if (event.target === event.currentTarget) {
                onClose();
              }
            },
            children: jsxRuntimeExports.jsxs(
              "form",
              {
                "aria-labelledby": titleId,
                "aria-modal": "true",
                className: "Loda-window UI Loda Loda_Password",
                onKeyDown: handleKeyDown,
                onMouseDown: (event) => event.stopPropagation(),
                onSubmit: submitPassword,
                role: "dialog",
                tabIndex: -1,
                children: [
jsxRuntimeExports.jsx("button", { className: "ico-btn close", onClick: onClose, type: "button" }),
jsxRuntimeExports.jsx("header", { id: titleId, children: "Decryption Password" }),
jsxRuntimeExports.jsxs("div", { className: "password-dialog-content", children: [
jsxRuntimeExports.jsxs("label", { className: "password-field", htmlFor: passwordInputId, children: [
jsxRuntimeExports.jsx("span", { children: "Password" }),
jsxRuntimeExports.jsx(
                        "input",
                        {
                          autoComplete: "current-password",
                          id: passwordInputId,
                          onChange: (event) => setPassword(event.target.value),
                          ref: inputRef,
                          type: "password",
                          value: password
                        }
                      )
                    ] }),
jsxRuntimeExports.jsxs("fieldset", { className: "password-methods", children: [
jsxRuntimeExports.jsx("legend", { children: "Encryption method" }),
jsxRuntimeExports.jsx("div", { className: "password-method-grid", children: METHOD_OPTIONS.map((option) => jsxRuntimeExports.jsxs(
                        "label",
                        {
                          className: "password-method-card",
                          "data-selected": method === option.value,
                          children: [
jsxRuntimeExports.jsx(
                              "input",
                              {
                                checked: method === option.value,
                                name: "encryption-method",
                                onChange: () => setMethod(option.value),
                                type: "radio",
                                value: option.value
                              }
                            ),
jsxRuntimeExports.jsx("span", { className: `password-method-illustration ${option.value}`, children: option.value === "scanline" ? jsxRuntimeExports.jsx(ScanlineIllustration, {}) : jsxRuntimeExports.jsx(NoiseIllustration, {}) }),
jsxRuntimeExports.jsx("span", { className: "password-method-title", children: option.label }),
jsxRuntimeExports.jsx("span", { className: "password-method-description", children: option.description })
                          ]
                        },
                        option.value
                      )) })
                    ] }),
jsxRuntimeExports.jsxs("footer", { className: "password-actions", children: [
jsxRuntimeExports.jsx(
                        "button",
                        {
                          className: "ResetButton password-clear",
                          onClick: clearPassword,
                          type: "button",
                          children: "Clear"
                        }
                      ),
jsxRuntimeExports.jsx("span", {}),
jsxRuntimeExports.jsx("button", { className: "ResetButton", onClick: onClose, type: "button", children: "Cancel" }),
jsxRuntimeExports.jsx("button", { className: "ResetButton password-confirm", type: "submit", children: "Confirm" })
                    ] })
                  ] })
                ]
              }
            )
          }
        );
      });
      const SELECTOR_PROXIMITY_PX = 72;
      const ZOOM_PROXIMITY_PX = 140;
      function createIdlePointerGestureState() {
        return {
          active: false,
          dragged: false,
          initialScrollLeft: 0,
          pointerType: "",
          startX: 0,
          startY: 0,
          wrapper: null
        };
      }
      const ReaderArea = reactExports.memo(function ReaderArea2({
        decryptedSrcs,
        displayGroups,
        getImageUrl,
        groupRefs,
        hasNextChapter,
        hoverEdge,
        imageWrapRef,
        isGroupPreloaded,
        isMobile,
        isPasswordMode,
        isScrollReady,
        isTtb,
        navigateGroupOrChapter,
        onMobileTtbTap,
        onPageLoad,
        performVerticalPageTurnOrChapter,
        preloadImageRefs,
        setHoverEdge,
        setImageLoadVersion,
        settings,
        showPageSelector,
        showZoomControls,
        syncActiveGroupFromScroll,
        tooWideGroups,
        goToAdjacentChapter
      }) {
        const pointerGestureRef = reactExports.useRef(
          createIdlePointerGestureState()
        );
        const suppressClickRef = reactExports.useRef(false);
        const handleAreaClick = (event) => {
          if (isMobile && isTtb) {
            onMobileTtbTap();
            return;
          }
          if (suppressClickRef.current) {
            suppressClickRef.current = false;
            return;
          }
          if (!settings.bhv.clickTurnPage) {
            return;
          }
          const bounds = event.currentTarget.getBoundingClientRect();
          const ratio = (event.clientX - bounds.left) / bounds.width;
          if (settings.lyt.direction === "ttb") {
            const verticalRatio = (event.clientY - bounds.top) / bounds.height;
            if (verticalRatio < 0.35) {
              performVerticalPageTurnOrChapter(-1);
              return;
            }
            if (verticalRatio > 0.65) {
              performVerticalPageTurnOrChapter(1);
              return;
            }
            showPageSelector();
            return;
          }
          if (ratio < 0.35) {
            navigateGroupOrChapter(-1);
          } else if (ratio > 0.65) {
            navigateGroupOrChapter(1);
          } else {
            showPageSelector();
          }
        };
        const handleAreaMouseLeave = () => {
          setHoverEdge(null);
        };
        const handleAreaMouseMove = (event) => {
          const bounds = event.currentTarget.getBoundingClientRect();
          const offsetX = event.clientX - bounds.left;
          const offsetY = event.clientY - bounds.top;
          const isNearSelector = settings.apr.selectorAnchor === "bottom" ? offsetY >= bounds.height - SELECTOR_PROXIMITY_PX : offsetX <= SELECTOR_PROXIMITY_PX;
          if (isNearSelector) {
            showPageSelector();
          }
          const isNearZoomControls = offsetX >= bounds.width - ZOOM_PROXIMITY_PX && offsetY <= ZOOM_PROXIMITY_PX;
          if (isNearZoomControls) {
            showZoomControls();
          }
          if (!settings.apr.hoverinos || settings.lyt.direction === "ttb") {
            setHoverEdge(null);
            return;
          }
          const ratio = offsetX / bounds.width;
          if (ratio < 0.25) {
            setHoverEdge("prev");
          } else if (ratio > 0.75) {
            setHoverEdge("next");
          } else {
            setHoverEdge(null);
          }
        };
        const resetPointerGesture = () => {
          pointerGestureRef.current = createIdlePointerGestureState();
        };
        const handlePointerDown = (event) => {
          const wrapper = event.target instanceof Element ? event.target.closest(".ReaderImageWrapper") : null;
          pointerGestureRef.current = {
            active: true,
            dragged: false,
            initialScrollLeft: wrapper?.scrollLeft ?? 0,
            pointerType: event.pointerType,
            startX: event.clientX,
            startY: event.clientY,
            wrapper
          };
          suppressClickRef.current = false;
        };
        const handlePointerMove = (event) => {
          const gesture = pointerGestureRef.current;
          if (!gesture.active) {
            return;
          }
          const deltaX = event.clientX - gesture.startX;
          const deltaY = event.clientY - gesture.startY;
          if (Math.abs(deltaX) > 8 || Math.abs(deltaY) > 8) {
            gesture.dragged = true;
            suppressClickRef.current = true;
          }
          if (settings.lyt.direction === "ttb" || !settings.bhv.swipeGestures || !gesture.wrapper || Math.abs(deltaX) <= Math.abs(deltaY)) {
            return;
          }
          const maxScrollLeft = gesture.wrapper.scrollWidth - gesture.wrapper.clientWidth;
          if (maxScrollLeft <= 0) {
            return;
          }
          gesture.wrapper.scrollLeft = clampIndex(
            gesture.initialScrollLeft - deltaX,
            maxScrollLeft
          );
        };
        const handlePointerUp = (event) => {
          const gesture = pointerGestureRef.current;
          pointerGestureRef.current = createIdlePointerGestureState();
          if (settings.lyt.direction === "ttb" || !settings.bhv.swipeGestures || gesture.pointerType !== "touch" && gesture.pointerType !== "pen") {
            return;
          }
          const deltaX = event.clientX - gesture.startX;
          const deltaY = event.clientY - gesture.startY;
          const horizontalSwipe = Math.abs(deltaX) >= 60 && Math.abs(deltaX) > Math.abs(deltaY) * 1.2;
          if (!horizontalSwipe) {
            return;
          }
          const wrapper = gesture.wrapper;
          if (wrapper) {
            const maxScrollLeft = wrapper.scrollWidth - wrapper.clientWidth;
            if (maxScrollLeft > 0) {
              const atStart = wrapper.scrollLeft <= 1;
              const atEnd = maxScrollLeft - wrapper.scrollLeft <= 1;
              if (deltaX < 0 && !atEnd || deltaX > 0 && !atStart) {
                return;
              }
            }
          }
          if (deltaX < 0) {
            navigateGroupOrChapter(settings.lyt.direction === "rtl" ? -1 : 1);
            return;
          }
          navigateGroupOrChapter(settings.lyt.direction === "rtl" ? 1 : -1);
        };
        const handlePageImageLoad = (event) => {
          const pageId = event.currentTarget.dataset.pageId;
          if (!pageId) {
            return;
          }
          onPageLoad(pageId);
          setImageLoadVersion((version) => version + 1);
        };
        return jsxRuntimeExports.jsxs(
          "div",
          {
            className: "rdr-area",
            onClick: handleAreaClick,
            onMouseLeave: handleAreaMouseLeave,
            onMouseMove: handleAreaMouseMove,
            children: [
jsxRuntimeExports.jsx("div", { className: "preload-entity", children: Array.from({ length: 4 }).map((_, index) => jsxRuntimeExports.jsx(
                "img",
                {
                  ref: (element) => {
                    preloadImageRefs.current[index] = element;
                  }
                },
                index
              )) }),
jsxRuntimeExports.jsxs(
                "div",
                {
                  className: "rdr-image-wrap",
                  onPointerCancel: resetPointerGesture,
                  onPointerDown: handlePointerDown,
                  onPointerMove: handlePointerMove,
                  onPointerUp: handlePointerUp,
                  onScroll: isTtb ? void 0 : syncActiveGroupFromScroll,
                  ref: imageWrapRef,
                  style: { visibility: isScrollReady ? "visible" : "hidden" },
                  tabIndex: -1,
                  children: [
                    displayGroups.map((group, groupIndex) => jsxRuntimeExports.jsx(
                      "div",
                      {
                        className: `ReaderImageWrapper UI${group.pages.length > 1 ? " two-page" : ""}${tooWideGroups[group.id] ? " too-wide" : ""}`,
                        ref: (element) => {
                          groupRefs.current[groupIndex] = element;
                        },
                        children: group.pages.map((page) => {
                          const shouldDecryptPage = isPasswordMode && page.requiresDecryption !== false;
                          const decryptedSrc = isPasswordMode ? decryptedSrcs.get(page.id) : void 0;
                          const dimensionHints = page.width && page.height ? {
                            height: page.height,
                            style: {
                              aspectRatio: `${page.width} / ${page.height}`
                            },
                            width: page.width
                          } : void 0;
                          if (shouldDecryptPage && !decryptedSrc) {
                            return jsxRuntimeExports.jsx(
                              "img",
                              {
                                alt: `Page ${page.index + 1}`,
                                "data-page-id": page.id,
                                src: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
                                ...dimensionHints
                              },
                              page.id
                            );
                          }
                          return jsxRuntimeExports.jsx(
                            "img",
                            {
                              alt: `Page ${page.index + 1}`,
                              "data-page-id": page.id,
                              decoding: "async",
                              loading: isGroupPreloaded(groupIndex) ? "eager" : "lazy",
                              onLoad: handlePageImageLoad,
                              src: decryptedSrc ?? getImageUrl(page),
                              ...dimensionHints
                            },
                            page.id
                          );
                        })
                      },
                      group.id
                    )),
                    hasNextChapter && jsxRuntimeExports.jsx(
                      "div",
                      {
                        className: "UI Dummy nextCha",
                        onClick: (e) => {
                          e.stopPropagation();
                          goToAdjacentChapter(1);
                        }
                      }
                    )
                  ]
                }
              ),
jsxRuntimeExports.jsx(
                "div",
                {
                  className: `hover-prev${hoverEdge === "prev" ? " viz nodelay" : ""}`,
                  children: jsxRuntimeExports.jsxs("div", { className: "hover-wrap", children: [
jsxRuntimeExports.jsx("div", { className: "hover-arrow", children: "" }),
jsxRuntimeExports.jsx("div", { className: "hover-sub" })
                  ] })
                }
              ),
jsxRuntimeExports.jsx(
                "div",
                {
                  className: `hover-next${hoverEdge === "next" ? " viz nodelay" : ""}`,
                  children: jsxRuntimeExports.jsxs("div", { className: "hover-wrap", children: [
jsxRuntimeExports.jsx("div", { className: "hover-arrow", children: "" }),
jsxRuntimeExports.jsx("div", { className: "hover-sub" })
                  ] })
                }
              )
            ]
          }
        );
      });
      const FIT_OPTIONS = [
        "none",
        "all_limit",
        "width_limit",
        "height_limit",
        "all",
        "width",
        "height"
      ];
      const DIRECTION_OPTIONS = ["ttb", "ltr", "rtl"];
      const SPREAD_OPTIONS = ["1", "2", "2-odd"];
      const PRELOAD_OPTIONS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 100];
      const ZOOM_OPTIONS = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
      const SCROLL_SPEED_OPTIONS = [
        5,
        10,
        15,
        20,
        25,
        30,
        35,
        40,
        45,
        50
      ];
      const SELECTOR_ANCHOR_OPTIONS = ["left", "bottom"];
      const HISTORY_UPDATE_OPTIONS = [
        "none",
        "replace",
        "chap",
        "jump",
        "all"
      ];
      const THEME_OPTIONS = [
        "Cubari",
        "Classic",
        "Reaper",
        "Zaibatsu",
        "Light",
        "Custom"
      ];
      const THEME_PRESETS = {
        Cubari: {
          sidebar: "#28292B",
          reader: "#000000",
          accent: "#B73636",
          text: "#EEEEEE"
        },
        Classic: {
          sidebar: "#3A3F44",
          reader: "#272B30",
          accent: "#B2DFFB",
          text: "#EEEEEE"
        },
        Reaper: {
          sidebar: "#272836",
          reader: "#121223",
          accent: "#487DE4",
          text: "#EEEEEE"
        },
        Zaibatsu: {
          sidebar: "#1D1D1D",
          reader: "#000000",
          accent: "#BA1F1F",
          text: "#EEEEEE"
        },
        Light: {
          sidebar: "#F1F4FF",
          reader: "#FFFFFF",
          accent: "#5889F0",
          text: "#2B2B2B"
        }
      };
      const STORAGE_KEY = "truyendrive-reader-settings";
      const LEGACY_STORAGE_KEY = "settings";
      const STORAGE_VERSION = "truyendrive-reader-1";
      const CUSTOM_THEME_DEFAULT = {
        primaryCol: THEME_PRESETS.Cubari.sidebar,
        readerBg: THEME_PRESETS.Cubari.reader,
        accentCol: THEME_PRESETS.Cubari.accent,
        textCol: THEME_PRESETS.Cubari.text
      };
      const DEFAULT_SETTINGS = {
        lyt: {
          fit: "width_limit",
          zoom: 100,
          direction: "ttb",
          gap: true,
          spread: "1"
        },
        bhv: {
          preload: 3,
          scrollYDelta: 25,
          resetScroll: false,
          clickTurnPage: true,
          arrowTurnPage: false,
          swipeGestures: true,
          historyUpdate: "replace"
        },
        apr: {
          selectorAnchor: "left",
          selPinned: false,
          selNum: true,
          hoverinos: true,
          sidebar: true,
          previews: false
        },
        thm: {
          theme: "Cubari",
          ...CUSTOM_THEME_DEFAULT
        },
        adv: {
          spreadCount: 1,
          spreadOffset: 0,
          parallelDownloads: 5
        }
      };
      function isObject(value) {
        return typeof value === "object" && value !== null;
      }
      function clampToOptions(value, options, fallback) {
        return options.includes(value) ? value : fallback;
      }
      function asBoolean(value, fallback) {
        return typeof value === "boolean" ? value : fallback;
      }
      function normalizeColor(value, fallback) {
        if (typeof value !== "string") {
          return fallback;
        }
        const normalized = value.trim();
        return /^#[0-9a-f]{6}$/i.test(normalized) ? normalized.toUpperCase() : fallback;
      }
      function flattenSettings(settings) {
        return {
          "lyt.fit": settings.lyt.fit,
          "lyt.zoom": settings.lyt.zoom,
          "lyt.direction": settings.lyt.direction,
          "lyt.gap": settings.lyt.gap,
          "lyt.spread": settings.lyt.spread,
          "bhv.preload": settings.bhv.preload,
          "bhv.scrollYDelta": settings.bhv.scrollYDelta,
          "bhv.resetScroll": settings.bhv.resetScroll,
          "bhv.clickTurnPage": settings.bhv.clickTurnPage,
          "bhv.arrowTurnPage": settings.bhv.arrowTurnPage,
          "bhv.swipeGestures": settings.bhv.swipeGestures,
          "bhv.historyUpdate": settings.bhv.historyUpdate,
          "apr.selectorAnchor": settings.apr.selectorAnchor,
          "apr.selPinned": settings.apr.selPinned,
          "apr.selNum": settings.apr.selNum,
          "apr.hoverinos": settings.apr.hoverinos,
          "apr.sidebar": settings.apr.sidebar,
          "apr.previews": settings.apr.previews,
          "thm.theme": settings.thm.theme,
          "thm.primaryCol": settings.thm.primaryCol,
          "thm.textCol": settings.thm.textCol,
          "thm.accentCol": settings.thm.accentCol,
          "thm.readerBg": settings.thm.readerBg,
          "adv.spreadCount": settings.adv.spreadCount,
          "adv.spreadOffset": settings.adv.spreadOffset,
          "adv.parallelDownloads": settings.adv.parallelDownloads,
          VER: STORAGE_VERSION
        };
      }
      function hydrateSettings(source) {
        if (!isObject(source)) {
          return DEFAULT_SETTINGS;
        }
        return {
          lyt: {
            fit: clampToOptions(
              source["lyt.fit"],
              FIT_OPTIONS,
              DEFAULT_SETTINGS.lyt.fit
            ),
            zoom: clampToOptions(
              source["lyt.zoom"],
              ZOOM_OPTIONS,
              DEFAULT_SETTINGS.lyt.zoom
            ),
            direction: clampToOptions(
              source["lyt.direction"],
              DIRECTION_OPTIONS,
              DEFAULT_SETTINGS.lyt.direction
            ),
            gap: asBoolean(source["lyt.gap"], DEFAULT_SETTINGS.lyt.gap),
            spread: clampToOptions(
              source["lyt.spread"],
              SPREAD_OPTIONS,
              DEFAULT_SETTINGS.lyt.spread
            )
          },
          bhv: {
            preload: clampToOptions(
              source["bhv.preload"],
              PRELOAD_OPTIONS,
              DEFAULT_SETTINGS.bhv.preload
            ),
            scrollYDelta: clampToOptions(
              source["bhv.scrollYDelta"],
              SCROLL_SPEED_OPTIONS,
              DEFAULT_SETTINGS.bhv.scrollYDelta
            ),
            resetScroll: asBoolean(
              source["bhv.resetScroll"],
              DEFAULT_SETTINGS.bhv.resetScroll
            ),
            clickTurnPage: asBoolean(
              source["bhv.clickTurnPage"],
              DEFAULT_SETTINGS.bhv.clickTurnPage
            ),
            arrowTurnPage: asBoolean(
              source["bhv.arrowTurnPage"],
              DEFAULT_SETTINGS.bhv.arrowTurnPage
            ),
            swipeGestures: asBoolean(
              source["bhv.swipeGestures"],
              DEFAULT_SETTINGS.bhv.swipeGestures
            ),
            historyUpdate: clampToOptions(
              source["bhv.historyUpdate"],
              HISTORY_UPDATE_OPTIONS,
              DEFAULT_SETTINGS.bhv.historyUpdate
            )
          },
          apr: {
            selectorAnchor: clampToOptions(
              source["apr.selectorAnchor"],
              SELECTOR_ANCHOR_OPTIONS,
              DEFAULT_SETTINGS.apr.selectorAnchor
            ),
            selPinned: asBoolean(
              source["apr.selPinned"],
              DEFAULT_SETTINGS.apr.selPinned
            ),
            selNum: asBoolean(source["apr.selNum"], DEFAULT_SETTINGS.apr.selNum),
            hoverinos: asBoolean(
              source["apr.hoverinos"],
              DEFAULT_SETTINGS.apr.hoverinos
            ),
            sidebar: asBoolean(source["apr.sidebar"], DEFAULT_SETTINGS.apr.sidebar),
            previews: asBoolean(
              source["apr.previews"],
              DEFAULT_SETTINGS.apr.previews
            )
          },
          thm: {
            theme: clampToOptions(
              source["thm.theme"],
              THEME_OPTIONS,
              DEFAULT_SETTINGS.thm.theme
            ),
            primaryCol: normalizeColor(
              source["thm.primaryCol"],
              DEFAULT_SETTINGS.thm.primaryCol
            ),
            textCol: normalizeColor(
              source["thm.textCol"],
              DEFAULT_SETTINGS.thm.textCol
            ),
            accentCol: normalizeColor(
              source["thm.accentCol"],
              DEFAULT_SETTINGS.thm.accentCol
            ),
            readerBg: normalizeColor(
              source["thm.readerBg"],
              DEFAULT_SETTINGS.thm.readerBg
            )
          },
          adv: {
            spreadCount: typeof source["adv.spreadCount"] === "number" ? source["adv.spreadCount"] : DEFAULT_SETTINGS.adv.spreadCount,
            spreadOffset: typeof source["adv.spreadOffset"] === "number" ? source["adv.spreadOffset"] : DEFAULT_SETTINGS.adv.spreadOffset,
            parallelDownloads: typeof source["adv.parallelDownloads"] === "number" ? source["adv.parallelDownloads"] : DEFAULT_SETTINGS.adv.parallelDownloads
          }
        };
      }
      function isPersistedSettingsPayload(value) {
        if (!isObject(value)) {
          return false;
        }
        if (value.VER === STORAGE_VERSION) {
          return true;
        }
        return "lyt.fit" in value || "bhv.preload" in value || "apr.selectorAnchor" in value || "thm.theme" in value;
      }
      function readStoredSettingsFromKey(key) {
        const raw = window.localStorage.getItem(key);
        if (!raw) {
          return null;
        }
        const parsed = JSON.parse(raw);
        return isPersistedSettingsPayload(parsed) ? hydrateSettings(parsed) : null;
      }
      function readStoredSettings() {
        try {
          const storedSettings = readStoredSettingsFromKey(STORAGE_KEY);
          if (storedSettings) {
            return storedSettings;
          }
          const legacySettings = readStoredSettingsFromKey(LEGACY_STORAGE_KEY);
          return legacySettings ?? DEFAULT_SETTINGS;
        } catch {
          return DEFAULT_SETTINGS;
        }
      }
      function hexToRgb(color) {
        const cleaned = color.replace("#", "");
        return {
          b: Number.parseInt(cleaned.slice(4, 6), 16),
          g: Number.parseInt(cleaned.slice(2, 4), 16),
          r: Number.parseInt(cleaned.slice(0, 2), 16)
        };
      }
      function rgbToHex(value) {
        return Math.max(0, Math.min(255, value)).toString(16).padStart(2, "0");
      }
      function colManipulate(color, delta) {
        const { r, g, b } = hexToRgb(color);
        return `#${rgbToHex(r + delta)}${rgbToHex(g + delta)}${rgbToHex(b + delta)}`.toUpperCase();
      }
      function getLuma(color) {
        const { r, g, b } = hexToRgb(color);
        return (r * 299 + g * 587 + b * 114) / 1e3;
      }
      function getResolvedTheme(settings) {
        if (settings.theme === "Custom") {
          return {
            accent: settings.accentCol,
            reader: settings.readerBg,
            sidebar: settings.primaryCol,
            text: settings.textCol
          };
        }
        return THEME_PRESETS[settings.theme];
      }
      function getThemeStyle(settings) {
        const resolved = getResolvedTheme(settings);
        const sidebarLuma = getLuma(resolved.sidebar);
        const readerLuma = getLuma(resolved.reader);
        const accentLuma = getLuma(resolved.accent);
        const sidebarRgb = hexToRgb(resolved.sidebar);
        const textRgb = hexToRgb(resolved.text);
        const lowContrast = Math.abs(sidebarRgb.r - textRgb.r) < 50 && Math.abs(sidebarRgb.g - textRgb.g) < 50 && Math.abs(sidebarRgb.b - textRgb.b) < 50;
        return {
          "--accentCol": resolved.accent,
          "--accentSelected": accentLuma > 160 ? "#111111" : "#FFFFFF",
          "--accentSelectedInvert": sidebarLuma < 160 ? "#444444" : "#CCCCCC",
          "--blackFlag": readerLuma > 100 ? "rgba(0,0,0,0.3)" : "rgba(0,0,0,0.7)",
          "--blackLight": sidebarLuma > 100 ? "rgba(0,0,0,0.05)" : "rgba(0,0,0,0.2)",
          "--borderColor": sidebarLuma > 100 ? "rgba(0,0,0,0.2)" : "rgba(0,0,0,0.7)",
          "--icoCol": resolved.text,
          "--prevCol": colManipulate(resolved.sidebar, -7),
          "--rdr-wb": readerLuma > 100 ? "1px" : "2px",
          "--rdrAncBottomWhite": readerLuma > 100 ? "rgba(255,255,255,0.6)" : "rgba(255,255,255,0.35)",
          "--rdrBorderL": readerLuma > 100 ? "3px" : "1px",
          "--readerBg": resolved.reader,
          "--rescueShade": lowContrast ? sidebarLuma > 200 ? "0px 1px 1px rgba(0,0,0,0.6),0px -1px 1px rgba(0,0,0,0.6),-1px 0px 1px rgba(0,0,0,0.6),1px 0px 1px rgba(0,0,0,0.6)" : "0px 1px 1px rgba(255,255,255,0.6),0px -1px 1px rgba(255,255,255,0.6),-1px 0px 1px rgba(255,255,255,0.6),1px 0px 1px rgba(255,255,255,0.6)" : "unset",
          "--sidebarCol": resolved.sidebar,
          "--sidebarColDark": colManipulate(resolved.sidebar, -15),
          "--sidebarColDarkA": `${colManipulate(resolved.sidebar, -15)}00`,
          "--sidebarColFocus": sidebarLuma > 100 ? colManipulate(resolved.sidebar, -24) : colManipulate(resolved.sidebar, -27),
          "--textCol": resolved.text
        };
      }
      function isCustomThemeDirty(settings) {
        return settings.primaryCol !== CUSTOM_THEME_DEFAULT.primaryCol || settings.readerBg !== CUSTOM_THEME_DEFAULT.readerBg || settings.accentCol !== CUSTOM_THEME_DEFAULT.accentCol || settings.textCol !== CUSTOM_THEME_DEFAULT.textCol;
      }
      function useSettings() {
        const [settings, setSettings] = reactExports.useState(readStoredSettings);
        reactExports.useEffect(() => {
          try {
            window.localStorage.setItem(
              STORAGE_KEY,
              JSON.stringify(flattenSettings(settings))
            );
          } catch {
          }
        }, [settings]);
        function updateSetting(category, key, value) {
          setSettings((current) => ({
            ...current,
            [category]: {
              ...current[category],
              [key]: value
            }
          }));
        }
        function cycleSetting(category, key, options) {
          setSettings((current) => {
            const currentValue = current[category][key];
            const currentIndex = options.findIndex(
              (option) => option === currentValue
            );
            const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % options.length;
            return {
              ...current,
              [category]: {
                ...current[category],
                [key]: options[nextIndex]
              }
            };
          });
        }
        function toggleSetting(category, key) {
          setSettings((current) => ({
            ...current,
            [category]: {
              ...current[category],
              [key]: !current[category][key]
            }
          }));
        }
        function resetCustomTheme() {
          setSettings((current) => ({
            ...current,
            thm: {
              ...current.thm,
              theme: "Custom",
              ...CUSTOM_THEME_DEFAULT
            }
          }));
        }
        return {
          cycleSetting,
          resetCustomTheme,
          settings,
          toggleSetting,
          updateSetting
        };
      }
      const ReaderSidebar = reactExports.memo(function ReaderSidebar2({
        activeGroup,
        activeGroupIndex,
        activeChapterIndex,
        activePage,
        activePageNumber,
        closeComicMode,
        copyShareUrl,
        cycleSetting,
        displayGroups,
        folderMode,
        goToAdjacentChapter,
        goToAdjacentGroup,
        goToChapterAtIndex,
        getThumbnailUrl,
        images,
        isPasswordMode,
        jumpToChapterStart,
        logicalActiveGroupIndex,
        parentChapters,
        password,
        readerTitle,
        requestPassword,
        scrollToGroup,
        setIsSettingsOpen,
        setSettingsTab,
        settings,
        statusMessage,
        toggleSetting
      }) {
        const [tooltip, setTooltip] = reactExports.useState(null);
        const [isTooltipFaded, setIsTooltipFaded] = reactExports.useState(false);
        const tooltipTimeoutRef = reactExports.useRef(null);
        const tooltipTargetRef = reactExports.useRef(null);
        const clearTooltipTimeout = reactExports.useCallback(() => {
          if (tooltipTimeoutRef.current !== null) {
            window.clearTimeout(tooltipTimeoutRef.current);
            tooltipTimeoutRef.current = null;
          }
        }, []);
        reactExports.useEffect(() => clearTooltipTimeout, [clearTooltipTimeout]);
        const handleMouseOver = reactExports.useCallback(
          (event) => {
            if (window.innerWidth <= 768) {
              return;
            }
            const closestTip = event.target.closest(
              "[data-tip]"
            );
            if (!closestTip || tooltipTargetRef.current === closestTip) {
              return;
            }
            const text = closestTip.getAttribute("data-tip");
            if (!text) {
              return;
            }
            tooltipTargetRef.current = closestTip;
            setTooltip({
              text,
              align: closestTip.getAttribute("data-tip-align") === "right" ? "right" : null,
              rect: closestTip.getBoundingClientRect(),
              mouseX: event.clientX
            });
            setIsTooltipFaded(false);
            clearTooltipTimeout();
            tooltipTimeoutRef.current = window.setTimeout(() => {
              setIsTooltipFaded(true);
            }, 3e3);
          },
          [clearTooltipTimeout]
        );
        const handleMouseOut = reactExports.useCallback(
          (event) => {
            const closestTip = event.target.closest(
              "[data-tip]"
            );
            if (!closestTip || tooltipTargetRef.current !== closestTip) {
              return;
            }
            if (event.relatedTarget instanceof Node && closestTip.contains(event.relatedTarget)) {
              return;
            }
            tooltipTargetRef.current = null;
            setTooltip(null);
            clearTooltipTimeout();
          },
          [clearTooltipTimeout]
        );
        const hasAdjacentChapters = parentChapters.length > 1;
        const isRtl = settings.lyt.direction === "rtl";
        const isAtFirstGroup = activeGroupIndex === 0;
        const isAtLastGroup = displayGroups.length > 0 && activeGroupIndex === displayGroups.length - 1;
        const isAtChapterStart = isRtl ? isAtLastGroup : isAtFirstGroup;
        const isAtChapterEnd = isRtl ? isAtFirstGroup : isAtLastGroup;
        const previousGroupDelta = isRtl ? 1 : -1;
        const nextGroupDelta = isRtl ? -1 : 1;
        const isImagesMode = folderMode === "images";
        const orderedGroups = isRtl ? [...displayGroups].reverse() : displayGroups;
        const chapterSelectorLabel = isImagesMode ? parentChapters.length > 0 ? parentChapters[activeChapterIndex]?.name ?? "Unknown chapter" : "Chapter 1" : activeGroup ? pageLabel(activeGroup) : "0";
        const handleToggleSidebar = reactExports.useCallback(() => {
          toggleSetting("apr", "sidebar");
        }, [toggleSetting]);
        const handleClose = reactExports.useCallback(
          (event) => {
            event.preventDefault();
            closeComicMode();
          },
          [closeComicMode]
        );
        const handlePreventDefault = reactExports.useCallback(
          (event) => {
            event.preventDefault();
          },
          []
        );
        const handleOpenSettings = reactExports.useCallback(() => {
          setSettingsTab("Reader");
          setIsSettingsOpen(true);
        }, [setIsSettingsOpen, setSettingsTab]);
        const handlePrevPage = reactExports.useCallback(() => {
          if (isAtChapterStart && hasAdjacentChapters) {
            goToAdjacentChapter(-1);
            return;
          }
          goToAdjacentGroup(previousGroupDelta);
        }, [
          goToAdjacentChapter,
          goToAdjacentGroup,
          hasAdjacentChapters,
          isAtChapterStart,
          previousGroupDelta
        ]);
        const handleNextPage = reactExports.useCallback(() => {
          if (isAtChapterEnd && hasAdjacentChapters) {
            goToAdjacentChapter(1);
            return;
          }
          goToAdjacentGroup(nextGroupDelta);
        }, [
          goToAdjacentChapter,
          goToAdjacentGroup,
          hasAdjacentChapters,
          isAtChapterEnd,
          nextGroupDelta
        ]);
        const handlePrevChapter = reactExports.useCallback(() => {
          goToAdjacentChapter(-1);
        }, [goToAdjacentChapter]);
        const handleNextChapter = reactExports.useCallback(() => {
          goToAdjacentChapter(1);
        }, [goToAdjacentChapter]);
        const handleChapterSelectChange = reactExports.useCallback(
          (event) => {
            const nextIndex = Number.parseInt(event.target.value, 10);
            if (Number.isNaN(nextIndex)) {
              return;
            }
            if (isImagesMode) {
              if (parentChapters.length > 0) {
                goToChapterAtIndex(nextIndex);
              }
              return;
            }
            scrollToGroup(
              getDisplayGroupIndex(
                nextIndex,
                displayGroups.length,
                settings.lyt.direction
              )
            );
          },
          [
            displayGroups.length,
            goToChapterAtIndex,
            isImagesMode,
            parentChapters.length,
            scrollToGroup,
            settings.lyt.direction
          ]
        );
        const handlePageSelectChange = reactExports.useCallback(
          (event) => {
            const targetPage = Number.parseInt(event.target.value, 10);
            const targetGroupIndex = findGroupIndexForPage(displayGroups, targetPage);
            if (targetGroupIndex !== -1) {
              scrollToGroup(targetGroupIndex);
            }
          },
          [displayGroups, scrollToGroup]
        );
        const handleCyclePreload = reactExports.useCallback(() => {
          cycleSetting("bhv", "preload", PRELOAD_OPTIONS);
        }, [cycleSetting]);
        const handleCycleFit = reactExports.useCallback(() => {
          cycleSetting("lyt", "fit", FIT_OPTIONS);
        }, [cycleSetting]);
        const handleCycleDirection = reactExports.useCallback(() => {
          cycleSetting("lyt", "direction", DIRECTION_OPTIONS);
        }, [cycleSetting]);
        const handleCycleSpread = reactExports.useCallback(() => {
          cycleSetting("lyt", "spread", SPREAD_OPTIONS);
        }, [cycleSetting]);
        const handleTogglePinned = reactExports.useCallback(() => {
          toggleSetting("apr", "selPinned");
        }, [toggleSetting]);
        const handleTogglePreviews = reactExports.useCallback(() => {
          toggleSetting("apr", "previews");
        }, [toggleSetting]);
        const handlePreviewClick = reactExports.useCallback(
          (event) => {
            const groupIndex = Number.parseInt(
              event.currentTarget.dataset.groupIndex ?? "",
              10
            );
            if (!Number.isNaN(groupIndex)) {
              scrollToGroup(groupIndex);
            }
          },
          [scrollToGroup]
        );
        const handleCopyUrl = reactExports.useCallback(
          (event) => {
            event.preventDefault();
            copyShareUrl();
          },
          [copyShareUrl]
        );
        const tooltipParts = reactExports.useMemo(
          () => tooltip?.text.split(/(\[.+?\])/) ?? [],
          [tooltip]
        );
        return jsxRuntimeExports.jsxs(
          "aside",
          {
            className: "",
            onMouseOver: handleMouseOver,
            onMouseOut: handleMouseOut,
            children: [
jsxRuntimeExports.jsx(
                "div",
                {
                  className: "hide-side UI Button MultiStateButton",
                  "data-tip": "Show/hide sidebar [S]",
                  "data-tip-align": "right",
                  ...{ "data-apr.sidebar": settings.apr.sidebar },
                  onClick: handleToggleSidebar,
                  role: "button",
                  tabIndex: 0,
                  children: jsxRuntimeExports.jsx("div", { className: "hide-side-actual ico-btn" })
                }
              ),
jsxRuntimeExports.jsxs("header", { children: [
jsxRuntimeExports.jsx("a", { className: "ico-btn guya", href: "/", onClick: handleClose }),
jsxRuntimeExports.jsx("h1", { children: jsxRuntimeExports.jsx("a", { href: "#", onClick: handlePreventDefault, children: readerTitle }) }),
jsxRuntimeExports.jsx("button", { className: "ico-btn", type: "button" })
              ] }),
jsxRuntimeExports.jsx("div", { className: "rdr-aside-buffer" }),
jsxRuntimeExports.jsxs("div", { className: "rdr-aside-content", children: [
jsxRuntimeExports.jsxs("section", { className: "rdr-selector", children: [
jsxRuntimeExports.jsxs("div", { className: "rdr-selector-top", children: [
jsxRuntimeExports.jsx(
                      "button",
                      {
                        className: "rdr-selector-vol ico-btn prev",
                        "data-tip": "Next page [.]",
                        onClick: handlePrevPage,
                        type: "button"
                      }
                    ),
jsxRuntimeExports.jsx("div", { className: "flex-spacer UI MessageBox", id: "message-box", children: statusMessage }),
jsxRuntimeExports.jsx(
                      "button",
                      {
                        className: "ico-btn UI Button password",
                        "data-password-active": password !== null,
                        "data-tip": password ? "Set new/Clear decryption password [K]" : "Set decryption password [K]",
                        onClick: requestPassword,
                        type: "button",
                        children: jsxRuntimeExports.jsx(
                          "svg",
                          {
                            xmlns: "http://www.w3.org/2000/svg",
                            width: 20,
                            height: 20,
                            viewBox: "0 0 24 24",
                            children: jsxRuntimeExports.jsx(
                              "path",
                              {
                                fill: "currentColor",
                                d: "M2.5 18.5v-1h19v1zm.535-5.973l-.762-.442l.965-1.693h-1.93v-.884h1.93l-.965-1.642l.762-.443L4 9.066l.966-1.643l.761.443l-.965 1.642h1.93v.884h-1.93l.965 1.693l-.762.442L4 10.835zm8 0l-.762-.442l.966-1.693H9.308v-.884h1.93l-.965-1.642l.762-.443L12 9.066l.966-1.643l.761.443l-.965 1.642h1.93v.884h-1.93l.965 1.693l-.762.442L12 10.835zm8 0l-.762-.442l.966-1.693h-1.931v-.884h1.93l-.965-1.642l.762-.443L20 9.066l.966-1.643l.761.443l-.965 1.642h1.93v.884h-1.93l.965 1.693l-.762.442L20 10.835z"
                              }
                            )
                          }
                        )
                      }
                    ),
jsxRuntimeExports.jsx(
                      "a",
                      {
                        className: "rdr-share ico-btn ",
                        "data-tip": "Copy short link [R]",
                        onClick: handleCopyUrl,
                        role: "button",
                        tabIndex: 0
                      }
                    ),
jsxRuntimeExports.jsx(
                      "button",
                      {
                        className: "ico-btn jump",
                        "data-tip": "Jump to top [J]",
                        onClick: jumpToChapterStart,
                        type: "button"
                      }
                    )
                  ] }),
jsxRuntimeExports.jsxs("div", { className: "rdr-selector-mid", children: [
jsxRuntimeExports.jsx(
                      "button",
                      {
                        className: "rdr-selector-chap ico-btn prev",
                        "data-tip": "Previous chapter [[]",
                        onClick: handlePrevChapter,
                        type: "button"
                      }
                    ),
jsxRuntimeExports.jsxs("div", { className: "rdr-vol-wrap UI FauxDrop", children: [
jsxRuntimeExports.jsx("label", { children: activePageNumber }),
jsxRuntimeExports.jsx(
                        "select",
                        {
                          className: "UI List SimpleList",
                          id: "rdr-vol",
                          onChange: handlePageSelectChange,
                          value: String(activePage),
                          children: images.map((image, index) => jsxRuntimeExports.jsxs(
                            "option",
                            {
                              className: "UI SimpleListItem",
                              value: String(index),
                              children: [
                                "Page ",
                                index + 1
                              ]
                            },
                            image.id
                          ))
                        }
                      )
                    ] }),
jsxRuntimeExports.jsxs("div", { className: "rdr-chap-wrap UI FauxDrop", children: [
jsxRuntimeExports.jsx("label", { children: chapterSelectorLabel }),
jsxRuntimeExports.jsx(
                        "select",
                        {
                          className: "UI List SimpleList",
                          disabled: isImagesMode && parentChapters.length === 0,
                          id: "rdr-chap",
                          onChange: handleChapterSelectChange,
                          value: String(
                            isImagesMode ? activeChapterIndex : logicalActiveGroupIndex
                          ),
                          children: isImagesMode ? parentChapters.length > 0 ? parentChapters.map((chapter, index) => jsxRuntimeExports.jsx(
                            "option",
                            {
                              className: "UI SimpleListItem",
                              value: String(index),
                              children: chapter.name
                            },
                            chapter.id
                          )) : jsxRuntimeExports.jsx("option", { className: "UI SimpleListItem", value: "0", children: "Chapter 1" }) : orderedGroups.map((group, index) => jsxRuntimeExports.jsx(
                            "option",
                            {
                              className: "UI SimpleListItem",
                              value: String(index),
                              children: pageLabel(group)
                            },
                            group.id
                          ))
                        }
                      )
                    ] }),
jsxRuntimeExports.jsx(
                      "button",
                      {
                        className: "rdr-selector-chap ico-btn next",
                        "data-tip": "Next chapter []]",
                        onClick: handleNextChapter,
                        type: "button"
                      }
                    )
                  ] }),
jsxRuntimeExports.jsxs("div", { className: "rdr-selector-bot", children: [
jsxRuntimeExports.jsx(
                      "button",
                      {
                        className: "rdr-selector-vol ico-btn next",
                        "data-tip": "Previous page [,]",
                        onClick: handleNextPage,
                        type: "button"
                      }
                    ),
jsxRuntimeExports.jsx("div", { className: "flex-spacer" }),
jsxRuntimeExports.jsx(
                      "button",
                      {
                        ...{ "data-bhv.preload": settings.bhv.preload },
                        className: "ico-btn hidden UI Button MultiStateButton",
                        "data-tip": "Change preload [L]",
                        onClick: handleCyclePreload,
                        type: "button"
                      }
                    ),
jsxRuntimeExports.jsx(
                      "button",
                      {
                        ...{ "data-lyt.fit": settings.lyt.fit },
                        className: "ico-btn UI Button MultiStateButton",
                        "data-tip": "Change fit mode [F]",
                        onClick: handleCycleFit,
                        type: "button"
                      }
                    ),
jsxRuntimeExports.jsx(
                      "button",
                      {
                        ...{ "data-lyt.direction": settings.lyt.direction },
                        className: "ico-btn UI Button MultiStateButton",
                        "data-tip": "Change layout direction [D]",
                        onClick: handleCycleDirection,
                        type: "button"
                      }
                    ),
jsxRuntimeExports.jsx(
                      "button",
                      {
                        ...{ "data-lyt.spread": settings.lyt.spread },
                        className: "ico-btn UI Button MultiStateButton",
                        "data-tip": "Change two-page mode [Q]",
                        onClick: handleCycleSpread,
                        type: "button"
                      }
                    ),
jsxRuntimeExports.jsx(
                      "button",
                      {
                        ...{ "data-apr.selpinned": settings.apr.selPinned },
                        className: "ico-btn UI Button MultiStateButton",
                        "data-tip": "Pin page selector [N]",
                        onClick: handleTogglePinned,
                        type: "button"
                      }
                    ),
jsxRuntimeExports.jsx(
                      "button",
                      {
                        className: "ico-btn",
                        "data-bind": "settings_button",
                        "data-tip": "Advanced settings... [O]",
                        onClick: handleOpenSettings,
                        type: "button"
                      }
                    )
                  ] })
                ] }),
jsxRuntimeExports.jsx("section", { className: "rdr-groups UI List Selector Tabs", children: jsxRuntimeExports.jsxs("div", { className: "is-active UI SimpleListItem", children: [
                  images.length,
                  " image pages detected"
                ] }) }),
jsxRuntimeExports.jsx("section", { className: "rdr-previews", children: !isPasswordMode && jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
jsxRuntimeExports.jsxs(
                    "div",
                    {
                      className: "header UI Button MultiStateButton",
                      ...{ "data-apr.previews": settings.apr.previews },
                      onClick: handleTogglePreviews,
                      role: "button",
                      tabIndex: 0,
                      children: [
jsxRuntimeExports.jsx("span", { children: "Previews" }),
jsxRuntimeExports.jsx(
                          "div",
                          {
                            className: "ico-btn expander",
                            "data-tip": "Show previews [P]"
                          }
                        )
                      ]
                    }
                  ),
jsxRuntimeExports.jsx("div", { className: "rdr-previews-gallery UI List Selector Tabs", children: images.map((image, index) => {
                    const previewGroupIndex = findGroupIndexForPage(
                      displayGroups,
                      index
                    );
                    return jsxRuntimeExports.jsx(
                      "img",
                      {
                        className: previewGroupIndex === activeGroupIndex ? "is-active" : void 0,
                        "data-group-index": String(previewGroupIndex),
                        loading: "lazy",
                        onClick: handlePreviewClick,
                        src: getThumbnailUrl(image)
                      },
                      image.id
                    );
                  }) })
                ] }) }),
jsxRuntimeExports.jsx("section", { className: "rdr-description", children: jsxRuntimeExports.jsx("div", { children: jsxRuntimeExports.jsx(
                  "a",
                  {
                    href: "https://github.com/zennomi/truyendrive",
                    target: "_blank",
                    rel: "noreferrer",
                    children: "truyendrive on GitHub"
                  }
                ) }) })
              ] }),
              tooltip && jsxRuntimeExports.jsx(
                "div",
                {
                  className: `Tooltippy ${isTooltipFaded ? "fadeOut" : ""}`,
                  style: {
                    position: "fixed",
                    display: "block",
                    zIndex: 3e3,
                    ...tooltip.align === "right" ? {
                      left: `${tooltip.rect.right + 4}px`,
                      top: `${tooltip.rect.top}px`
                    } : {
                      bottom: `${window.innerHeight - tooltip.rect.top + 2}px`,
                      ...tooltip.mouseX > window.innerWidth / 2 ? {
                        right: `${window.innerWidth - tooltip.rect.right}px`,
                        left: "unset"
                      } : {
                        left: `${tooltip.rect.left}px`,
                        right: "unset"
                      }
                    }
                  },
                  children: tooltipParts.map((part, i) => {
                    if (part.startsWith("[") && part.endsWith("]")) {
                      return jsxRuntimeExports.jsx("span", { className: "Tooltippy-key", children: part.slice(1, -1) }, i);
                    }
                    return part;
                  })
                }
              )
            ]
          }
        );
      });
      const ZoomControls = reactExports.memo(function ZoomControls2({
        isVisible,
        onZoomChange,
        showZoomControls,
        zoom
      }) {
        const handleZoomIn = reactExports.useCallback(() => {
          onZoomChange(Math.min(100, zoom + 10));
          showZoomControls();
        }, [onZoomChange, showZoomControls, zoom]);
        const handleZoomOut = reactExports.useCallback(() => {
          onZoomChange(Math.max(10, zoom - 10));
          showZoomControls();
        }, [onZoomChange, showZoomControls, zoom]);
        return jsxRuntimeExports.jsxs("div", { className: `zoom-level${isVisible ? " vis" : ""}`, children: [
jsxRuntimeExports.jsx("button", { className: "ico-btn", onClick: handleZoomIn, type: "button", children: "" }),
jsxRuntimeExports.jsx("button", { className: "ico-btn", onClick: handleZoomOut, type: "button", children: "" })
        ] });
      });
      function startCase(value) {
        return value.replace(/[-_]/g, " ").replace(/\b\w/g, (char) => char.toUpperCase());
      }
      function SettingBlock({
        children,
        compact = false,
        nomobile = false,
        disabled = false,
        title
      }) {
        const wrapperClasses = ["setting-wrapper", "UI", "SettingUnit"];
        if (compact) wrapperClasses.push("compact");
        if (nomobile) wrapperClasses.push("nomobile");
        const headerClasses = ["setting-header"];
        if (disabled) headerClasses.push("disabled");
        const fieldClasses = ["setting-field", "UI", "SettingDisplay"];
        if (disabled) fieldClasses.push("disabled");
        return jsxRuntimeExports.jsxs("div", { className: wrapperClasses.join(" "), children: [
jsxRuntimeExports.jsx("header", { className: headerClasses.join(" "), children: title }),
jsxRuntimeExports.jsx("div", { className: fieldClasses.join(" "), children })
        ] });
      }
      function ButtonGroup({
        labels,
        onChange,
        selected,
        values
      }) {
        return jsxRuntimeExports.jsx("div", { className: "t-row UI ButtonGroup", children: jsxRuntimeExports.jsx("div", { className: "t-1", children: values.map((value) => jsxRuntimeExports.jsxs(
          "div",
          {
            className: `ToggleButton UI Button${selected === value ? " s" : ""}`,
            onClick: () => onChange(value),
            role: "button",
            tabIndex: 0,
            children: [
jsxRuntimeExports.jsx("div", { className: "ico-btn" }),
jsxRuntimeExports.jsx("span", { children: labels?.[`${value}`] ?? startCase(String(value)) })
            ]
          },
          String(value)
        )) }) });
      }
      function BooleanGroup({
        falseLabel,
        onChange,
        trueLabel,
        value
      }) {
        return jsxRuntimeExports.jsx(
          ButtonGroup,
          {
            labels: { false: falseLabel, true: trueLabel },
            onChange,
            selected: value,
            values: [true, false]
          }
        );
      }
      function SliderGroup({
        onChange,
        options,
        ticks,
        value
      }) {
        const selectedIndex = Math.max(
          0,
          options.findIndex((opt) => opt === value)
        );
        return jsxRuntimeExports.jsxs("div", { className: "UI Slider", children: [
jsxRuntimeExports.jsxs("div", { className: "slider-wrap", children: [
jsxRuntimeExports.jsx(
              "input",
              {
                className: "slider-control",
                max: options.length - 1,
                min: 0,
                onChange: (e) => onChange(options[Number(e.target.value)]),
                type: "range",
                value: selectedIndex
              }
            ),
jsxRuntimeExports.jsx("div", { className: "ticks", children: ticks.map((tick, index) => jsxRuntimeExports.jsx("i", { children: tick }, index)) })
          ] }),
jsxRuntimeExports.jsx(
            "input",
            {
              className: "slider-value",
              type: "text",
              readOnly: true,
              value: value === 100 && options.includes(100) ? "∞" : value
            }
          )
        ] });
      }
      function ThemeDropdown({
        onChange,
        selected,
        values
      }) {
        const [open, setOpen] = reactExports.useState(false);
        return jsxRuntimeExports.jsxs("div", { className: "dropdown UI InputDropdown", onClick: () => setOpen(!open), children: [
jsxRuntimeExports.jsxs("div", { className: "input-container", children: [
jsxRuntimeExports.jsx(
              "input",
              {
                type: "text",
                placeholder: selected,
                className: "dropbtn",
                readOnly: true,
                value: selected
              }
            ),
jsxRuntimeExports.jsx("span", { className: "arrd" })
          ] }),
jsxRuntimeExports.jsx(
            "div",
            {
              className: `dropdown-content${open ? "" : " hidden"}`,
              tabIndex: -1,
              style: { height: "unset" },
              children: values.map((value) => jsxRuntimeExports.jsx(
                "button",
                {
                  className: "opts",
                  onClick: (e) => {
                    e.stopPropagation();
                    onChange(value);
                    setOpen(false);
                  },
                  type: "button",
                  children: value
                },
                value
              ))
            }
          )
        ] });
      }
      function SettingsContent({
        resetCustomTheme,
        settings,
        tab,
        updateSetting
      }) {
        const resolvedTheme = getResolvedTheme(settings.thm);
        const themeValues = {
          accentCol: settings.thm.theme === "Custom" ? settings.thm.accentCol : resolvedTheme.accent.toUpperCase(),
          primaryCol: settings.thm.theme === "Custom" ? settings.thm.primaryCol : resolvedTheme.sidebar.toUpperCase(),
          readerBg: settings.thm.theme === "Custom" ? settings.thm.readerBg : resolvedTheme.reader.toUpperCase(),
          textCol: settings.thm.theme === "Custom" ? settings.thm.textCol : resolvedTheme.text.toUpperCase()
        };
        const updateThemeColor = (key, value) => {
          const normalizedValue = value.toUpperCase();
          if (settings.thm.theme !== "Custom") {
            updateSetting("thm", "primaryCol", resolvedTheme.sidebar.toUpperCase());
            updateSetting("thm", "textCol", resolvedTheme.text.toUpperCase());
            updateSetting("thm", "accentCol", resolvedTheme.accent.toUpperCase());
            updateSetting("thm", "readerBg", resolvedTheme.reader.toUpperCase());
            updateSetting("thm", "theme", "Custom");
          }
          updateSetting("thm", key, normalizedValue);
        };
        return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
jsxRuntimeExports.jsxs("div", { className: `UI Dummy${tab === "Reader" ? "" : " is-hidden"}`, children: [
jsxRuntimeExports.jsx(SettingBlock, { title: "Page fit", children: jsxRuntimeExports.jsxs("div", { className: "UI ButtonGroup", children: [
jsxRuntimeExports.jsx("div", { className: "t-row", children: jsxRuntimeExports.jsx("div", { className: "t-1", children: jsxRuntimeExports.jsxs(
                "div",
                {
                  className: `ToggleButton UI Button${settings.lyt.fit === "none" ? " s" : ""}`,
                  onClick: () => updateSetting("lyt", "fit", "none"),
                  role: "button",
                  tabIndex: 0,
                  children: [
jsxRuntimeExports.jsx("div", { className: "ico-btn" }),
jsxRuntimeExports.jsx("span", { children: "Original size" })
                  ]
                }
              ) }) }),
jsxRuntimeExports.jsxs("div", { className: "t-row", children: [
jsxRuntimeExports.jsx("div", { className: "t-tooltip", children: "Limit" }),
jsxRuntimeExports.jsxs("div", { className: "t-1", children: [
jsxRuntimeExports.jsxs(
                    "div",
                    {
                      className: `ToggleButton UI Button${settings.lyt.fit === "all_limit" ? " s" : ""}`,
                      onClick: () => updateSetting("lyt", "fit", "all_limit"),
                      role: "button",
                      tabIndex: 0,
                      children: [
jsxRuntimeExports.jsx("div", { className: "ico-btn" }),
jsxRuntimeExports.jsx("span", { children: "All" })
                      ]
                    }
                  ),
jsxRuntimeExports.jsxs(
                    "div",
                    {
                      className: `ToggleButton UI Button${settings.lyt.fit === "width_limit" ? " s" : ""}`,
                      onClick: () => updateSetting("lyt", "fit", "width_limit"),
                      role: "button",
                      tabIndex: 0,
                      children: [
jsxRuntimeExports.jsx("div", { className: "ico-btn" }),
jsxRuntimeExports.jsx("span", { children: "Width" })
                      ]
                    }
                  ),
jsxRuntimeExports.jsxs(
                    "div",
                    {
                      className: `ToggleButton UI Button${settings.lyt.fit === "height_limit" ? " s" : ""}`,
                      onClick: () => updateSetting("lyt", "fit", "height_limit"),
                      role: "button",
                      tabIndex: 0,
                      children: [
jsxRuntimeExports.jsx("div", { className: "ico-btn" }),
jsxRuntimeExports.jsx("span", { children: "Height" })
                      ]
                    }
                  )
                ] })
              ] }),
jsxRuntimeExports.jsxs("div", { className: "t-row", children: [
jsxRuntimeExports.jsx("div", { className: "t-tooltip", children: "Stretch" }),
jsxRuntimeExports.jsxs("div", { className: "t-1", children: [
jsxRuntimeExports.jsxs(
                    "div",
                    {
                      className: `ToggleButton UI Button${settings.lyt.fit === "all" ? " s" : ""}`,
                      onClick: () => updateSetting("lyt", "fit", "all"),
                      role: "button",
                      tabIndex: 0,
                      children: [
jsxRuntimeExports.jsx("div", { className: "ico-btn" }),
jsxRuntimeExports.jsx("span", { children: "All" })
                      ]
                    }
                  ),
jsxRuntimeExports.jsxs(
                    "div",
                    {
                      className: `ToggleButton UI Button${settings.lyt.fit === "width" ? " s" : ""}`,
                      onClick: () => updateSetting("lyt", "fit", "width"),
                      role: "button",
                      tabIndex: 0,
                      children: [
jsxRuntimeExports.jsx("div", { className: "ico-btn" }),
jsxRuntimeExports.jsx("span", { children: "Width" })
                      ]
                    }
                  ),
jsxRuntimeExports.jsxs(
                    "div",
                    {
                      className: `ToggleButton UI Button${settings.lyt.fit === "height" ? " s" : ""}`,
                      onClick: () => updateSetting("lyt", "fit", "height"),
                      role: "button",
                      tabIndex: 0,
                      children: [
jsxRuntimeExports.jsx("div", { className: "ico-btn" }),
jsxRuntimeExports.jsx("span", { children: "Height" })
                      ]
                    }
                  )
                ] })
              ] })
            ] }) }),
jsxRuntimeExports.jsx(
              SettingBlock,
              {
                nomobile: true,
                disabled: [
                  "none",
                  "all_limit",
                  "height_limit",
                  "all",
                  "height"
                ].includes(settings.lyt.fit),
                title: "Maximum page width",
                children: jsxRuntimeExports.jsx(
                  SliderGroup,
                  {
                    onChange: (value) => updateSetting("lyt", "zoom", value),
                    options: ZOOM_OPTIONS,
                    ticks: ZOOM_OPTIONS.map((val) => `${val}%`),
                    value: settings.lyt.zoom
                  }
                )
              }
            ),
jsxRuntimeExports.jsx(SettingBlock, { title: "Reader layout", children: jsxRuntimeExports.jsx(
              ButtonGroup,
              {
                labels: {
                  ltr: "Left-to-right",
                  rtl: "Right-to-left",
                  ttb: "Top-to-bottom"
                },
                onChange: (value) => updateSetting("lyt", "direction", value),
                selected: settings.lyt.direction,
                values: DIRECTION_OPTIONS
              }
            ) }),
jsxRuntimeExports.jsx(SettingBlock, { compact: true, title: "Remove gaps in vertical view", children: jsxRuntimeExports.jsx(
              BooleanGroup,
              {
                falseLabel: "Gaps applied",
                onChange: (value) => updateSetting("lyt", "gap", value),
                trueLabel: "Gaps removed",
                value: settings.lyt.gap
              }
            ) }),
jsxRuntimeExports.jsx(SettingBlock, { title: "2-page spread", children: jsxRuntimeExports.jsx(
              ButtonGroup,
              {
                labels: {
                  "1": "1-page layout",
                  "2": "2-page layout",
                  "2-odd": "2-page layout, odd"
                },
                onChange: (value) => updateSetting("lyt", "spread", value),
                selected: settings.lyt.spread,
                values: SPREAD_OPTIONS
              }
            ) })
          ] }),
jsxRuntimeExports.jsxs("div", { className: `UI Dummy${tab === "Behavior" ? "" : " is-hidden"}`, children: [
jsxRuntimeExports.jsx(SettingBlock, { title: "Page preload", children: jsxRuntimeExports.jsx(
              SliderGroup,
              {
                onChange: (value) => updateSetting("bhv", "preload", value),
                options: PRELOAD_OPTIONS,
                ticks: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "∞"],
                value: settings.bhv.preload
              }
            ) }),
jsxRuntimeExports.jsx(
              SettingBlock,
              {
                nomobile: true,
                title: "Vertical scroll speed using keyboard arrows",
                children: jsxRuntimeExports.jsx(
                  SliderGroup,
                  {
                    onChange: (value) => updateSetting("bhv", "scrollYDelta", value),
                    options: SCROLL_SPEED_OPTIONS,
                    ticks: SCROLL_SPEED_OPTIONS.map((val) => `${val}px`),
                    value: settings.bhv.scrollYDelta
                  }
                )
              }
            ),
jsxRuntimeExports.jsx(SettingBlock, { compact: true, title: "Reset page scroll after page flip", children: jsxRuntimeExports.jsx(
              BooleanGroup,
              {
                falseLabel: "Leave it be",
                onChange: (value) => updateSetting("bhv", "resetScroll", value),
                trueLabel: "Reset",
                value: settings.bhv.resetScroll
              }
            ) }),
jsxRuntimeExports.jsx(SettingBlock, { compact: true, title: "Turn pages by clicking", children: jsxRuntimeExports.jsx(
              BooleanGroup,
              {
                falseLabel: "Disabled",
                onChange: (value) => updateSetting("bhv", "clickTurnPage", value),
                trueLabel: "Turn page",
                value: settings.bhv.clickTurnPage
              }
            ) }),
jsxRuntimeExports.jsx(
              SettingBlock,
              {
                compact: true,
                title: "Turn pages with arrow keys in vertical view",
                children: jsxRuntimeExports.jsx(
                  BooleanGroup,
                  {
                    falseLabel: "Disabled",
                    onChange: (value) => updateSetting("bhv", "arrowTurnPage", value),
                    trueLabel: "Turn page",
                    value: settings.bhv.arrowTurnPage
                  }
                )
              }
            ),
jsxRuntimeExports.jsx(SettingBlock, { compact: true, title: "Enable swipe gestures", children: jsxRuntimeExports.jsx(
              BooleanGroup,
              {
                falseLabel: "Swipe disabled",
                onChange: (value) => updateSetting("bhv", "swipeGestures", value),
                trueLabel: "Swipe enabled",
                value: settings.bhv.swipeGestures
              }
            ) }),
jsxRuntimeExports.jsx(SettingBlock, { title: "Browser history/back button behavior", children: jsxRuntimeExports.jsx(
              ButtonGroup,
              {
                labels: {
                  all: "Add every move to history",
                  chap: "Add every chapter to history",
                  jump: "Add every chapter and page skips",
                  none: "Don't touch browser history",
                  replace: "Just change the page title"
                },
                onChange: (value) => updateSetting("bhv", "historyUpdate", value),
                selected: settings.bhv.historyUpdate,
                values: HISTORY_UPDATE_OPTIONS
              }
            ) })
          ] }),
jsxRuntimeExports.jsxs("div", { className: `UI Dummy${tab === "Layout" ? "" : " is-hidden"}`, children: [
jsxRuntimeExports.jsx(SettingBlock, { nomobile: true, title: "Page selector position", children: jsxRuntimeExports.jsx(
              ButtonGroup,
              {
                labels: { bottom: "Bottom", left: "Left" },
                onChange: (value) => updateSetting("apr", "selectorAnchor", value),
                selected: settings.apr.selectorAnchor,
                values: SELECTOR_ANCHOR_OPTIONS
              }
            ) }),
jsxRuntimeExports.jsx(SettingBlock, { compact: true, title: "Pin page selector", children: jsxRuntimeExports.jsx(
              BooleanGroup,
              {
                falseLabel: "Shown on hover",
                onChange: (value) => updateSetting("apr", "selPinned", value),
                trueLabel: "Pinned",
                value: settings.apr.selPinned
              }
            ) }),
jsxRuntimeExports.jsx(SettingBlock, { compact: true, title: "Page selector: show page number", children: jsxRuntimeExports.jsx(
              BooleanGroup,
              {
                falseLabel: "Hide page number",
                onChange: (value) => updateSetting("apr", "selNum", value),
                trueLabel: "Show page number",
                value: settings.apr.selNum
              }
            ) }),
jsxRuntimeExports.jsx(
              SettingBlock,
              {
                compact: true,
                nomobile: true,
                title: "Mouseover reader hints (next, prev)",
                children: jsxRuntimeExports.jsx(
                  BooleanGroup,
                  {
                    falseLabel: "Hidden",
                    onChange: (value) => updateSetting("apr", "hoverinos", value),
                    trueLabel: "Visible",
                    value: settings.apr.hoverinos
                  }
                )
              }
            ),
jsxRuntimeExports.jsx(SettingBlock, { compact: true, nomobile: true, title: "Show sidebar", children: jsxRuntimeExports.jsx(
              BooleanGroup,
              {
                falseLabel: "Hide sidebar",
                onChange: (value) => updateSetting("apr", "sidebar", value),
                trueLabel: "Show sidebar",
                value: settings.apr.sidebar
              }
            ) }),
jsxRuntimeExports.jsx(SettingBlock, { compact: true, nomobile: true, title: "Show previews", children: jsxRuntimeExports.jsx(
              BooleanGroup,
              {
                falseLabel: "Hide previews",
                onChange: (value) => updateSetting("apr", "previews", value),
                trueLabel: "Show previews",
                value: settings.apr.previews
              }
            ) })
          ] }),
jsxRuntimeExports.jsxs("div", { className: `UI Dummy${tab === "Themes" ? "" : " is-hidden"}`, children: [
jsxRuntimeExports.jsx(SettingBlock, { title: "Reader Theme", children: jsxRuntimeExports.jsx(
              ThemeDropdown,
              {
                onChange: (value) => updateSetting("thm", "theme", value),
                selected: settings.thm.theme,
                values: THEME_OPTIONS
              }
            ) }),
jsxRuntimeExports.jsx(
              SettingBlock,
              {
                compact: true,
                disabled: settings.thm.theme !== "Custom",
                title: "Interface Color",
                children: jsxRuntimeExports.jsx(
                  "button",
                  {
                    "aria-label": "toggle color picker dialog",
                    className: "UI ColorPicker",
                    onClick: () => {
                      const input = document.createElement("input");
                      input.type = "color";
                      input.value = themeValues.primaryCol;
                      input.oninput = (e) => updateThemeColor(
                        "primaryCol",
                        e.target.value
                      );
                      input.click();
                    },
                    role: "button",
                    style: { backgroundColor: themeValues.primaryCol },
                    type: "button"
                  }
                )
              }
            ),
jsxRuntimeExports.jsx(
              SettingBlock,
              {
                compact: true,
                disabled: settings.thm.theme !== "Custom",
                title: "Text Color",
                children: jsxRuntimeExports.jsx(
                  "button",
                  {
                    "aria-label": "toggle color picker dialog",
                    className: "UI ColorPicker",
                    onClick: () => {
                      const input = document.createElement("input");
                      input.type = "color";
                      input.value = themeValues.textCol;
                      input.oninput = (e) => updateThemeColor(
                        "textCol",
                        e.target.value
                      );
                      input.click();
                    },
                    role: "button",
                    style: { backgroundColor: themeValues.textCol },
                    type: "button"
                  }
                )
              }
            ),
jsxRuntimeExports.jsx(
              SettingBlock,
              {
                compact: true,
                disabled: settings.thm.theme !== "Custom",
                title: "Accent Color",
                children: jsxRuntimeExports.jsx(
                  "button",
                  {
                    "aria-label": "toggle color picker dialog",
                    className: "UI ColorPicker",
                    onClick: () => {
                      const input = document.createElement("input");
                      input.type = "color";
                      input.value = themeValues.accentCol;
                      input.oninput = (e) => updateThemeColor(
                        "accentCol",
                        e.target.value
                      );
                      input.click();
                    },
                    role: "button",
                    style: { backgroundColor: themeValues.accentCol },
                    type: "button"
                  }
                )
              }
            ),
jsxRuntimeExports.jsx(
              SettingBlock,
              {
                compact: true,
                disabled: settings.thm.theme !== "Custom",
                title: "Reader Background",
                children: jsxRuntimeExports.jsx(
                  "button",
                  {
                    "aria-label": "toggle color picker dialog",
                    className: "UI ColorPicker",
                    onClick: () => {
                      const input = document.createElement("input");
                      input.type = "color";
                      input.value = themeValues.readerBg;
                      input.oninput = (e) => updateThemeColor(
                        "readerBg",
                        e.target.value
                      );
                      input.click();
                    },
                    role: "button",
                    style: { backgroundColor: themeValues.readerBg },
                    type: "button"
                  }
                )
              }
            ),
jsxRuntimeExports.jsx(
              SettingBlock,
              {
                compact: true,
                disabled: settings.thm.theme !== "Custom" || !isCustomThemeDirty(settings.thm),
                title: "",
                children: jsxRuntimeExports.jsx(
                  "button",
                  {
                    className: "reset-btn UI ResetButton",
                    onClick: resetCustomTheme,
                    type: "button",
                    children: "Reset"
                  }
                )
              }
            )
          ] }),
          settings.adv && jsxRuntimeExports.jsxs("div", { className: `UI Dummy${tab === "Advanced" ? "" : " is-hidden"}`, children: [
jsxRuntimeExports.jsx(SettingBlock, { title: "Spread mode custom page count", children: jsxRuntimeExports.jsx(
              SliderGroup,
              {
                onChange: (value) => updateSetting("adv", "spreadCount", value),
                options: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
                ticks: [
                  "1p",
                  "2p",
                  "3p",
                  "4p",
                  "5p",
                  "6p",
                  "7p",
                  "8p",
                  "9p",
                  "10p"
                ],
                value: settings.adv.spreadCount
              }
            ) }),
jsxRuntimeExports.jsx(SettingBlock, { disabled: true, title: "Spread mode custom page offset", children: jsxRuntimeExports.jsx(
              SliderGroup,
              {
                onChange: (value) => updateSetting("adv", "spreadOffset", value),
                options: [0],
                ticks: ["0p"],
                value: settings.adv.spreadOffset
              }
            ) }),
jsxRuntimeExports.jsx(SettingBlock, { title: "Number of parallel image downloads", children: jsxRuntimeExports.jsx(
              SliderGroup,
              {
                onChange: (value) => updateSetting("adv", "parallelDownloads", value),
                options: [5, 10, 15, 20, 25, 30, 35, 40, 45, 50],
                ticks: [
                  "5",
                  "10",
                  "15",
                  "20",
                  "25",
                  "30",
                  "35",
                  "40",
                  "45",
                  "50"
                ],
                value: settings.adv.parallelDownloads
              }
            ) })
          ] }),
jsxRuntimeExports.jsxs("div", { className: `UI About${tab === "About" ? "" : " is-hidden"}`, children: [
jsxRuntimeExports.jsx("p", { className: "muted", children: " " }),
jsxRuntimeExports.jsx("p", { className: "muted", children: " " }),
jsxRuntimeExports.jsx("p", { className: "muted", children: "Powered by" }),
jsxRuntimeExports.jsx("div", { className: "cubari", children: jsxRuntimeExports.jsx("div", {}) }),
jsxRuntimeExports.jsx("hr", {}),
jsxRuntimeExports.jsx("p", { children: "Reader code: Cubari.moe" }),
jsxRuntimeExports.jsx("p", { children: "Userscript: Zennomi" }),
jsxRuntimeExports.jsx("hr", {}),
jsxRuntimeExports.jsx(
              "a",
              {
                href: "https://github.com/zennomi/truyendrive",
                rel: "noreferrer",
                target: "_blank",
                children: "github"
              }
            ),
jsxRuntimeExports.jsx("hr", {}),
jsxRuntimeExports.jsx("p", { style: { maxWidth: "15em", textAlign: "center", lineHeight: 1.5 }, children: "TruyenDrive does not host any of the content you are viewing. Just like your computer does not store or own all the images you see on the internet, TruyenDrive is doing the same thing. We are simply a service that lets you view other data on the internet using our custom UI." })
          ] })
        ] });
      }
      function SettingsModal({
        activeTab,
        onClose,
        onTabChange,
        open,
        resetCustomTheme,
        settings,
        updateSetting
      }) {
        if (!open) {
          return null;
        }
        const tabs = [
          "Reader",
          "Behavior",
          "Layout",
          "Themes",
          "Advanced",
          "About"
        ];
        return jsxRuntimeExports.jsx(
          "div",
          {
            className: "LodaManager",
            onMouseDown: (event) => {
              if (event.target === event.currentTarget) {
                onClose();
              }
            },
            children: jsxRuntimeExports.jsxs(
              "div",
              {
                className: "Loda-window UI Loda Loda_Settings",
                onMouseDown: (event) => event.stopPropagation(),
                role: "dialog",
                tabIndex: -1,
                children: [
jsxRuntimeExports.jsxs("aside", { children: [
jsxRuntimeExports.jsx("button", { className: "ico-btn close", onClick: onClose, type: "button" }),
jsxRuntimeExports.jsx("header", { children: "Settings" }),
jsxRuntimeExports.jsx("div", { className: "settings-tabs UI List Selector Tabs", children: tabs.map((tab) => jsxRuntimeExports.jsxs(
                      "div",
                      {
                        className: `UI Tab IconTab${activeTab === tab ? " is-active" : ""}`,
                        "data-name": tab,
                        onClick: () => onTabChange(tab),
                        role: "button",
                        tabIndex: 0,
                        children: [
jsxRuntimeExports.jsx("i", { className: "ico-btn" }),
jsxRuntimeExports.jsx("span", { children: tab }),
jsxRuntimeExports.jsx("i", {})
                        ]
                      },
                      tab
                    )) })
                  ] }),
jsxRuntimeExports.jsx("content", { className: "UI List Selector ContainerList", children: jsxRuntimeExports.jsx(
                    SettingsContent,
                    {
                      resetCustomTheme,
                      settings,
                      tab: activeTab,
                      updateSetting
                    }
                  ) })
                ]
              }
            )
          }
        );
      }
      const ProviderContext = reactExports.createContext(
        void 0
      );
      const AUTH_USER_POLL_MS = 500;
      function ProviderProvider({
        children,
        provider: provider2
      }) {
        const [authUser, setAuthUser] = reactExports.useState(() => provider2.getAuthUser());
        const [error, setError] = reactExports.useState(
          () => provider2.getInitError()
        );
        const [isLoading, setIsLoading] = reactExports.useState(() => !provider2.isReady());
        const [isReady, setIsReady] = reactExports.useState(() => provider2.isReady());
        reactExports.useEffect(() => {
          const syncAuthUser = () => {
            const nextAuthUser = provider2.getAuthUser();
            setAuthUser(
              (currentAuthUser) => currentAuthUser === nextAuthUser ? currentAuthUser : nextAuthUser
            );
          };
          syncAuthUser();
          const intervalId = window.setInterval(syncAuthUser, AUTH_USER_POLL_MS);
          window.addEventListener("hashchange", syncAuthUser);
          window.addEventListener("popstate", syncAuthUser);
          return () => {
            window.clearInterval(intervalId);
            window.removeEventListener("hashchange", syncAuthUser);
            window.removeEventListener("popstate", syncAuthUser);
          };
        }, [provider2]);
        reactExports.useEffect(() => {
          let isCancelled = false;
          const isReadyBeforeInit = provider2.isReady();
          setError(null);
          setIsLoading(!isReadyBeforeInit);
          setIsReady(isReadyBeforeInit);
          provider2.initialize().catch(() => void 0).then(() => {
            if (isCancelled) {
              return;
            }
            setError(provider2.getInitError());
            setIsReady(provider2.isReady());
            setIsLoading(false);
          });
          return () => {
            isCancelled = true;
          };
        }, [authUser, provider2]);
        const value = reactExports.useMemo(
          () => ({
            error,
            isLoading,
            isReady,
            provider: provider2
          }),
          [error, isLoading, isReady, provider2]
        );
        return jsxRuntimeExports.jsx(ProviderContext.Provider, { value, children });
      }
      function useProvider() {
        const context = reactExports.useContext(ProviderContext);
        if (!context) {
          throw new Error("useProvider must be used within a ProviderProvider");
        }
        return context.provider;
      }
      function useProviderStatus() {
        const context = reactExports.useContext(ProviderContext);
        if (!context) {
          throw new Error("useProviderStatus must be used within a ProviderProvider");
        }
        return {
          error: context.error,
          isLoading: context.isLoading,
          isReady: context.isReady
        };
      }
      function logOpenError(message, details) {
        console.error(`[TruyenDrive] ${message}`, {
          href: window.location.href,
          host: window.location.hostname,
          ...details
        });
      }
      function mergeImages(currentImages, nextImages) {
        if (nextImages.length === 0) {
          return currentImages;
        }
        const knownIds = new Set(currentImages.map((image) => image.id));
        const mergedImages = [...currentImages];
        nextImages.forEach((image) => {
          if (!knownIds.has(image.id)) {
            knownIds.add(image.id);
            mergedImages.push(image);
          }
        });
        return mergedImages.length === currentImages.length ? currentImages : mergedImages;
      }
      function mergeChapters(currentChapters, nextChapters) {
        if (nextChapters.length === 0) {
          return currentChapters;
        }
        const knownIds = new Set(currentChapters.map((chapter) => chapter.id));
        const mergedChapters = [...currentChapters];
        nextChapters.forEach((chapter) => {
          if (!knownIds.has(chapter.id)) {
            knownIds.add(chapter.id);
            mergedChapters.push(chapter);
          }
        });
        return mergedChapters.length === currentChapters.length ? currentChapters : mergedChapters;
      }
      function useComicMode({
        beginReaderSession,
        initialChapterId = null,
        initialPage = -1,
        onResetPassword,
        onResetUi,
        resetHistoryState
      }) {
        const provider2 = useProvider();
        const {
          error: providerError,
          isLoading: isProviderLoading,
          isReady: isProviderReady
        } = useProviderStatus();
        const [activeResource, setActiveResource] = reactExports.useState(
          null
        );
        const activeFolderId = activeResource?.id ?? null;
        const [activeChapterIndex, setActiveChapterIndex] = reactExports.useState(0);
        const [chapters, setChapters] = reactExports.useState([]);
        const [folderDetails, setFolderDetails] = reactExports.useState(
          null
        );
        const [folderMode, setFolderMode] = reactExports.useState(null);
        const [folderPassword, setFolderPassword] = reactExports.useState(null);
        const [folderEncryptionMethod, setFolderEncryptionMethod] = reactExports.useState(null);
        const [images, setImages] = reactExports.useState([]);
        const [isAutoOpening, setIsAutoOpening] = reactExports.useState(
          initialChapterId !== null || initialPage >= 0
        );
        const [isFolderScanComplete, setIsFolderScanComplete] = reactExports.useState(false);
        const [isModePickerOpen, setIsModePickerOpen] = reactExports.useState(false);
        const [isOpen, setIsOpen] = reactExports.useState(false);
        const [parentChapters, setParentChapters] = reactExports.useState([]);
        const [statusMessage, setStatusMessage] = reactExports.useState("Ready");
        const activeFetchIdRef = reactExports.useRef(0);
        const chaptersRef = reactExports.useRef([]);
        const firstPageCacheRef = reactExports.useRef(null);
        const imagesRef = reactExports.useRef([]);
        const initialChapterIdRef = reactExports.useRef(initialChapterId);
        const initialPageRef = reactExports.useRef(initialPage);
        const initialReaderOpenAttemptedRef = reactExports.useRef(false);
        const initialChapterOpenAttemptedRef = reactExports.useRef(false);
        const cancelFetchLoop = reactExports.useCallback(() => {
          activeFetchIdRef.current += 1;
        }, []);
        const replaceImages = reactExports.useCallback((nextImages) => {
          imagesRef.current = nextImages;
          setImages(nextImages);
        }, []);
        const replaceChapters = reactExports.useCallback((nextChapters) => {
          chaptersRef.current = nextChapters;
          setChapters(nextChapters);
        }, []);
        const resetParentChapterState = reactExports.useCallback(() => {
          setActiveChapterIndex(0);
          setParentChapters([]);
        }, []);
        const resetReaderState = reactExports.useCallback(
          (restoreHistoryUrl = false) => {
            cancelFetchLoop();
            firstPageCacheRef.current = null;
            onResetPassword();
            onResetUi();
            setActiveResource(null);
            resetParentChapterState();
            replaceChapters([]);
            setFolderDetails(null);
            setFolderMode(null);
            setFolderEncryptionMethod(null);
            setFolderPassword(null);
            setIsAutoOpening(false);
            setIsFolderScanComplete(false);
            setIsModePickerOpen(false);
            replaceImages([]);
            setIsOpen(false);
            setStatusMessage("Reader closed");
            resetHistoryState(restoreHistoryUrl);
          },
          [
            cancelFetchLoop,
            onResetPassword,
            onResetUi,
            replaceChapters,
            replaceImages,
            resetHistoryState,
            resetParentChapterState
          ]
        );
        const closeComicMode = reactExports.useCallback(() => {
          resetReaderState(true);
        }, [resetReaderState]);
        const getOpenStatusMessage = reactExports.useEffectEvent(() => {
          if (isProviderLoading) {
            return "Loading account...";
          }
          if (isProviderReady) {
            return "Detecting folder contents...";
          }
          return providerError?.message ?? "Loading account...";
        });
        const openComicMode = reactExports.useCallback(
          (restorePage = -1) => {
            const resource = provider2.getResourceFromUrl();
            if (!resource) {
              logOpenError("Failed to open reader: no supported resource found", {});
              window.alert("Please open a folder or PDF file first.");
              return;
            }
            beginReaderSession(restorePage);
            cancelFetchLoop();
            firstPageCacheRef.current = null;
            onResetPassword();
            setActiveResource(resource);
            resetParentChapterState();
            replaceChapters([]);
            setFolderDetails(null);
            setFolderMode(resource.kind === "pdf" ? "images" : null);
            setFolderEncryptionMethod(null);
            setFolderPassword(null);
            setIsFolderScanComplete(false);
            setIsModePickerOpen(false);
            replaceImages([]);
            setIsOpen(resource.kind === "pdf");
            setStatusMessage(
              resource.kind === "pdf" ? "Loading pages..." : getOpenStatusMessage()
            );
          },
          [
            beginReaderSession,
            cancelFetchLoop,
            getOpenStatusMessage,
            onResetPassword,
            provider2,
            replaceChapters,
            replaceImages,
            resetParentChapterState
          ]
        );
        reactExports.useEffect(() => {
          if (initialReaderOpenAttemptedRef.current) {
            return;
          }
          if (!initialChapterIdRef.current && initialPageRef.current < 0) {
            setIsAutoOpening(false);
            return;
          }
          if (!provider2.getResourceFromUrl()) {
            setIsAutoOpening(false);
            return;
          }
          initialReaderOpenAttemptedRef.current = true;
          openComicMode(initialPageRef.current);
        }, [openComicMode, provider2]);
        const openChapter = reactExports.useCallback(
          (chapter, nextParentChapters = [], nextActiveChapterIndex = 0) => {
            cancelFetchLoop();
            firstPageCacheRef.current = null;
            setActiveResource({ id: chapter.id, kind: chapter.kind });
            setActiveChapterIndex(nextActiveChapterIndex);
            setParentChapters(nextParentChapters);
            replaceChapters([]);
            setFolderMode("images");
            setIsFolderScanComplete(false);
            setIsModePickerOpen(false);
            replaceImages([]);
            setIsOpen(true);
            setStatusMessage("Loading pages...");
          },
          [cancelFetchLoop, replaceChapters, replaceImages]
        );
        const goToChapterAtIndex = reactExports.useCallback(
          (index) => {
            if (parentChapters.length === 0) {
              return;
            }
            const nextIndex = Math.min(Math.max(index, 0), parentChapters.length - 1);
            const targetChapter = parentChapters[nextIndex];
            if (!targetChapter) {
              return;
            }
            if (targetChapter.id === activeFolderId && nextIndex === activeChapterIndex) {
              return;
            }
            openChapter(targetChapter, parentChapters, nextIndex);
          },
          [activeChapterIndex, activeFolderId, openChapter, parentChapters]
        );
        const goToAdjacentChapter = reactExports.useCallback(
          (delta) => {
            if (parentChapters.length <= 1) {
              return;
            }
            goToChapterAtIndex(activeChapterIndex + delta);
          },
          [activeChapterIndex, goToChapterAtIndex, parentChapters.length]
        );
        const selectMode = reactExports.useCallback(
          (mode) => {
            const cachedPage = firstPageCacheRef.current;
            if (!cachedPage || cachedPage.resourceId !== activeFolderId) {
              return;
            }
            resetParentChapterState();
            replaceChapters([]);
            replaceImages([]);
            setFolderMode(mode);
            setIsFolderScanComplete(false);
            setIsModePickerOpen(false);
            setIsOpen(false);
            setStatusMessage(
              mode === "chapters" ? "Loading chapters..." : "Loading pages..."
            );
          },
          [activeFolderId, replaceChapters, replaceImages, resetParentChapterState]
        );
        const applyPasswordMetadata = reactExports.useCallback((page) => {
          if (page.password !== null) {
            setFolderPassword((current) => current ?? page.password);
          }
          if (page.encryptionMethod !== null) {
            setFolderEncryptionMethod((current) => current ?? page.encryptionMethod);
          }
        }, []);
        reactExports.useEffect(() => {
          if (!activeResource) {
            return;
          }
          const resourceId = activeResource.id;
          if (isProviderLoading) {
            setStatusMessage("Loading account...");
            return;
          }
          if (!isProviderReady) {
            logOpenError("Failed to open reader: provider is not ready", {
              resourceId,
              error: providerError
            });
            setIsAutoOpening(false);
            setStatusMessage(providerError?.message ?? "Failed to load account");
            return;
          }
          const fetchId = activeFetchIdRef.current + 1;
          activeFetchIdRef.current = fetchId;
          let isCancelled = false;
          const loadFolderDetails = (nextResourceId) => {
            void provider2.fetchFolderDetails(nextResourceId).then((details) => {
              if (isCancelled || activeFetchIdRef.current !== fetchId) {
                return;
              }
              setFolderDetails(details);
            }).catch(() => {
              if (isCancelled || activeFetchIdRef.current !== fetchId) {
                return;
              }
              setFolderDetails(null);
            });
          };
          const processImages = async (initialPage2, initialCursor) => {
            let page = initialPage2;
            let cursor = initialCursor;
            setIsOpen(true);
            setIsAutoOpening(false);
            setFolderDetails(null);
            loadFolderDetails(resourceId);
            while (!isCancelled && activeFetchIdRef.current === fetchId) {
              applyPasswordMetadata(page);
              const mergedImages = mergeImages(imagesRef.current, page.images);
              if (mergedImages !== imagesRef.current) {
                replaceImages(mergedImages);
              }
              const pageCount = mergedImages.length;
              if (!cursor) {
                setIsFolderScanComplete(true);
                setStatusMessage(
                  pageCount === 0 ? "No image files found in this folder" : `Loaded ${pageCount} page${pageCount === 1 ? "" : "s"}`
                );
                return;
              }
              setStatusMessage(
                pageCount === 0 ? "Loading pages..." : `Loaded ${pageCount} page${pageCount === 1 ? "" : "s"}...`
              );
              const [nextPage, nextCursor] = await provider2.fetchFolderPage(
                resourceId,
                cursor
              );
              if (isCancelled || activeFetchIdRef.current !== fetchId) {
                return;
              }
              page = nextPage;
              cursor = nextCursor ?? void 0;
            }
          };
          const processPdf = async (pdfId) => {
            setIsAutoOpening(false);
            setIsFolderScanComplete(false);
            setFolderDetails(null);
            loadFolderDetails(pdfId);
            const pdfImages = await provider2.fetchPdfImages(pdfId);
            if (isCancelled || activeFetchIdRef.current !== fetchId) {
              return;
            }
            replaceImages(pdfImages);
            setIsFolderScanComplete(true);
            setStatusMessage(
              pdfImages.length === 0 ? "No pages found in this PDF" : `Loaded ${pdfImages.length} page${pdfImages.length === 1 ? "" : "s"}`
            );
          };
          const processChapters = async (initialPage2, initialCursor) => {
            let page = initialPage2;
            let cursor = initialCursor;
            setIsOpen(false);
            setIsFolderScanComplete(false);
            setFolderDetails(null);
            loadFolderDetails(resourceId);
            while (!isCancelled && activeFetchIdRef.current === fetchId) {
              applyPasswordMetadata(page);
              const mergedChapters = mergeChapters(
                chaptersRef.current,
                page.chapters
              );
              if (mergedChapters !== chaptersRef.current) {
                replaceChapters(mergedChapters);
              }
              const chapterCount = mergedChapters.length;
              if (!cursor) {
                setIsFolderScanComplete(true);
                setStatusMessage(
                  chapterCount === 0 ? "No chapter folders found in this folder" : `Loaded ${chapterCount} chapter${chapterCount === 1 ? "" : "s"}`
                );
                return;
              }
              setStatusMessage(
                chapterCount === 0 ? "Loading chapters..." : `Loaded ${chapterCount} chapter${chapterCount === 1 ? "" : "s"}...`
              );
              const [nextPage, nextCursor] = await provider2.fetchFolderPage(
                resourceId,
                cursor
              );
              if (isCancelled || activeFetchIdRef.current !== fetchId) {
                return;
              }
              page = nextPage;
              cursor = nextCursor ?? void 0;
            }
          };
          const loadItems = async () => {
            try {
              const cachedFirstPage = firstPageCacheRef.current;
              if (activeResource.kind === "pdf") {
                await processPdf(activeResource.id);
                return;
              }
              if (folderMode && cachedFirstPage?.resourceId === resourceId) {
                firstPageCacheRef.current = null;
                if (folderMode === "chapters") {
                  await processChapters(
                    cachedFirstPage.page,
                    cachedFirstPage.nextCursor
                  );
                } else {
                  await processImages(
                    cachedFirstPage.page,
                    cachedFirstPage.nextCursor
                  );
                }
                return;
              }
              const [page, nextCursor] = await provider2.fetchFolderPage(
                activeResource.id,
                void 0
              );
              if (isCancelled || activeFetchIdRef.current !== fetchId) {
                return;
              }
              applyPasswordMetadata(page);
              if (folderMode === null) {
                if (page.isEmpty) {
                  firstPageCacheRef.current = null;
                  setIsAutoOpening(false);
                  setIsFolderScanComplete(true);
                  setStatusMessage("No files found in this folder");
                  return;
                }
                firstPageCacheRef.current = {
                  resourceId,
                  page,
                  nextCursor: nextCursor ?? void 0
                };
                if (page.isMixed) {
                  if (initialChapterIdRef.current || initialPageRef.current >= 0) {
                    const initialMode = initialChapterIdRef.current && initialChapterIdRef.current !== resourceId ? "chapters" : "images";
                    setIsModePickerOpen(false);
                    setFolderMode(initialMode);
                    setStatusMessage(
                      initialMode === "chapters" ? "Loading chapters..." : "Loading pages..."
                    );
                    return;
                  }
                  setIsAutoOpening(false);
                  setIsFolderScanComplete(true);
                  setIsModePickerOpen(true);
                  setStatusMessage("Choose how to open this folder");
                  return;
                }
                const classification = page.chapters.length > 0 ? "chapters" : "images";
                setIsModePickerOpen(false);
                setFolderMode(classification);
                setIsFolderScanComplete(false);
                setStatusMessage(
                  classification === "chapters" ? "Loading chapters..." : "Loading pages..."
                );
                return;
              }
              if (folderMode === "chapters") {
                await processChapters(page, nextCursor ?? void 0);
              } else {
                await processImages(page, nextCursor ?? void 0);
              }
            } catch (error) {
              if (isCancelled || activeFetchIdRef.current !== fetchId) {
                return;
              }
              logOpenError("Failed to load folder items", {
                resourceId,
                activeResource,
                error,
                folderMode
              });
              setIsAutoOpening(false);
              setStatusMessage(
                error instanceof Error ? error.message : "Failed to load folder items"
              );
            }
          };
          void loadItems();
          return () => {
            isCancelled = true;
            if (activeFetchIdRef.current === fetchId) {
              activeFetchIdRef.current += 1;
            }
          };
        }, [
          activeResource,
          applyPasswordMetadata,
          folderMode,
          isProviderLoading,
          isProviderReady,
          provider2,
          providerError,
          replaceChapters,
          replaceImages
        ]);
        reactExports.useEffect(() => {
          const targetChapterId = initialChapterIdRef.current;
          if (!targetChapterId || initialChapterOpenAttemptedRef.current || folderMode !== "chapters" || !isFolderScanComplete || isOpen) {
            return;
          }
          const chapterIndex = chapters.findIndex(
            (chapter2) => chapter2.id === targetChapterId
          );
          if (chapterIndex === -1) {
            setIsAutoOpening(false);
            return;
          }
          const chapter = chapters[chapterIndex];
          if (!chapter) {
            setIsAutoOpening(false);
            return;
          }
          initialChapterOpenAttemptedRef.current = true;
          setIsAutoOpening(false);
          openChapter(chapter, chapters, chapterIndex);
        }, [chapters, folderMode, isFolderScanComplete, isOpen, openChapter]);
        reactExports.useEffect(() => {
          if (!isAutoOpening || !isFolderScanComplete || isOpen) {
            return;
          }
          if (!initialChapterIdRef.current || folderMode !== "chapters") {
            setIsAutoOpening(false);
          }
        }, [folderMode, isAutoOpening, isFolderScanComplete, isOpen]);
        reactExports.useEffect(
          () => () => {
            cancelFetchLoop();
          },
          [cancelFetchLoop]
        );
        return {
          activeFolderId,
          activeChapterIndex,
          chapters,
          closeComicMode,
          folderDetails,
          folderEncryptionMethod,
          folderMode,
          folderPassword,
          goToAdjacentChapter,
          goToChapterAtIndex,
          images,
          isAutoOpening,
          isModePickerOpen,
          isOpen,
          openChapter,
          openComicMode,
          parentChapters,
          resetReaderState,
          selectMode,
          statusMessage
        };
      }
      const READER_STICKY_CLASS = "stick";
      function getReaderStickyElements(main) {
        return {
          buffer: main.querySelector(".rdr-aside-buffer"),
          header: main.querySelector("header"),
          selector: main.querySelector(".rdr-selector")
        };
      }
      function getReaderStickyOffset(main) {
        if (!main?.classList.contains(READER_STICKY_CLASS)) {
          return 0;
        }
        const { header, selector } = getReaderStickyElements(main);
        return (header?.offsetHeight ?? 0) + (selector?.offsetHeight ?? 0);
      }
      function isScrollableY(element) {
        const styles = window.getComputedStyle(element);
        return element.scrollHeight > element.clientHeight && /(auto|scroll|overlay)/.test(styles.overflowY);
      }
      function addUniqueTarget(targets, target) {
        if (target && !targets.includes(target)) {
          targets.push(target);
        }
      }
      function useReaderControls({
        activeGroupIndex,
        displayGroups,
        groupRefs,
        imageWrapRef,
        mainRef,
        scrollContainerRef,
        isScrollReady,
        isOpen,
        setActiveGroupIndex,
        settings,
        supportsZoomOverlay
      }) {
        const [hoverEdge, setHoverEdge] = reactExports.useState(null);
        const [isSelectorVisible, setIsSelectorVisible] = reactExports.useState(false);
        const [isZoomVisible, setIsZoomVisible] = reactExports.useState(false);
        const selectorHideTimeoutRef = reactExports.useRef(null);
        const zoomHideTimeoutRef = reactExports.useRef(null);
        const clearSelectorHideTimer = reactExports.useCallback(() => {
          if (selectorHideTimeoutRef.current !== null) {
            window.clearTimeout(selectorHideTimeoutRef.current);
            selectorHideTimeoutRef.current = null;
          }
        }, []);
        const clearZoomHideTimer = reactExports.useCallback(() => {
          if (zoomHideTimeoutRef.current !== null) {
            window.clearTimeout(zoomHideTimeoutRef.current);
            zoomHideTimeoutRef.current = null;
          }
        }, []);
        const resetControls = reactExports.useCallback(() => {
          clearSelectorHideTimer();
          clearZoomHideTimer();
          setHoverEdge(null);
          setIsSelectorVisible(false);
          setIsZoomVisible(false);
        }, [clearSelectorHideTimer, clearZoomHideTimer]);
        const showPageSelector = reactExports.useCallback(() => {
          clearSelectorHideTimer();
          if (settings.apr.selPinned) {
            setIsSelectorVisible(false);
            return;
          }
          setIsSelectorVisible(true);
          selectorHideTimeoutRef.current = window.setTimeout(() => {
            setIsSelectorVisible(false);
            selectorHideTimeoutRef.current = null;
          }, 3e3);
        }, [clearSelectorHideTimer, settings.apr.selPinned]);
        const showZoomControls = reactExports.useCallback(() => {
          clearZoomHideTimer();
          if (!supportsZoomOverlay) {
            setIsZoomVisible(false);
            return;
          }
          setIsZoomVisible(true);
          zoomHideTimeoutRef.current = window.setTimeout(() => {
            setIsZoomVisible(false);
            zoomHideTimeoutRef.current = null;
          }, 3e3);
        }, [clearZoomHideTimer, supportsZoomOverlay]);
        const getTtbScroller = reactExports.useCallback(() => {
          const candidates = [
            scrollContainerRef?.current,
            mainRef?.current,
            imageWrapRef.current
          ];
          return candidates.find(
            (candidate) => candidate !== null && candidate !== void 0 && isScrollableY(candidate)
          ) ?? scrollContainerRef?.current ?? mainRef?.current ?? imageWrapRef.current;
        }, [imageWrapRef, mainRef, scrollContainerRef]);
        const scrollToGroup = reactExports.useCallback(
          (index, behavior = "smooth") => {
            const target = groupRefs.current[index];
            if (!target) {
              return;
            }
            setActiveGroupIndex(index);
            if (settings.lyt.direction === "ttb") {
              const scroller = getTtbScroller();
              if (!scroller) {
                target.scrollIntoView({ behavior, block: "start" });
                return;
              }
              const scrollerBounds = scroller.getBoundingClientRect();
              const targetBounds = target.getBoundingClientRect();
              const stickyOffset = getReaderStickyOffset(mainRef?.current);
              scroller.scrollTo({
                behavior,
                top: scroller.scrollTop + targetBounds.top - scrollerBounds.top - stickyOffset
              });
              return;
            }
            target.scrollIntoView({ behavior, block: "nearest", inline: "start" });
            if (settings.bhv.resetScroll) {
              target.scrollTop = 0;
            }
          },
          [
            getTtbScroller,
            groupRefs,
            mainRef,
            setActiveGroupIndex,
            settings.bhv.resetScroll,
            settings.lyt.direction
          ]
        );
        const syncActiveGroupFromScroll = reactExports.useCallback(() => {
          const scroller = settings.lyt.direction === "ttb" ? getTtbScroller() : imageWrapRef.current;
          if (!isScrollReady || !scroller || displayGroups.length === 0) {
            return;
          }
          if (settings.lyt.direction === "ttb") {
            const scrollerBounds = scroller.getBoundingClientRect();
            const targetY = scrollerBounds.top + getReaderStickyOffset(mainRef?.current) + 1;
            let closestIndex = 0;
            let closestDistance = Number.POSITIVE_INFINITY;
            groupRefs.current.forEach((group, index) => {
              if (!group) {
                return;
              }
              const groupBounds = group.getBoundingClientRect();
              if (groupBounds.top <= targetY && groupBounds.bottom > targetY) {
                closestIndex = index;
                closestDistance = 0;
                return;
              }
              const distance = Math.abs(groupBounds.top - targetY);
              if (closestDistance !== 0 && distance < closestDistance) {
                closestDistance = distance;
                closestIndex = index;
              }
            });
            if (closestIndex !== activeGroupIndex) {
              setActiveGroupIndex(closestIndex);
            }
            return;
          }
          const nextIndex = clampIndex(
            Math.round(scroller.scrollLeft / Math.max(scroller.clientWidth, 1)),
            displayGroups.length - 1
          );
          if (nextIndex !== activeGroupIndex) {
            setActiveGroupIndex(nextIndex);
          }
        }, [
          activeGroupIndex,
          displayGroups.length,
          getTtbScroller,
          groupRefs,
          imageWrapRef,
          isScrollReady,
          mainRef,
          setActiveGroupIndex,
          settings.lyt.direction
        ]);
        reactExports.useEffect(() => {
          if (!isOpen || !isScrollReady || settings.lyt.direction !== "ttb" || displayGroups.length === 0) {
            return;
          }
          const targets = [];
          addUniqueTarget(targets, scrollContainerRef?.current);
          addUniqueTarget(targets, mainRef?.current);
          addUniqueTarget(targets, imageWrapRef.current);
          let ancestor = groupRefs.current.find((group) => group !== null)?.parentElement ?? null;
          while (ancestor) {
            if (isScrollableY(ancestor)) {
              addUniqueTarget(targets, ancestor);
            }
            ancestor = ancestor.parentElement;
          }
          addUniqueTarget(targets, window);
          const handleScroll = () => {
            syncActiveGroupFromScroll();
          };
          targets.forEach((target) => {
            target.addEventListener("scroll", handleScroll, { passive: true });
          });
          handleScroll();
          return () => {
            targets.forEach((target) => {
              target.removeEventListener("scroll", handleScroll);
            });
          };
        }, [
          displayGroups.length,
          groupRefs,
          imageWrapRef,
          isOpen,
          isScrollReady,
          mainRef,
          scrollContainerRef,
          settings.lyt.direction,
          syncActiveGroupFromScroll
        ]);
        const goToAdjacentGroup = reactExports.useCallback(
          (delta) => {
            if (displayGroups.length === 0) {
              return;
            }
            const nextIndex = clampIndex(
              activeGroupIndex + delta,
              displayGroups.length - 1
            );
            scrollToGroup(nextIndex);
          },
          [activeGroupIndex, displayGroups.length, scrollToGroup]
        );
        const performVerticalStep = reactExports.useCallback(
          (direction) => {
            const scroller = imageWrapRef.current;
            if (!scroller) {
              return;
            }
            scroller.scrollBy({
              behavior: "smooth",
              top: direction * settings.bhv.scrollYDelta * 8
            });
          },
          [imageWrapRef, settings.bhv.scrollYDelta]
        );
        const performVerticalPageTurn = reactExports.useCallback(
          (direction) => {
            const scroller = imageWrapRef.current;
            if (!scroller) {
              return;
            }
            scroller.scrollBy({
              behavior: "smooth",
              top: direction * Math.max(scroller.clientHeight * 0.9, settings.bhv.scrollYDelta * 8)
            });
          },
          [imageWrapRef, settings.bhv.scrollYDelta]
        );
        reactExports.useEffect(() => {
          if (!isOpen) {
            resetControls();
          }
        }, [isOpen, resetControls]);
        reactExports.useEffect(
          () => () => {
            clearSelectorHideTimer();
            clearZoomHideTimer();
          },
          [clearSelectorHideTimer, clearZoomHideTimer]
        );
        return {
          goToAdjacentGroup,
          hoverEdge,
          isSelectorVisible,
          isZoomVisible,
          performVerticalPageTurn,
          performVerticalStep,
          scrollToGroup,
          setHoverEdge,
          showPageSelector,
          showZoomControls,
          syncActiveGroupFromScroll
        };
      }
      function useReaderHistory({
        activeChapterId,
        activePage,
        currentPageRef,
        displayGroups,
        historyPageRef,
        imageIds,
        isHandlingPopStateRef,
        isOpen,
        readerTitle,
        resetReaderState,
        scrollToGroup,
        settings
      }) {
        const handlePopState = reactExports.useEffectEvent((event) => {
          if (isReaderHistoryState(event.state)) {
            if (!isOpen || displayGroups.length === 0) {
              return;
            }
            const targetPage = clampIndex(event.state.page, imageIds.length - 1);
            const targetGroupIndex = findGroupIndexForPage(displayGroups, targetPage);
            isHandlingPopStateRef.current = true;
            currentPageRef.current = targetPage;
            historyPageRef.current = targetPage;
            document.title = buildPageTitle(readerTitle, targetPage);
            scrollToGroup(targetGroupIndex === -1 ? 0 : targetGroupIndex, "auto");
            requestAnimationFrame(() => {
              isHandlingPopStateRef.current = false;
            });
            return;
          }
          if (isOpen) {
            resetReaderState(false);
          }
        });
        reactExports.useEffect(() => {
          if (!isOpen || displayGroups.length === 0) {
            return;
          }
          if (settings.bhv.historyUpdate === "none") {
            return;
          }
          const title = buildPageTitle(readerTitle, activePage);
          if (isHandlingPopStateRef.current) {
            document.title = title;
            historyPageRef.current = activePage;
            return;
          }
          const nextState = {
            page: activePage,
            truyendriveReader: true
          };
          const nextUrl = activeChapterId ? buildChapterStateUrl(window.location.href, activeChapterId, activePage) : buildReaderHistoryUrl(window.location.href, activePage);
          const previousPage = historyPageRef.current;
          switch (settings.bhv.historyUpdate) {
            case "replace":
            case "chap":
              window.history.replaceState(nextState, "", nextUrl);
              break;
            case "jump":
              if (previousPage === null || Math.abs(previousPage - activePage) > 2) {
                window.history.pushState(nextState, "", nextUrl);
              } else {
                window.history.replaceState(nextState, "", nextUrl);
              }
              break;
            case "all":
              if (previousPage !== activePage) {
                window.history.pushState(nextState, "", nextUrl);
              } else {
                window.history.replaceState(nextState, "", nextUrl);
              }
              break;
          }
          historyPageRef.current = activePage;
          document.title = title;
        }, [
          activePage,
          activeChapterId,
          displayGroups,
          historyPageRef,
          isHandlingPopStateRef,
          isOpen,
          readerTitle,
          settings.bhv.historyUpdate
        ]);
        return { handlePopState };
      }
      function useInitialScroll({
        activeFolderId,
        activeGroupIndex,
        chapterStartGroupIndex,
        currentPageRef,
        displayGroups,
        groupRefs,
        isOpen,
        setActiveGroupIndex,
        setIsScrollReady,
        settings
      }) {
        const initialScrollFolderIdRef = reactExports.useRef(null);
        reactExports.useLayoutEffect(() => {
          if (!isOpen || !activeFolderId) {
            initialScrollFolderIdRef.current = null;
            return;
          }
          if (initialScrollFolderIdRef.current === activeFolderId || displayGroups.length === 0) {
            return;
          }
          const targetPage = currentPageRef.current;
          const matchingIndex = targetPage < 0 ? -1 : findGroupIndexForPage(displayGroups, targetPage);
          const nextIndex = matchingIndex === -1 ? chapterStartGroupIndex : matchingIndex;
          const targetGroup = groupRefs.current[nextIndex];
          initialScrollFolderIdRef.current = activeFolderId;
          if (activeGroupIndex !== nextIndex) {
            setActiveGroupIndex(nextIndex);
          }
          if (targetGroup) {
            if (settings.lyt.direction === "ttb") {
              targetGroup.scrollIntoView({ behavior: "auto", block: "start" });
            } else {
              targetGroup.scrollIntoView({
                behavior: "auto",
                block: "nearest",
                inline: "start"
              });
              if (settings.bhv.resetScroll) {
                targetGroup.scrollTop = 0;
              }
            }
          }
          setIsScrollReady(true);
        }, [
          activeFolderId,
          displayGroups,
          isOpen,
          chapterStartGroupIndex,
          settings.bhv.resetScroll,
          settings.lyt.fit,
          settings.lyt.direction,
          settings.lyt.spread
        ]);
      }
      const scriptRel = (function detectScriptRel() {
        const relList = typeof document !== "undefined" && document.createElement("link").relList;
        return relList && relList.supports && relList.supports("modulepreload") ? "modulepreload" : "preload";
      })();
      const assetsURL = function(dep) {
        return "/" + dep;
      };
      const seen = {};
      const __vitePreload = function preload(baseModule, deps, importerUrl) {
        let promise = Promise.resolve();
        if (deps && deps.length > 0) {
          let allSettled2 = function(promises$2) {
            return Promise.all(promises$2.map((p) => Promise.resolve(p).then((value$1) => ({
              status: "fulfilled",
              value: value$1
            }), (reason) => ({
              status: "rejected",
              reason
            }))));
          };
          document.getElementsByTagName("link");
          const cspNonceMeta = document.querySelector("meta[property=csp-nonce]");
          const cspNonce = cspNonceMeta?.nonce || cspNonceMeta?.getAttribute("nonce");
          promise = allSettled2(deps.map((dep) => {
            dep = assetsURL(dep);
            if (dep in seen) return;
            seen[dep] = true;
            const isCss = dep.endsWith(".css");
            const cssSelector = isCss ? '[rel="stylesheet"]' : "";
            if (document.querySelector(`link[href="${dep}"]${cssSelector}`)) return;
            const link = document.createElement("link");
            link.rel = isCss ? "stylesheet" : scriptRel;
            if (!isCss) link.as = "script";
            link.crossOrigin = "";
            link.href = dep;
            if (cspNonce) link.setAttribute("nonce", cspNonce);
            document.head.appendChild(link);
            if (isCss) return new Promise((res, rej) => {
              link.addEventListener("load", res);
              link.addEventListener("error", () => rej( new Error(`Unable to preload CSS for ${dep}`)));
            });
          }));
        }
        function handlePreloadError(err$2) {
          const e$1 = new Event("vite:preloadError", { cancelable: true });
          e$1.payload = err$2;
          window.dispatchEvent(e$1);
          if (!e$1.defaultPrevented) throw err$2;
        }
        return promise.then((res) => {
          for (const item of res || []) {
            if (item.status !== "rejected") continue;
            handlePreloadError(item.reason);
          }
          return baseModule().catch(handlePreloadError);
        });
      };
      function cyrb128(str) {
        let h1 = 1779033703;
        let h2 = 3144134277;
        let h3 = 1013904242;
        let h4 = 2773480762;
        for (let i = 0; i < str.length; i += 1) {
          const k = str.charCodeAt(i);
          h1 = h2 ^ Math.imul(h1 ^ k, 597399067);
          h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);
          h3 = h4 ^ Math.imul(h3 ^ k, 951274213);
          h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);
        }
        h1 = Math.imul(h3 ^ h1 >>> 18, 597399067);
        h2 = Math.imul(h4 ^ h2 >>> 22, 2869860233);
        h3 = Math.imul(h1 ^ h3 >>> 17, 951274213);
        h4 = Math.imul(h2 ^ h4 >>> 19, 2716044179);
        return (h1 ^ h2 ^ h3 ^ h4) >>> 0;
      }
      function mulberry32(seed) {
        let a = seed;
        return () => {
          a += 1831565813;
          let t = Math.imul(a ^ a >>> 15, a | 1);
          t ^= t + Math.imul(t ^ t >>> 7, t | 61);
          return ((t ^ t >>> 14) >>> 0) / 4294967296;
        };
      }
      function loadImage(src) {
        return new Promise((resolve, reject) => {
          const img = new Image();
          img.onload = () => resolve(img);
          img.onerror = () => reject(new Error("Failed to load image blob"));
          img.src = src;
        });
      }
      async function fetchImageBlob(imageUrl, signal) {
        const response = await fetch(imageUrl, {
          credentials: "include",
          signal
        });
        if (!response.ok) {
          throw new Error(`Failed to fetch image: ${response.status}`);
        }
        return response.blob();
      }
      async function canvasToBlob(canvas) {
        if ("convertToBlob" in canvas) {
          try {
            return await canvas.convertToBlob({ type: "image/jpeg", quality: 0.9 });
          } catch (e) {
            return await canvas.convertToBlob({ type: "image/webp", quality: 0.85 });
          }
        }
        const htmlCanvas = canvas;
        const jpeg = await new Promise(
          (resolve) => htmlCanvas.toBlob(resolve, "image/jpeg", 0.9)
        );
        if (jpeg) {
          return jpeg;
        }
        return new Promise(
          (resolve, reject) => htmlCanvas.toBlob(
            (blob) => blob ? resolve(blob) : reject(new Error("toBlob failed")),
            "image/webp"
          )
        );
      }
      async function decryptImageBuffer(imageUrl, password, method, signal) {
        const blob = await fetchImageBlob(imageUrl, signal);
        let imgBitmap;
        let objectUrl;
        let img;
        let workerModule = null;
        try {
          if (typeof Worker !== "undefined") {
            workerModule = await __vitePreload(() => module.import('./decryptWorker-DYbJWN8U-BOfDuyZ4.js'), true ? void 0 : void 0);
          }
        } catch {
        }
        try {
          if (typeof createImageBitmap !== "undefined") {
            imgBitmap = await createImageBitmap(blob);
          } else {
            objectUrl = URL.createObjectURL(blob);
            img = await loadImage(objectUrl);
          }
          const width = imgBitmap ? imgBitmap.width : img.naturalWidth || img.width;
          const height = imgBitmap ? imgBitmap.height : img.naturalHeight || img.height;
          let canvas;
          let ctx;
          if (typeof OffscreenCanvas !== "undefined") {
            canvas = new OffscreenCanvas(width, height);
            ctx = canvas.getContext("2d", {
              willReadFrequently: true
            });
          } else {
            canvas = document.createElement("canvas");
            canvas.width = width;
            canvas.height = height;
            ctx = canvas.getContext("2d", {
              willReadFrequently: true
            });
          }
          if (!ctx) {
            throw new Error("Failed to create image canvas context");
          }
          if (imgBitmap) {
            ctx.drawImage(imgBitmap, 0, 0);
          } else {
            ctx.drawImage(img, 0, 0);
          }
          const imageData = ctx.getImageData(0, 0, width, height);
          let decryptedBuffer;
          if (workerModule) {
            decryptedBuffer = await workerModule.decryptInWorker(
              imageData.data.buffer,
              password,
              method,
              width,
              height,
              signal
            );
          } else {
            decryptedBuffer = method === "scanline" ? scanlineDecryptMainThread(
              imageData.data.buffer,
              password,
              width,
              height
            ) : xorDecryptMainThread(imageData.data.buffer, password);
          }
          const decryptedData = new ImageData(
            new Uint8ClampedArray(decryptedBuffer),
            width,
            height
          );
          ctx.putImageData(decryptedData, 0, 0);
          const resultBlob = await canvasToBlob(canvas);
          return resultBlob;
        } finally {
          if (objectUrl) URL.revokeObjectURL(objectUrl);
          if (imgBitmap) imgBitmap.close();
        }
      }
      function xorDecryptMainThread(buffer, password) {
        const data = new Uint8Array(buffer);
        const rand = mulberry32(cyrb128(password));
        for (let i = 0; i < data.length; i += 4) {
          data[i] ^= Math.floor(rand() * 256);
          data[i + 1] ^= Math.floor(rand() * 256);
          data[i + 2] ^= Math.floor(rand() * 256);
        }
        return buffer;
      }
      function scanlineDecryptMainThread(buffer, password, width, height) {
        const channels = 4;
        const rowByteLength = width * channels;
        const data = new Uint8Array(buffer);
        const output = new Uint8Array(data.length);
        const rand = mulberry32(
          cyrb128(`${password}:${width}x${height}:${channels}:scanline`)
        );
        for (let row = 0; row < height; row += 1) {
          const offset = width === 0 ? 0 : Math.floor(rand() * width);
          const reverse = rand() >= 0.5;
          for (let destinationColumn = 0; destinationColumn < width; destinationColumn += 1) {
            const transformedColumn = reverse ? width - 1 - destinationColumn : destinationColumn;
            const sourceColumn = (transformedColumn + offset) % width;
            const srcStart = row * rowByteLength + sourceColumn * channels;
            const destStart = row * rowByteLength + destinationColumn * channels;
            output[destStart] = data[srcStart];
            output[destStart + 1] = data[srcStart + 1];
            output[destStart + 2] = data[srcStart + 2];
            output[destStart + 3] = data[srcStart + 3];
          }
        }
        return output.buffer;
      }
      function revokeBlobUrls(blobUrls) {
        blobUrls.forEach((url) => URL.revokeObjectURL(url));
        blobUrls.clear();
      }
      function retainImageBlobUrls(blobUrls, imageIds) {
        blobUrls.forEach((url, id) => {
          if (!imageIds.has(id)) {
            URL.revokeObjectURL(url);
            blobUrls.delete(id);
          }
        });
      }
      function useImageDecryptor(images, password, encryptionMethod, displayGroups, activeGroupIndex, initialGroupIndex, isInitialScrollDone, preloadDistance, buildFetchUrl) {
        const imageIds = reactExports.useMemo(() => images.map((image) => image.id), [images]);
        const imageIdKey = reactExports.useMemo(() => imageIds.join("\n"), [imageIds]);
        const imageById = reactExports.useMemo(
          () => new Map(images.map((image) => [image.id, image])),
          [images]
        );
        const [decryptedSrcs, setDecryptedSrcs] = reactExports.useState(
          () => new Map()
        );
        const blobUrlsRef = reactExports.useRef( new Map());
        const decryptGenerationRef = reactExports.useRef(0);
        const decryptRequestRef = reactExports.useRef(0);
        const pendingIdsRef = reactExports.useRef( new Set());
        const anchorGroupIndex = isInitialScrollDone ? activeGroupIndex : initialGroupIndex;
        reactExports.useEffect(() => {
          decryptGenerationRef.current += 1;
          pendingIdsRef.current.clear();
          revokeBlobUrls(blobUrlsRef.current);
          setDecryptedSrcs( new Map());
        }, [encryptionMethod, password]);
        reactExports.useEffect(() => {
          return () => {
            decryptGenerationRef.current += 1;
            pendingIdsRef.current.clear();
            revokeBlobUrls(blobUrlsRef.current);
          };
        }, []);
        reactExports.useEffect(() => {
          const validImageIds = new Set(imageIds);
          retainImageBlobUrls(blobUrlsRef.current, validImageIds);
          pendingIdsRef.current.forEach((id) => {
            if (!validImageIds.has(id)) {
              pendingIdsRef.current.delete(id);
            }
          });
          setDecryptedSrcs((previous) => {
            let didRemove = false;
            const next = new Map();
            previous.forEach((src, id) => {
              if (validImageIds.has(id)) {
                next.set(id, src);
              } else {
                didRemove = true;
              }
            });
            return didRemove ? next : previous;
          });
        }, [imageIdKey, imageIds]);
        reactExports.useEffect(() => {
          const decryptRequest = decryptRequestRef.current += 1;
          if (password === null || displayGroups.length === 0) {
            return;
          }
          const decryptGeneration = decryptGenerationRef.current;
          const maxDistance = getMaxGroupDistance(
            preloadDistance,
            displayGroups.length
          );
          const windowedImageIds = new Set(
            getGroupsInRange(
              displayGroups,
              anchorGroupIndex,
              maxDistance,
              true
            ).flatMap((group) => group.pages.map((page) => page.id))
          );
          const decryptImages = async () => {
            for (const id of windowedImageIds) {
              if (decryptGenerationRef.current !== decryptGeneration || decryptRequestRef.current !== decryptRequest) {
                return;
              }
              if (blobUrlsRef.current.has(id) || pendingIdsRef.current.has(id)) {
                continue;
              }
              pendingIdsRef.current.add(id);
              try {
                const image = imageById.get(id);
                if (!image) {
                  continue;
                }
                if (image.requiresDecryption === false) {
                  continue;
                }
                const blob = await decryptImageBuffer(
                  buildFetchUrl(image),
                  password,
                  encryptionMethod
                );
                if (decryptGenerationRef.current !== decryptGeneration) {
                  return;
                }
                const blobUrl = URL.createObjectURL(blob);
                blobUrlsRef.current.set(id, blobUrl);
                setDecryptedSrcs((previous) => new Map(previous).set(id, blobUrl));
                if (decryptRequestRef.current !== decryptRequest) {
                  return;
                }
              } catch (error) {
                console.error("[truyendrive] Failed to decrypt image", id, error);
              } finally {
                pendingIdsRef.current.delete(id);
              }
            }
          };
          void decryptImages();
        }, [
          anchorGroupIndex,
          displayGroups,
          encryptionMethod,
          imageById,
          buildFetchUrl,
          password,
          preloadDistance
        ]);
        return { decryptedSrcs };
      }
      function useKeyboardHandler({
        closeComicMode,
        copyShareUrl,
        cycleSetting,
        goToAdjacentChapter,
        isComicSurfaceOpen,
        isOpen,
        isSettingsOpen,
        jumpToChapterStart,
        navigateGroupOrChapter,
        performVerticalStep,
        requestPassword,
        setIsSettingsOpen,
        settings,
        toggleSetting
      }) {
        const handleKeyDown = reactExports.useEffectEvent((event) => {
          if (!isComicSurfaceOpen) {
            return;
          }
          if (event.key === "Escape") {
            if (isSettingsOpen) {
              setIsSettingsOpen(false);
            } else {
              closeComicMode();
            }
            return;
          }
          if (!isOpen) {
            return;
          }
          if (event.key === "o" || event.key === "O") {
            event.preventDefault();
            setIsSettingsOpen((current) => !current);
            return;
          }
          if (!isSettingsOpen && (event.key === "k" || event.key === "K")) {
            event.preventDefault();
            requestPassword();
            return;
          }
          if (event.key === "f" || event.key === "F") {
            event.preventDefault();
            cycleSetting("lyt", "fit", FIT_OPTIONS);
            return;
          }
          if (event.key === "d" || event.key === "D") {
            event.preventDefault();
            cycleSetting("lyt", "direction", DIRECTION_OPTIONS);
            return;
          }
          if (event.key === "q" || event.key === "Q") {
            event.preventDefault();
            cycleSetting("lyt", "spread", SPREAD_OPTIONS);
            return;
          }
          if (event.key === "l" || event.key === "L") {
            event.preventDefault();
            cycleSetting("bhv", "preload", PRELOAD_OPTIONS);
            return;
          }
          if (event.key === "n" || event.key === "N") {
            event.preventDefault();
            toggleSetting("apr", "selPinned");
            return;
          }
          if (event.key === "s" || event.key === "S") {
            event.preventDefault();
            toggleSetting("apr", "sidebar");
            return;
          }
          if (event.key === "r" || event.key === "R") {
            event.preventDefault();
            copyShareUrl();
            return;
          }
          if (event.key === "j" || event.key === "J") {
            event.preventDefault();
            jumpToChapterStart();
            return;
          }
          if (event.key === "p" || event.key === "P") {
            event.preventDefault();
            toggleSetting("apr", "previews");
            return;
          }
          if (event.key === "[") {
            event.preventDefault();
            goToAdjacentChapter(-1);
            return;
          }
          if (event.key === "]") {
            event.preventDefault();
            goToAdjacentChapter(1);
            return;
          }
          if (event.key === ".") {
            event.preventDefault();
            navigateGroupOrChapter(-1);
            return;
          }
          if (event.key === ",") {
            event.preventDefault();
            navigateGroupOrChapter(1);
            return;
          }
          if (settings.lyt.direction === "ttb") {
            if (event.key === "ArrowDown") {
              event.preventDefault();
              performVerticalStep(1);
              return;
            }
            if (event.key === "ArrowUp") {
              event.preventDefault();
              performVerticalStep(-1);
              return;
            }
            if (settings.bhv.arrowTurnPage && event.key === "ArrowRight") {
              event.preventDefault();
              navigateGroupOrChapter(1);
              return;
            }
            if (settings.bhv.arrowTurnPage && event.key === "ArrowLeft") {
              event.preventDefault();
              navigateGroupOrChapter(-1);
            }
            return;
          }
          if (event.key === "ArrowRight") {
            event.preventDefault();
            navigateGroupOrChapter(1);
            return;
          }
          if (event.key === "ArrowLeft") {
            event.preventDefault();
            navigateGroupOrChapter(-1);
          }
        });
        reactExports.useEffect(() => {
          window.addEventListener("keydown", handleKeyDown);
          return () => window.removeEventListener("keydown", handleKeyDown);
        }, [handleKeyDown]);
      }
      const MOBILE_BREAKPOINT_QUERY = "(max-width: 700px)";
      function restoreScrollAfterLayout(main, scrollTop) {
        requestAnimationFrame(() => {
          main.scrollTop = scrollTop;
        });
      }
      function useMobileTtbSticky({
        isOpen,
        isTtb,
        mainRef,
        scrollContainerRef,
        settings,
        updateSetting
      }) {
        const [isMobile, setIsMobile] = reactExports.useState(
          () => window.matchMedia(MOBILE_BREAKPOINT_QUERY).matches
        );
        const clearStickyElements = reactExports.useCallback(() => {
          const main = mainRef.current;
          if (!main) {
            return;
          }
          const { buffer, selector } = getReaderStickyElements(main);
          main.classList.remove(READER_STICKY_CLASS);
          if (selector) {
            selector.style.top = "";
          }
          if (buffer) {
            buffer.style.height = "";
          }
        }, [mainRef]);
        reactExports.useEffect(() => {
          const mediaQuery = window.matchMedia(MOBILE_BREAKPOINT_QUERY);
          const handleChange = (event) => {
            setIsMobile(event.matches);
          };
          setIsMobile(mediaQuery.matches);
          mediaQuery.addEventListener("change", handleChange);
          return () => {
            mediaQuery.removeEventListener("change", handleChange);
          };
        }, []);
        reactExports.useEffect(() => {
          if (isOpen && isMobile && isTtb) {
            return;
          }
          clearStickyElements();
          if (settings.apr.selPinned) {
            updateSetting("apr", "selPinned", false);
          }
        }, [
          clearStickyElements,
          isMobile,
          isOpen,
          isTtb,
          settings.apr.selPinned,
          updateSetting
        ]);
        const handleTtbTap = reactExports.useCallback(() => {
          const main = mainRef.current;
          if (!main) {
            return;
          }
          const { buffer, header, selector } = getReaderStickyElements(main);
          if (!header || !selector || !buffer) {
            return;
          }
          const scroller = scrollContainerRef?.current ?? main;
          const savedScroll = scroller.scrollTop;
          const nextSelPinned = !settings.apr.selPinned;
          if (nextSelPinned) {
            main.classList.add(READER_STICKY_CLASS);
            updateSetting("apr", "selPinned", true);
            const headerHeight = header.offsetHeight;
            const selectorHeight = selector.offsetHeight;
            selector.style.top = `${headerHeight}px`;
            buffer.style.height = `${headerHeight + selectorHeight}px`;
            restoreScrollAfterLayout(scroller, savedScroll);
            return;
          }
          main.classList.remove(READER_STICKY_CLASS);
          updateSetting("apr", "selPinned", false);
          selector.style.top = "";
          buffer.style.height = "";
          restoreScrollAfterLayout(scroller, savedScroll);
        }, [mainRef, scrollContainerRef, settings.apr.selPinned, updateSetting]);
        return {
          handleTtbTap,
          isMobile
        };
      }
      function useReaderPreload({
        activeGroupIndex,
        displayGroups,
        getImageUrl,
        initialGroupIndex,
        isInitialScrollDone,
        isPasswordMode,
        isOpen,
        preloadDistance
      }) {
        const preloadCacheRef = reactExports.useRef( new Map());
        const preloadImageRefs = reactExports.useRef([]);
        const resetPreloadState = reactExports.useEffectEvent(() => {
          preloadCacheRef.current.clear();
          preloadImageRefs.current.forEach((image) => {
            if (image) {
              image.removeAttribute("src");
            }
          });
        });
        const isGroupPreloaded = reactExports.useCallback(
          (index) => {
            if (isPasswordMode) {
              return false;
            }
            const maxDistance = getMaxGroupDistance(
              preloadDistance,
              displayGroups.length
            );
            const anchorGroupIndex = isInitialScrollDone ? activeGroupIndex : initialGroupIndex;
            return index >= 0 && index < displayGroups.length && Math.abs(index - anchorGroupIndex) <= maxDistance;
          },
          [
            activeGroupIndex,
            displayGroups.length,
            initialGroupIndex,
            isInitialScrollDone,
            isPasswordMode,
            preloadDistance
          ]
        );
        reactExports.useEffect(() => {
          if (!isOpen || displayGroups.length === 0) {
            resetPreloadState();
            return;
          }
          if (isPasswordMode) {
            resetPreloadState();
            return;
          }
          const maxDistance = getMaxGroupDistance(
            preloadDistance,
            displayGroups.length
          );
          const anchorGroupIndex = isInitialScrollDone ? activeGroupIndex : initialGroupIndex;
          const preloadUrls = [];
          getGroupsInRange(
            displayGroups,
            anchorGroupIndex,
            maxDistance,
            false
          ).forEach((group) => {
            group.pages.forEach((page) => {
              preloadUrls.push(getImageUrl(page));
            });
          });
          preloadUrls.forEach((url) => {
            if (preloadCacheRef.current.has(url)) {
              return;
            }
            const image = new window.Image();
            image.decoding = "async";
            image.src = url;
            preloadCacheRef.current.set(url, image);
          });
          preloadImageRefs.current.forEach((image, index) => {
            if (!image) {
              return;
            }
            const url = preloadUrls[index];
            if (url) {
              image.src = url;
            } else {
              image.removeAttribute("src");
            }
          });
        }, [
          activeGroupIndex,
          displayGroups,
          getImageUrl,
          initialGroupIndex,
          isInitialScrollDone,
          isPasswordMode,
          isOpen,
          preloadDistance,
          resetPreloadState
        ]);
        return { isGroupPreloaded, preloadImageRefs };
      }
      function getReaderBaseUrl(url) {
        const readerState = parseReaderStateFromUrl(url);
        if (readerState.page < 0 && !readerState.chapterId) {
          return url;
        }
        return clearReaderStateUrl(url);
      }
      function useReaderSession({
        currentPageRef,
        historyPageRef,
        isHandlingPopStateRef
      }) {
        const previousTitleRef = reactExports.useRef(null);
        const previousUrlRef = reactExports.useRef(null);
        const beginReaderSession = reactExports.useEffectEvent((initialPage = -1) => {
          previousTitleRef.current = document.title;
          previousUrlRef.current = getReaderBaseUrl(window.location.href);
          currentPageRef.current = initialPage;
          historyPageRef.current = null;
          isHandlingPopStateRef.current = false;
        });
        const resetHistoryState = reactExports.useEffectEvent((restoreHistoryUrl) => {
          currentPageRef.current = -1;
          historyPageRef.current = null;
          isHandlingPopStateRef.current = false;
          if (previousTitleRef.current) {
            document.title = previousTitleRef.current;
            previousTitleRef.current = null;
          }
          if (restoreHistoryUrl && previousUrlRef.current) {
            window.history.replaceState(
              window.history.state,
              "",
              previousUrlRef.current
            );
          }
          previousUrlRef.current = null;
        });
        return {
          beginReaderSession,
          resetHistoryState
        };
      }
      function useReaderUiState() {
        const [activeGroupIndex, setActiveGroupIndex] = reactExports.useState(0);
        const [imageLoadVersion, setImageLoadVersion] = reactExports.useState(0);
        const [isScrollReady, setIsScrollReady] = reactExports.useState(false);
        const [isSettingsOpen, setIsSettingsOpen] = reactExports.useState(false);
        const [loadedPageIds, setLoadedPageIds] = reactExports.useState(
          () => new Set()
        );
        const [settingsTab, setSettingsTab] = reactExports.useState("Reader");
        const resetReaderUi = reactExports.useEffectEvent(() => {
          setActiveGroupIndex(0);
          setImageLoadVersion(0);
          setIsScrollReady(false);
          setIsSettingsOpen(false);
          setLoadedPageIds( new Set());
        });
        const handlePageLoad = reactExports.useCallback((pageId) => {
          setLoadedPageIds((current) => {
            if (current.has(pageId)) {
              return current;
            }
            const next = new Set(current);
            next.add(pageId);
            return next;
          });
        }, []);
        return {
          activeGroupIndex,
          handlePageLoad,
          imageLoadVersion,
          isScrollReady,
          isSettingsOpen,
          loadedPageIds,
          resetReaderUi,
          setActiveGroupIndex,
          setImageLoadVersion,
          setIsScrollReady,
          setIsSettingsOpen,
          setSettingsTab,
          settingsTab
        };
      }
      function useWideGroupTracker({
        displayGroups,
        groupRefs,
        imageLoadVersion,
        isOpen,
        settings
      }) {
        const [tooWideGroups, setTooWideGroups] = reactExports.useState({});
        const syncWideGroupState = reactExports.useEffectEvent(() => {
          if (!isOpen || settings.lyt.fit !== "height" && settings.lyt.fit !== "height_limit") {
            setTooWideGroups(
              (current) => Object.keys(current).length === 0 ? current : {}
            );
            return;
          }
          const nextGroups = {};
          displayGroups.forEach((group, index) => {
            const wrapper = groupRefs.current[index];
            if (!wrapper) {
              return;
            }
            if (wrapper.scrollWidth > wrapper.clientWidth + 1) {
              nextGroups[group.id] = true;
            }
          });
          setTooWideGroups((current) => {
            const currentKeys = Object.keys(current);
            const nextKeys = Object.keys(nextGroups);
            if (currentKeys.length === nextKeys.length && currentKeys.every((key) => key in nextGroups)) {
              return current;
            }
            return nextGroups;
          });
        });
        reactExports.useEffect(() => {
          const frame = window.requestAnimationFrame(() => {
            syncWideGroupState();
          });
          return () => {
            window.cancelAnimationFrame(frame);
          };
        }, [
          displayGroups,
          imageLoadVersion,
          isOpen,
          settings.lyt.direction,
          settings.lyt.fit,
          settings.lyt.spread,
          settings.lyt.zoom,
          syncWideGroupState
        ]);
        reactExports.useEffect(() => {
          if (!isOpen) {
            return;
          }
          const handleResize = () => {
            syncWideGroupState();
          };
          window.addEventListener("resize", handleResize);
          return () => {
            window.removeEventListener("resize", handleResize);
          };
        }, [isOpen, syncWideGroupState]);
        return { tooWideGroups };
      }
      const errorFallbackSurfaceStyle = {
        minHeight: "100vh",
        display: "grid",
        placeItems: "center",
        padding: "32px",
        boxSizing: "border-box",
        background: "linear-gradient(180deg, rgba(11, 15, 25, 0.96), rgba(20, 27, 45, 0.96))",
        color: "#f7f9fc",
        fontFamily: '"Guya", system-ui, sans-serif'
      };
      const errorFallbackCardStyle = {
        width: "min(100%, 560px)",
        display: "grid",
        gap: "16px",
        padding: "24px",
        border: "1px solid rgba(255, 255, 255, 0.12)",
        borderRadius: "20px",
        background: "rgba(8, 12, 20, 0.88)",
        boxShadow: "0 24px 60px rgba(0, 0, 0, 0.35)"
      };
      const errorActionRowStyle = {
        display: "flex",
        flexWrap: "wrap",
        gap: "12px"
      };
      const primaryErrorActionStyle = {
        border: "none",
        borderRadius: "999px",
        padding: "11px 18px",
        background: "#f4f7ff",
        color: "#09101d",
        font: "inherit",
        fontWeight: 700,
        cursor: "pointer"
      };
      const secondaryErrorActionStyle = {
        ...primaryErrorActionStyle,
        background: "transparent",
        color: "#f7f9fc",
        border: "1px solid rgba(255, 255, 255, 0.18)"
      };
      const errorDetailsStyle = {
        margin: 0,
        padding: "12px 14px",
        borderRadius: "12px",
        background: "rgba(255, 255, 255, 0.06)",
        color: "#c8d3e6",
        fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
        fontSize: "12px",
        lineHeight: 1.5,
        whiteSpace: "pre-wrap",
        wordBreak: "break-word"
      };
      class AppErrorBoundary extends reactExports.Component {
        state = {
          error: null
        };
        static getDerivedStateFromError(error) {
          return { error };
        }
        componentDidCatch(error, errorInfo) {
          console.error("Reader crashed", error, errorInfo);
        }
        handleReset = () => {
          this.setState({ error: null });
          this.props.onReset();
        };
        render() {
          const { error } = this.state;
          if (!error) {
            return this.props.children;
          }
          return jsxRuntimeExports.jsx("section", { style: errorFallbackSurfaceStyle, children: jsxRuntimeExports.jsxs("div", { style: errorFallbackCardStyle, children: [
jsxRuntimeExports.jsxs("div", { children: [
jsxRuntimeExports.jsx(
                "p",
                {
                  style: {
                    margin: 0,
                    fontSize: "12px",
                    fontWeight: 700,
                    letterSpacing: "0.08em",
                    textTransform: "uppercase",
                    color: "#8fb4ff"
                  },
                  children: "Reader error"
                }
              ),
jsxRuntimeExports.jsx(
                "h1",
                {
                  style: { margin: "10px 0 0", fontSize: "30px", lineHeight: 1.1 },
                  children: "TruyenDrive hit an unexpected error."
                }
              )
            ] }),
jsxRuntimeExports.jsx("p", { style: { margin: 0, color: "#c8d3e6", lineHeight: 1.6 }, children: "The reader UI was unmounted to avoid leaving the page in a broken state. You can retry the reader or reload the page." }),
jsxRuntimeExports.jsxs("div", { style: errorActionRowStyle, children: [
jsxRuntimeExports.jsx(
                "button",
                {
                  style: primaryErrorActionStyle,
                  type: "button",
                  onClick: this.handleReset,
                  children: "Retry reader"
                }
              ),
jsxRuntimeExports.jsx(
                "button",
                {
                  style: secondaryErrorActionStyle,
                  type: "button",
                  onClick: () => window.location.reload(),
                  children: "Reload page"
                }
              )
            ] }),
jsxRuntimeExports.jsxs("details", { children: [
jsxRuntimeExports.jsx("summary", { style: { cursor: "pointer", color: "#dbe6f8" }, children: "Error details" }),
jsxRuntimeExports.jsx("pre", { style: errorDetailsStyle, children: error.stack ?? error.message })
            ] })
          ] }) });
        }
      }
      function AppContent() {
        const provider2 = useProvider();
        const [initialReaderState] = reactExports.useState(
          () => parseReaderStateFromUrl(window.location.href)
        );
        const [urlPassword] = reactExports.useState(
          () => new URL(window.location.href).searchParams.get("password")
        );
        const [manualPassword, setManualPassword] = reactExports.useState(void 0);
        const [manualEncryptionMethod, setManualEncryptionMethod] = reactExports.useState(null);
        const [isPasswordDialogOpen, setIsPasswordDialogOpen] = reactExports.useState(false);
        const {
          settings,
          cycleSetting,
          resetCustomTheme,
          toggleSetting,
          updateSetting
        } = useSettings();
        const imageWrapRef = reactExports.useRef(null);
        const mainRef = reactExports.useRef(null);
        const readerPortalRef = reactExports.useRef(null);
        const groupRefs = reactExports.useRef([]);
        const previousActiveFolderIdRef = reactExports.useRef(null);
        const currentPageRef = reactExports.useRef(-1);
        const historyPageRef = reactExports.useRef(null);
        const isHandlingPopStateRef = reactExports.useRef(false);
        const {
          activeGroupIndex,
          handlePageLoad,
          imageLoadVersion,
          isScrollReady,
          isSettingsOpen,
          loadedPageIds,
          resetReaderUi,
          setActiveGroupIndex,
          setImageLoadVersion,
          setIsScrollReady,
          setIsSettingsOpen,
          setSettingsTab,
          settingsTab
        } = useReaderUiState();
        const { beginReaderSession, resetHistoryState } = useReaderSession({
          currentPageRef,
          historyPageRef,
          isHandlingPopStateRef
        });
        const handleResetPassword = reactExports.useCallback(() => {
          setManualPassword(void 0);
          setManualEncryptionMethod(null);
          setIsPasswordDialogOpen(false);
        }, []);
        const {
          activeFolderId,
          activeChapterIndex,
          chapters,
          closeComicMode,
          folderDetails,
          folderEncryptionMethod,
          folderMode,
          folderPassword,
          goToAdjacentChapter,
          goToChapterAtIndex,
          images,
          isAutoOpening,
          isModePickerOpen,
          isOpen,
          openChapter,
          openComicMode,
          parentChapters,
          resetReaderState,
          selectMode,
          statusMessage
        } = useComicMode({
          beginReaderSession,
          initialChapterId: initialReaderState.chapterId,
          initialPage: initialReaderState.page,
          onResetPassword: handleResetPassword,
          onResetUi: resetReaderUi,
          resetHistoryState
        });
        reactExports.useEffect(() => {
          const previousFolderId = previousActiveFolderIdRef.current;
          if (previousFolderId !== activeFolderId) {
            if (previousFolderId !== null) {
              handleResetPassword();
            }
            previousActiveFolderIdRef.current = activeFolderId;
          }
        }, [activeFolderId, handleResetPassword]);
        const displayGroups = reactExports.useMemo(
          () => buildPageGroups(images, settings.lyt.spread, settings.lyt.direction),
          [images, settings.lyt.direction, settings.lyt.spread]
        );
        const imageIds = reactExports.useMemo(() => images.map((image) => image.id), [images]);
        const themeStyle = reactExports.useMemo(() => getThemeStyle(settings.thm), [settings.thm]);
        const activePage = displayGroups[activeGroupIndex]?.pages[0]?.index ?? 0;
        const activePageNumber = images.length === 0 ? 0 : activePage + 1;
        const activeGroup = displayGroups[activeGroupIndex];
        const hasAdjacentChapters = parentChapters.length > 1;
        const hasNextChapter = parentChapters.length > 1 && activeChapterIndex < parentChapters.length - 1;
        const isRtl = settings.lyt.direction === "rtl";
        const isTtb = settings.lyt.direction === "ttb";
        const isAtFirstGroup = activeGroupIndex === 0;
        const isAtLastGroup = displayGroups.length > 0 && activeGroupIndex === displayGroups.length - 1;
        const chapterStartGroupIndex = getChapterStartGroupIndex(
          displayGroups.length,
          settings.lyt.direction
        );
        const logicalActiveGroupIndex = getLogicalGroupIndex(
          activeGroupIndex,
          displayGroups.length,
          settings.lyt.direction
        );
        const supportsZoomOverlay = settings.lyt.fit === "width" || settings.lyt.fit === "width_limit";
        const isComicSurfaceOpen = isOpen || folderMode === "chapters" || isModePickerOpen;
        const readerTitle = folderDetails?.title || parentChapters[activeChapterIndex]?.name || "Truyen Drive Comic Reader";
        const activeChapterId = parentChapters[activeChapterIndex]?.id ?? activeFolderId;
        const password = manualPassword !== void 0 ? manualPassword : folderPassword ?? urlPassword;
        const encryptionMethod = manualEncryptionMethod ?? folderEncryptionMethod ?? "scanline";
        const imagePassword = folderMode === "images" ? password : null;
        const isPasswordMode = reactExports.useMemo(
          () => imagePassword !== null && images.some((image) => image.requiresDecryption !== false),
          [imagePassword, images]
        );
        const getImageUrl = reactExports.useCallback(
          (image) => provider2.getImageUrl(image),
          [provider2]
        );
        const buildFetchUrl = reactExports.useCallback(
          (image) => provider2.buildFetchUrl(image),
          [provider2]
        );
        const getThumbnailUrl = reactExports.useCallback(
          (image) => image.thumbnailUrl ?? provider2.getThumbnailUrl(image.id) ?? provider2.getImageUrl(image),
          [provider2]
        );
        const { decryptedSrcs } = useImageDecryptor(
          images,
          imagePassword,
          encryptionMethod,
          displayGroups,
          activeGroupIndex,
          chapterStartGroupIndex,
          isScrollReady,
          settings.bhv.preload,
          buildFetchUrl
        );
        const {
          goToAdjacentGroup,
          hoverEdge,
          isSelectorVisible,
          isZoomVisible,
          performVerticalPageTurn,
          performVerticalStep,
          scrollToGroup,
          setHoverEdge,
          showPageSelector,
          showZoomControls,
          syncActiveGroupFromScroll
        } = useReaderControls({
          activeGroupIndex,
          displayGroups,
          groupRefs,
          imageWrapRef,
          mainRef,
          scrollContainerRef: readerPortalRef,
          isScrollReady,
          isOpen,
          setActiveGroupIndex,
          settings,
          supportsZoomOverlay
        });
        const { handlePopState } = useReaderHistory({
          activeChapterId,
          activePage,
          currentPageRef,
          displayGroups,
          historyPageRef,
          imageIds,
          isHandlingPopStateRef,
          isOpen,
          readerTitle,
          resetReaderState,
          scrollToGroup,
          settings
        });
        const { isGroupPreloaded, preloadImageRefs } = useReaderPreload({
          activeGroupIndex,
          displayGroups,
          getImageUrl,
          initialGroupIndex: chapterStartGroupIndex,
          isInitialScrollDone: isScrollReady,
          isPasswordMode,
          isOpen,
          preloadDistance: settings.bhv.preload
        });
        const { tooWideGroups } = useWideGroupTracker({
          displayGroups,
          groupRefs,
          imageLoadVersion,
          isOpen,
          settings
        });
        const { handleTtbTap, isMobile } = useMobileTtbSticky({
          isOpen,
          isTtb,
          mainRef,
          scrollContainerRef: readerPortalRef,
          settings,
          updateSetting
        });
        useInitialScroll({
          activeFolderId,
          activeGroupIndex,
          chapterStartGroupIndex,
          currentPageRef,
          displayGroups,
          groupRefs,
          isOpen,
          setActiveGroupIndex,
          setIsScrollReady,
          settings
        });
        const isGroupLoaded = reactExports.useCallback(
          (index) => {
            const group = displayGroups[index];
            return group ? group.pages.every((page) => loadedPageIds.has(page.id)) : false;
          },
          [displayGroups, loadedPageIds]
        );
        const goToChapterAtIndexFromReader = reactExports.useCallback(
          (index) => {
            currentPageRef.current = -1;
            goToChapterAtIndex(index);
          },
          [goToChapterAtIndex]
        );
        const goToAdjacentChapterFromReader = reactExports.useCallback(
          (delta) => {
            currentPageRef.current = -1;
            goToAdjacentChapter(delta);
          },
          [goToAdjacentChapter]
        );
        const handleSelectChapter = reactExports.useCallback(
          (_chapterId, index) => {
            const chapter = chapters[index];
            if (!chapter) {
              return;
            }
            currentPageRef.current = -1;
            openChapter(chapter, chapters, index);
          },
          [chapters, openChapter]
        );
        const handleZoomChange = reactExports.useCallback(
          (zoom) => {
            updateSetting("lyt", "zoom", zoom);
          },
          [updateSetting]
        );
        const navigateGroupOrChapter = reactExports.useCallback(
          (delta) => {
            if (displayGroups.length === 0) {
              return;
            }
            if (delta === -1 && isAtFirstGroup && hasAdjacentChapters) {
              goToAdjacentChapterFromReader(isRtl ? 1 : -1);
              return;
            }
            if (delta === 1 && isAtLastGroup && hasAdjacentChapters) {
              goToAdjacentChapterFromReader(isRtl ? -1 : 1);
              return;
            }
            goToAdjacentGroup(delta);
          },
          [
            displayGroups.length,
            goToAdjacentChapterFromReader,
            goToAdjacentGroup,
            hasAdjacentChapters,
            isAtFirstGroup,
            isAtLastGroup,
            isRtl
          ]
        );
        const performVerticalPageTurnOrChapter = reactExports.useCallback(
          (direction) => {
            const scroller = imageWrapRef.current;
            if (!scroller) {
              return;
            }
            const maxScrollTop = Math.max(
              scroller.scrollHeight - scroller.clientHeight,
              0
            );
            const isAtTop = scroller.scrollTop <= 1;
            const isAtBottom = maxScrollTop - scroller.scrollTop <= 1;
            if (direction === -1 && isAtTop && isAtFirstGroup && hasAdjacentChapters) {
              goToAdjacentChapterFromReader(-1);
              return;
            }
            if (direction === 1 && isAtBottom && isAtLastGroup && hasAdjacentChapters) {
              goToAdjacentChapterFromReader(1);
              return;
            }
            performVerticalPageTurn(direction);
          },
          [
            goToAdjacentChapterFromReader,
            hasAdjacentChapters,
            isAtFirstGroup,
            isAtLastGroup,
            performVerticalPageTurn
          ]
        );
        const jumpToChapterStart = reactExports.useCallback(() => {
          scrollToGroup(chapterStartGroupIndex);
        }, [chapterStartGroupIndex, scrollToGroup]);
        const copyShareUrl = reactExports.useCallback(() => {
          const url = window.location.href.replace(/\/u\/\d+/, "");
          navigator.clipboard.writeText(url).catch((err) => {
            console.error("Failed to copy URL: ", err);
          });
        }, []);
        const requestPassword = reactExports.useCallback(() => {
          setIsPasswordDialogOpen(true);
        }, []);
        useKeyboardHandler({
          closeComicMode,
          copyShareUrl,
          cycleSetting,
          goToAdjacentChapter: goToAdjacentChapterFromReader,
          isComicSurfaceOpen,
          isOpen,
          isSettingsOpen,
          jumpToChapterStart,
          navigateGroupOrChapter,
          performVerticalStep,
          requestPassword,
          setIsSettingsOpen,
          settings,
          toggleSetting
        });
        reactExports.useEffect(() => {
          window.addEventListener("popstate", handlePopState);
          return () => window.removeEventListener("popstate", handlePopState);
        }, [handlePopState]);
        reactExports.useEffect(() => {
          if (!isComicSurfaceOpen) {
            return;
          }
          const previousOverflow = document.body.style.overflow;
          document.body.style.overflow = "hidden";
          return () => {
            document.body.style.overflow = previousOverflow;
          };
        }, [isComicSurfaceOpen]);
        reactExports.useEffect(() => {
          if (!isOpen || displayGroups.length === 0) {
            return;
          }
          currentPageRef.current = activePage;
        }, [activePage, displayGroups.length, isOpen]);
        return jsxRuntimeExports.jsxs("div", { style: themeStyle, children: [
jsxRuntimeExports.jsxs(
            "button",
            {
              className: "truyendrive-launcher",
              onClick: () => openComicMode(),
              type: "button",
              children: [
jsxRuntimeExports.jsx("span", { className: "launcher-icon", children: "📖" }),
jsxRuntimeExports.jsx("span", { className: "launcher-text", children: "TruyenDrive" })
              ]
            }
          ),
          folderMode === "chapters" && !isOpen && !isAutoOpening && jsxRuntimeExports.jsx("div", { className: "truyendrive-portal", children: jsxRuntimeExports.jsx("main", { tabIndex: -1, children: jsxRuntimeExports.jsx(
            ChapterList,
            {
              chapters,
              folderDetails,
              onClose: () => resetReaderState(true),
              onSelectChapter: handleSelectChapter,
              statusMessage,
              title: readerTitle
            }
          ) }) }),
          isModePickerOpen && !isAutoOpening && jsxRuntimeExports.jsx(ModePickerDialog, { onSelectMode: selectMode }),
          isOpen && jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
jsxRuntimeExports.jsx("style", { children: readerStyles }),
jsxRuntimeExports.jsx("div", { className: "truyendrive-portal", ref: readerPortalRef, children: jsxRuntimeExports.jsxs("div", { className: getRootClasses(settings), children: [
jsxRuntimeExports.jsxs("main", { ref: mainRef, tabIndex: -1, children: [
jsxRuntimeExports.jsx(
                  ReaderSidebar,
                  {
                    activeGroup,
                    activeChapterIndex,
                    activeGroupIndex,
                    logicalActiveGroupIndex,
                    activePage,
                    activePageNumber,
                    closeComicMode,
                    copyShareUrl,
                    cycleSetting,
                    displayGroups,
                    folderMode,
                    goToAdjacentChapter: goToAdjacentChapterFromReader,
                    goToAdjacentGroup,
                    goToChapterAtIndex: goToChapterAtIndexFromReader,
                    getThumbnailUrl,
                    images,
                    isPasswordMode,
                    jumpToChapterStart,
                    parentChapters,
                    password,
                    readerTitle,
                    requestPassword,
                    scrollToGroup,
                    setIsSettingsOpen,
                    setSettingsTab,
                    settings,
                    statusMessage,
                    toggleSetting
                  }
                ),
jsxRuntimeExports.jsx(
                  PageSelector,
                  {
                    activeGroupIndex,
                    activePageNumber,
                    displayGroups,
                    direction: settings.lyt.direction,
                    isGroupLoaded,
                    isSelectorVisible,
                    pageCount: images.length,
                    scrollToGroup
                  }
                ),
jsxRuntimeExports.jsx(
                  ReaderArea,
                  {
                    displayGroups,
                    groupRefs,
                    getImageUrl,
                    hoverEdge,
                    imageWrapRef,
                    isGroupPreloaded,
                    isMobile,
                    isPasswordMode,
                    isScrollReady,
                    isTtb,
                    navigateGroupOrChapter,
                    onMobileTtbTap: handleTtbTap,
                    onPageLoad: handlePageLoad,
                    performVerticalPageTurnOrChapter,
                    preloadImageRefs,
                    setHoverEdge,
                    setImageLoadVersion,
                    settings,
                    showPageSelector,
                    showZoomControls,
                    syncActiveGroupFromScroll,
                    decryptedSrcs,
                    tooWideGroups,
                    hasNextChapter,
                    goToAdjacentChapter: goToAdjacentChapterFromReader
                  }
                ),
jsxRuntimeExports.jsx(
                  ZoomControls,
                  {
                    isVisible: isZoomVisible,
                    onZoomChange: handleZoomChange,
                    showZoomControls,
                    zoom: settings.lyt.zoom
                  }
                )
              ] }),
jsxRuntimeExports.jsx(
                SettingsModal,
                {
                  activeTab: settingsTab,
                  onClose: () => setIsSettingsOpen(false),
                  onTabChange: setSettingsTab,
                  open: isSettingsOpen,
                  resetCustomTheme,
                  settings,
                  updateSetting
                }
              ),
              isPasswordDialogOpen && jsxRuntimeExports.jsx(
                PasswordDialog,
                {
                  currentMethod: encryptionMethod,
                  currentPassword: password,
                  onClose: () => setIsPasswordDialogOpen(false),
                  onConfirm: (nextPassword, nextMethod) => {
                    setManualPassword(nextPassword);
                    setManualEncryptionMethod(nextMethod);
                    setIsPasswordDialogOpen(false);
                  }
                }
              )
            ] }) })
          ] })
        ] });
      }
      function App() {
        const [retryKey, setRetryKey] = reactExports.useState(0);
        return jsxRuntimeExports.jsx(AppErrorBoundary, { onReset: () => setRetryKey((current) => current + 1), children: jsxRuntimeExports.jsx(AppContent, {}, retryKey) });
      }
      const DRIVE_API_KEY = "AIzaSyD_InbmSFufIEps5UAt2NmB_3LvBH3Sz_8";
      const DRIVE_GUEST_API_KEY = "AIzaSyC1qbk75NzWBvSaDh6KnsjjA9pIrP4lYIE";
      const DRIVE_CLIENT_VERSION = window._DRIVE_buildLabel;
      const DRIVE_JSPB_EXTENSION = "W1szMDUsMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxLG51bGwsbnVsbCxbMl1dXQ==";
      const DRIVE_ITEM_JSPB_EXTENSION = "W1sxMDAxLDAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMSxudWxsLG51bGwsWzJdXV0=";
      const DRIVE_GUEST_JSPB_EXTENSION = "W1sxNDk3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMSxudWxsLG51bGwsWzJdXV0=";
      const DRIVE_ACCOUNT_URL = `https://drivefrontend-pa.clients6.google.com/v1/account?alt=protojson&fields=account.drive_for_desktop_settings.switchblade_psk%2Caccount.enterprise_settings.can_access_admin_console%2Caccount.enterprise_settings.is_dasher_admin%2Caccount.enterprise_settings.is_dasher_user%2Caccount.metadata.backend_diagnostics.backend%2Caccount.metadata.export_format%2Caccount.metadata.gsuite_subscription_info.status%2Caccount.metadata.gsuite_subscription_info.trial_end_time_millis%2Caccount.metadata.gsuite_subscription_info.trial_millis_remaining%2Caccount.metadata.import_format%2Caccount.metadata.max_upload_size%2Caccount.metadata.quota.bytes_limit%2Caccount.metadata.quota.bytes_remaining%2Caccount.metadata.quota.bytes_used_by_all_services%2Caccount.metadata.quota.bytes_used_by_team%2Caccount.metadata.quota.bytes_used_by_user%2Caccount.metadata.quota.bytes_used_in_drive_trash_by_user%2Caccount.metadata.quota.grace_period_info.active%2Caccount.metadata.quota.grace_period_info.additional_quota_bytes%2Caccount.metadata.quota.grace_period_info.end_timestamp_millis%2Caccount.metadata.quota.individual_bytes_limit%2Caccount.metadata.quota.individual_usage_state%2Caccount.metadata.quota.quota_bytes_total%2Caccount.metadata.quota.quota_bytes_used%2Caccount.metadata.quota.quota_bytes_used_aggregate%2Caccount.metadata.quota.quota_bytes_used_in_trash%2Caccount.metadata.quota.quota_status%2Caccount.metadata.quota.quota_type%2Caccount.metadata.quota.service_usage.bytes_used%2Caccount.metadata.quota.service_usage.service_key%2Caccount.metadata.quota.usage_state%2Caccount.metadata.root_folder_id%2Caccount.metadata.target_audiences.audience_id%2Caccount.metadata.target_audiences.display_name%2Caccount.metadata.team_dashboard_capabilities.can_administer_team%2Caccount.metadata.team_dashboard_capabilities.can_manage_invites%2Caccount.search_settings.can_display_zero_state_search%2Caccount.security_settings.is_cse_create_enabled%2Caccount.security_settings.is_cse_enabled%2Caccount.security_settings.is_cse_on_by_default%2Caccount.shared_drives_settings.can_create_shared_drives%2Caccount.shared_drives_settings.can_interact_with_shared_drives%2Caccount.shared_drives_settings.can_migrate_to_shared_drives_as_admin%2Caccount.shared_drives_settings.has_shared_drives%2Caccount.storage_settings.can_buy_storage%2Caccount.user.customer_id%2Caccount.user.domain%2Caccount.user.email%2Caccount.user.email_from_account%2Caccount.user.focus_user_id%2Caccount.user.id%2Caccount.user.photo_url%2Caccount.user.short_name%2Caccount.user_capabilities%2Caccount.user_pref%2Caccount.view_settings.can_display_suggestions_in_shared_with_me%2Caccount.view_settings.can_view_priority%2Caccount.view_settings.show_machine_root_view%2Caccount.view_settings.show_spam_view%2Caccount.workspace_settings.active_workspace_limit%2Caccount.workspace_settings.can_create_workspaces%2Caccount.workspace_settings.total_workspace_limit%2Caccount.workspace_settings.workspace_item_limit&key=${DRIVE_API_KEY}`;
      const DRIVE_ITEMS_URL = `https://drivefrontend-pa.clients6.google.com/v1/items:list?key=${DRIVE_API_KEY}`;
      const DRIVE_ITEM_URL = `https://drivefrontend-pa.clients6.google.com/v1/items:get?key=${DRIVE_API_KEY}`;
      const DRIVE_GUEST_ITEMS_URL = `https://drivefrontend-pa.clients6.google.com/v1/items:list?key=${DRIVE_GUEST_API_KEY}`;
      const DRIVE_GUEST_ITEM_URL = `https://drivefrontend-pa.clients6.google.com/v1/items:get?key=${DRIVE_GUEST_API_KEY}`;
      const DRIVE_FILE_INTERNAL_URL = "https://clients6.google.com/drive/v2internal/files";
      const DRIVE_FIELD_MASK = "items(parent,modified_date_millis,has_visitor_permissions,contains_unsubscribed_children,capabilities(can_move_item_into_team_drive,can_untrash,can_modify_content_restriction,can_move_item_within_team_drive,can_move_item_out_of_team_drive,can_delete_children,can_trash_children,can_request_approval,can_read_category_metadata,can_edit_category_metadata,can_add_my_drive_parent,can_remove_my_drive_parent,can_share_child_files,can_share_child_folders,can_read,can_move_item_within_drive,can_move_children_within_drive,can_add_folder_from_another_drive,can_change_security_update_enabled,can_create_decrypted_copy,can_create_encrypted_copy,can_add_encrypted_children,can_block_owner,can_report_spam_or_abuse,can_copy_encrypted_file,can_copy_non_authoritative,can_download_non_authoritative,can_report_not_spam,can_initiate_esignature,can_discover_by_search,can_copy,can_download,can_edit,can_add_children,can_delete,can_remove_children,can_share,can_trash,can_rename,can_list_children,can_read_team_drive,can_move_team_drive_item),modified_by_me_date_millis,last_viewed_by_me_date_millis,alternate_link,workspace_id,file_size,content_restrictions(read_only),approval_version,owner(id,focus_user_id,is_me,type,email),approval_summaries,shortcut_details(target_id,target_mime_type,target_lookup_status,target_item,can_request_access_to_target),last_modifying_user(id,focus_user_id,is_me,type,email),customer_id,ancestor_has_own_permissions,has_thumbnail,thumbnail_version,title,mime_type,image(width,height),id,resource_key,abuse_is_appealable,abuse_notice_reason,spam_metadata(marked_as_spam_date_millis,in_spam_view,is_spam,is_inherited_spam),shared,access_requests_count,has_incoming_approval,shared_with_me_date_millis,user_role,inheritance_broken,explicitly_trashed,quota_bytes_used,gmail_message_storage_id,applied_labels,has_catch_me_up_content,workflow_creation_id,vids_import_compatibility_info,workbook_details,subscribed,folder_color,has_child_folder,starred,creator_app_id,file_extension,primary_sync_parent,sharing_user(id,focus_user_id,is_me,type,email),flagged_for_abuse,folder_features,spaces,source_app_id,trashed,recency_date_millis,recency_date_reason,restricted,version,action_item,viewed,team_drive_id,has_own_permissions,create_date_millis,primary_domain_name,organization_display_name,passively_subscribed,trashing_user(id,focus_user_id,is_me,type,email),trashed_date_millis),continuation_token,search_response_metadata(incomplete_search,moonshine_item_ids,query_suggestions(spell_response,nlp_response))";
      const DRIVE_ITEM_FIELD_MASK = "responses(status(code,message,details),item(parent,modified_date_millis,has_visitor_permissions,contains_unsubscribed_children,capabilities(can_move_item_into_team_drive,can_untrash,can_modify_content_restriction,can_move_item_within_team_drive,can_move_item_out_of_team_drive,can_delete_children,can_trash_children,can_request_approval,can_read_category_metadata,can_edit_category_metadata,can_add_my_drive_parent,can_remove_my_drive_parent,can_share_child_files,can_share_child_folders,can_read,can_move_item_within_drive,can_move_children_within_drive,can_add_folder_from_another_drive,can_change_security_update_enabled,can_create_decrypted_copy,can_create_encrypted_copy,can_add_encrypted_children,can_block_owner,can_report_spam_or_abuse,can_copy_encrypted_file,can_copy_non_authoritative,can_download_non_authoritative,can_report_not_spam,can_initiate_esignature,can_discover_by_search,can_copy,can_download,can_edit,can_add_children,can_delete,can_remove_children,can_share,can_trash,can_rename,can_list_children,can_read_team_drive,can_move_team_drive_item),modified_by_me_date_millis,last_viewed_by_me_date_millis,alternate_link,workspace_id,file_size,content_restrictions(read_only),approval_version,owner(id,focus_user_id,is_me,type,email),approval_summaries,shortcut_details(target_id,target_mime_type,target_lookup_status,target_item,can_request_access_to_target),last_modifying_user(id,focus_user_id,is_me,type,email),customer_id,ancestor_has_own_permissions,has_thumbnail,thumbnail_version,title,mime_type,id,resource_key,abuse_is_appealable,abuse_notice_reason,spam_metadata(marked_as_spam_date_millis,in_spam_view,is_spam,is_inherited_spam),shared,access_requests_count,has_incoming_approval,shared_with_me_date_millis,user_role,inheritance_broken,explicitly_trashed,quota_bytes_used,gmail_message_storage_id,applied_labels,has_catch_me_up_content,workflow_creation_id,vids_import_compatibility_info,workbook_details,subscribed,folder_color,has_child_folder,starred,creator_app_id,file_extension,primary_sync_parent,sharing_user(id,focus_user_id,is_me,type,email),flagged_for_abuse,folder_features,spaces,source_app_id,trashed,recency_date_millis,recency_date_reason,restricted,version,action_item,viewed,team_drive_id,has_own_permissions,create_date_millis,primary_domain_name,organization_display_name,passively_subscribed,trashing_user(id,focus_user_id,is_me,type,email),trashed_date_millis,permission_summary))";
      const DRIVE_ACCEPT_LANGUAGE = "vi";
      const DRIVE_ORIGIN = "https://drive.google.com";
      const DRIVE_GAPI_PROXY_TIMEOUT_MS = 3e3;
      const DRIVE_GAPI_LAZY_SCRIPT_URL = "https://www.gstatic.com/feedback/js/help/prod/service/lazy.min.js";
      const DRIVE_GAPI_CLIENT_SCRIPT_URL = "https://apis.google.com/js/client.js";
      async function getSapisidHash(timestamp, context) {
        const sapisid = document.cookie.match(/SAPISID=([^;]+)/)?.[1];
        if (!sapisid) {
          throw new Error("SAPISID cookie not found. Are you logged in?");
        }
        const contextKeys = context ? Object.keys(context) : [];
        const contextValues = context ? Object.values(context) : [];
        const rawString = (contextValues.length === 0 ? [timestamp, sapisid, DRIVE_ORIGIN] : [contextValues.join(":"), timestamp, sapisid, DRIVE_ORIGIN]).join(" ");
        const encoder = new TextEncoder();
        const data = encoder.encode(rawString);
        const hashBuffer = await crypto.subtle.digest("SHA-1", data);
        const hashHex = Array.from(new Uint8Array(hashBuffer)).map((byte) => byte.toString(16).padStart(2, "0")).join("");
        const hashValue = (contextKeys.length === 0 ? [timestamp, hashHex] : [timestamp, hashHex, contextKeys.join("")]).join("_");
        return `SAPISIDHASH ${hashValue} SAPISID1PHASH ${hashValue} SAPISID3PHASH ${hashValue}`;
      }
      function getAuthUser$1() {
        const match = window.location.href.match(/\/u\/(\d+)/);
        return match ? match[1] : "0";
      }
      function isAuthenticated() {
        return /SAPISID=/.test(document.cookie);
      }
      function createDriveHeaders(authUser, authorization, extraHeaders = {}) {
        return {
          accept: "*/*",
          "accept-language": DRIVE_ACCEPT_LANGUAGE,
          authorization,
          "cache-control": "no-cache",
          "content-type": "application/json+protobuf",
          pragma: "no-cache",
          "x-goog-authuser": authUser,
          "x-goog-drive-client-version": DRIVE_CLIENT_VERSION,
          "x-goog-ext-472780938-jspb": DRIVE_JSPB_EXTENSION,
          ...extraHeaders
        };
      }
      function createGuestHeaders(extraHeaders = {}) {
        return {
          accept: "*/*",
          "accept-language": DRIVE_ACCEPT_LANGUAGE,
          "content-type": "application/json+protobuf",
          "x-goog-drive-client-version": DRIVE_CLIENT_VERSION,
          "x-goog-ext-472780938-jspb": DRIVE_GUEST_JSPB_EXTENSION,
          ...extraHeaders
        };
      }
      function requestProtoJson({
        authUser,
        body,
        headers,
        method,
        url
      }) {
        return new Promise((resolve, reject) => {
          const xhr = new XMLHttpRequest();
          xhr.open(method, url, true);
          xhr.withCredentials = true;
          Object.entries(headers ?? {}).forEach(([key, value]) => {
            xhr.setRequestHeader(key, value);
          });
          xhr.onload = () => {
            if (xhr.status < 200 || xhr.status >= 300) {
              reject(new Error(`Request failed with status ${xhr.status}`));
              return;
            }
            try {
              resolve(JSON.parse(xhr.responseText));
            } catch (error) {
              reject(error);
            }
          };
          xhr.onerror = () => reject(
            new Error(
              `Network error while requesting Google Drive data for auth user ${authUser}`
            )
          );
          xhr.send(body);
        });
      }
      function requestText({
        body,
        headers,
        method,
        url
      }) {
        return new Promise((resolve, reject) => {
          const xhr = new XMLHttpRequest();
          xhr.open(method, url, true);
          xhr.withCredentials = true;
          Object.entries(headers ?? {}).forEach(([key, value]) => {
            xhr.setRequestHeader(key, value);
          });
          xhr.onload = () => {
            if (xhr.status < 200 || xhr.status >= 300) {
              reject(new Error(`Request failed with status ${xhr.status}`));
              return;
            }
            resolve(xhr.responseText);
          };
          xhr.onerror = () => reject(new Error("Network error while requesting data"));
          xhr.send(body);
        });
      }
      function stripXssiPrefix(text) {
        return text.replace(/^\)\]\}'\s*/, "").trim();
      }
      function parseJsonText(text) {
        const strippedText = stripXssiPrefix(text);
        try {
          return JSON.parse(strippedText);
        } catch (error) {
          try {
            return JSON.parse(stripXssiPrefix(atob(strippedText)));
          } catch {
            throw error;
          }
        }
      }
      function buildFolderItemsBody(folderId, cursor) {
        return `[[null,null,null,null,0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"",null,0,null,null,[4,1,1],null,null,null,null,null,null,null,null,null,null,[[1]],null,null,null,null,null,null,null,[["${folderId}"]]],[50,"${cursor ?? ""}",[2,5]]]`;
      }
      function buildFolderDetailsBody(folderId) {
        return `[["${folderId}"],[null,null,null,null,null,[2,5]]]`;
      }
      function buildPdfPreviewUrl(pdfId, apiKey, baseUrl, withCacheBust = false) {
        const url = new URL(`${baseUrl}/${encodeURIComponent(pdfId)}`);
        url.searchParams.set("fields", "preview,kind");
        url.searchParams.set("supportsTeamDrives", "true");
        url.searchParams.set("enforceSingleParent", "true");
        url.searchParams.set("key", apiKey);
        if (withCacheBust) {
          url.searchParams.set("$unique", `truyendrive-${Date.now()}`);
        }
        return url;
      }
      function buildClientDetails() {
        const userAgent = navigator.userAgent;
        return [
          ["appVersion", navigator.appVersion],
          ["platform", navigator.platform],
          ["userAgent", userAgent]
        ].map(([key, value]) => `${key}=${encodeURIComponent(value)}`).join("&");
      }
      function getBrowserAcceptLanguage() {
        const languages = navigator.languages && navigator.languages.length > 0 ? navigator.languages : [navigator.language || "en-US"];
        return languages.map(
          (language, index) => index === 0 ? language : `${language};q=${Math.max(0.1, 1 - index / 10)}`
        ).join(",");
      }
      function getGapiClientRequest() {
        const gapi = window.gapi;
        return typeof gapi?.client?.request === "function" ? gapi.client.request.bind(gapi.client) : null;
      }
      let gapiScriptsPromise = null;
      function loadScript(src) {
        return new Promise((resolve, reject) => {
          const script = document.createElement("script");
          script.src = src;
          script.async = true;
          script.onload = () => resolve();
          script.onerror = () => reject(new Error(`Failed to load script: ${src}`));
          document.head.appendChild(script);
        });
      }
      function ensureGapiScriptsLoaded() {
        if (window.gapi) {
          return Promise.resolve();
        }
        if (!gapiScriptsPromise) {
          gapiScriptsPromise = loadScript(DRIVE_GAPI_LAZY_SCRIPT_URL).then(
            () => loadScript(DRIVE_GAPI_CLIENT_SCRIPT_URL)
          );
        }
        return gapiScriptsPromise;
      }
      async function waitForGapiClientRequest() {
        const existingRequest = getGapiClientRequest();
        if (existingRequest) {
          return existingRequest;
        }
        if (!window.gapi) {
          await ensureGapiScriptsLoaded();
        }
        const startedAt = Date.now();
        return new Promise(
          (resolve, reject) => {
            const poll = () => {
              const request = getGapiClientRequest();
              if (request) {
                resolve(request);
                return;
              }
              if (Date.now() - startedAt >= DRIVE_GAPI_PROXY_TIMEOUT_MS) {
                reject(
                  new Error("Google Drive gapi client is not ready for guest PDF")
                );
                return;
              }
              window.setTimeout(poll, 50);
            };
            poll();
          }
        );
      }
      async function requestGapiJson(options) {
        const request = (await waitForGapiClientRequest())(options);
        if (typeof request.then === "function") {
          const response = await new Promise((resolve, reject) => {
            request.then?.(resolve, reject);
          });
          return response.result ?? (typeof response.body === "string" ? parseJsonText(response.body) : response);
        }
        if (typeof request.execute === "function") {
          return new Promise((resolve, reject) => {
            request.execute?.((response) => {
              if (response?.error) {
                reject(
                  new Error(
                    response.error.message ?? `Request failed with status ${response.status}`
                  )
                );
                return;
              }
              resolve(
                response.result ?? (typeof response.body === "string" ? parseJsonText(response.body) : response)
              );
            });
          });
        }
        throw new Error("Google Drive gapi request could not be created");
      }
      function isDriveProtoItem(value) {
        return Array.isArray(value) && typeof value[0] === "string" && value[0].length > 0 && typeof value[2] === "string" && value[2].length > 0 && typeof value[3] === "string" && value[3].length > 0;
      }
      function extractDriveProtoItem(response) {
        const responses = Array.isArray(response[0]) ? response[0] : [];
        for (const entry of responses) {
          if (!Array.isArray(entry)) {
            continue;
          }
          for (const candidate of entry) {
            if (isDriveProtoItem(candidate)) {
              return candidate;
            }
          }
        }
        for (const candidate of response) {
          if (isDriveProtoItem(candidate)) {
            return candidate;
          }
        }
        return null;
      }
      function findEmailValue(value) {
        if (typeof value === "string" && value.includes("@")) {
          return value;
        }
        if (!Array.isArray(value)) {
          return "";
        }
        for (const entry of value) {
          const email = findEmailValue(entry);
          if (email) {
            return email;
          }
        }
        return "";
      }
      function findThumbnailVersion(item) {
        for (let index = 0; index < item.length - 1; index += 1) {
          if (item[index] !== true) {
            continue;
          }
          const candidate = item[index + 1];
          if (typeof candidate === "number" && Number.isFinite(candidate) && candidate > 0) {
            return String(candidate);
          }
          if (typeof candidate === "string" && /^\d+$/.test(candidate) && candidate !== "0") {
            return candidate;
          }
        }
        return "";
      }
      async function fetchAccount(authUser = getAuthUser$1()) {
        const timestamp = Math.floor(Date.now() / 1e3);
        const authorization = await getSapisidHash(timestamp, null);
        return requestProtoJson({
          authUser,
          headers: createDriveHeaders(authUser, authorization),
          method: "GET",
          url: DRIVE_ACCOUNT_URL
        });
      }
      async function fetchFolderItems(folderId, cursor, accountData, authUser = getAuthUser$1()) {
        const userInfo = accountData ?? await fetchAccount(authUser);
        const timestamp = Math.floor(Date.now() / 1e3);
        const authorization = await getSapisidHash(timestamp, {
          u: userInfo[0][0][10]
        });
        return requestProtoJson({
          authUser,
          body: buildFolderItemsBody(folderId, cursor),
          headers: createDriveHeaders(authUser, authorization, {
            "x-goog-fieldmask": DRIVE_FIELD_MASK
          }),
          method: "POST",
          url: DRIVE_ITEMS_URL
        });
      }
      async function fetchFolderItemsGuest(folderId, cursor) {
        return requestProtoJson({
          authUser: "guest",
          body: buildFolderItemsBody(folderId, cursor),
          headers: createGuestHeaders({
            "x-goog-fieldmask": DRIVE_FIELD_MASK
          }),
          method: "POST",
          url: DRIVE_GUEST_ITEMS_URL
        });
      }
      async function fetchPdfPreviewLink(pdfId, authUser = getAuthUser$1()) {
        if (authUser === "guest") {
          return fetchPdfPreviewLinkGuest(pdfId);
        }
        const timestamp = Math.floor(Date.now() / 1e3);
        const authorization = await getSapisidHash(timestamp, null);
        const url = buildPdfPreviewUrl(
          pdfId,
          DRIVE_API_KEY,
          DRIVE_FILE_INTERNAL_URL,
          true
        );
        const response = parseJsonText(
          await requestText({
            headers: {
              accept: "*/*",
              "accept-language": DRIVE_ACCEPT_LANGUAGE,
              authorization,
              "cache-control": "no-cache",
              pragma: "no-cache",
              "x-goog-authuser": authUser,
              "x-javascript-user-agent": "google-api-javascript-client/1.1.0",
              "x-requested-with": "XMLHttpRequest"
            },
            method: "GET",
            url: url.toString()
          })
        );
        const previewLink = response.preview?.link;
        if (!previewLink) {
          throw new Error("Failed to load Google Drive PDF preview link");
        }
        return previewLink;
      }
      async function fetchPdfPreviewLinkGuest(pdfId) {
        const response = await requestGapiJson({
          headers: {
            accept: "*/*",
            "accept-language": getBrowserAcceptLanguage(),
            "x-clientdetails": buildClientDetails(),
            "x-goog-authuser": "0",
            "x-goog-encode-response-if-executable": "base64",
            "x-javascript-user-agent": "google-api-javascript-client/1.1.0",
            "x-origin": DRIVE_ORIGIN,
            "x-referer": DRIVE_ORIGIN,
            "x-requested-with": "XMLHttpRequest"
          },
          method: "GET",
          params: {
            enforceSingleParent: true,
            fields: "preview,kind",
            key: DRIVE_GUEST_API_KEY,
            supportsTeamDrives: true
          },
          path: `/drive/v2beta/files/${encodeURIComponent(pdfId)}`,
          root: "https://clients6.google.com"
        });
        const previewLink = response.preview?.link;
        if (!previewLink) {
          throw new Error("Failed to load Google Drive PDF preview link");
        }
        return previewLink;
      }
      function buildViewerUrl(path) {
        return new URL(path, "https://drive.google.com/viewer/");
      }
      function buildPdfPageUrl(pageTemplate, pageIndex, width, thumbnail = false) {
        const url = buildViewerUrl(pageTemplate);
        url.searchParams.set("page", String(pageIndex));
        url.searchParams.set("skiphighlight", "true");
        url.searchParams.set("w", String(thumbnail ? 240 : width));
        if (!thumbnail) {
          url.searchParams.set("auditContext", "forDisplay");
          url.searchParams.set("webp", "true");
        }
        return url.toString();
      }
      async function fetchPdfImages(pdfId, authUser = getAuthUser$1()) {
        const previewLink = await fetchPdfPreviewLink(pdfId, authUser);
        const bootstrap = parseJsonText(
          await requestText({
            headers: {
              accept: "*/*",
              "accept-language": DRIVE_ACCEPT_LANGUAGE,
              "cache-control": "no-cache",
              pragma: "no-cache"
            },
            method: "GET",
            url: previewLink
          })
        );
        if (!bootstrap.img || !bootstrap.meta) {
          throw new Error("Failed to parse Google Drive PDF viewer data");
        }
        const meta = parseJsonText(
          await requestText({
            headers: {
              accept: "*/*",
              "accept-language": DRIVE_ACCEPT_LANGUAGE,
              "cache-control": "no-cache",
              pragma: "no-cache"
            },
            method: "GET",
            url: buildViewerUrl(bootstrap.meta).toString()
          })
        );
        const pageCount = Number(meta.pages ?? 0);
        const maxPageWidth = Number(meta.maxPageWidth ?? 0);
        if (!Number.isFinite(pageCount) || pageCount <= 0) {
          throw new Error("Failed to detect Google Drive PDF page count");
        }
        const pageWidth = Number.isFinite(maxPageWidth) && maxPageWidth > 0 ? maxPageWidth : 1600;
        return Array.from({ length: pageCount }, (_, pageIndex) => {
          const url = buildPdfPageUrl(bootstrap.img, pageIndex, pageWidth);
          return {
            fetchUrl: url,
            height: 0,
            id: `pdf:${pdfId}:${pageIndex}`,
            requiresDecryption: false,
            thumbnailUrl: buildPdfPageUrl(bootstrap.img, pageIndex, pageWidth, true),
            url,
            width: pageWidth
          };
        });
      }
      async function fetchFolderDetails(folderId, accountData, authUser = getAuthUser$1()) {
        const userInfo = accountData ?? await fetchAccount(authUser);
        const timestamp = Math.floor(Date.now() / 1e3);
        const authorization = await getSapisidHash(timestamp, {
          u: userInfo[0][0][10]
        });
        const response = await requestProtoJson({
          authUser,
          body: buildFolderDetailsBody(folderId),
          headers: createDriveHeaders(authUser, authorization, {
            "x-goog-ext-472780938-jspb": DRIVE_ITEM_JSPB_EXTENSION,
            "x-goog-fieldmask": DRIVE_ITEM_FIELD_MASK
          }),
          method: "POST",
          url: DRIVE_ITEM_URL
        });
        const item = extractDriveProtoItem(response);
        if (!item) {
          throw new Error("Failed to parse Google Drive folder details");
        }
        const owner = Array.isArray(item[16]) ? item[16] : null;
        const thumbnailVersion = findThumbnailVersion(item);
        return {
          ownerEmail: owner ? findEmailValue(owner) || "Unknown" : "Unknown",
          thumbnailUrl: thumbnailVersion ? `https://lh3.google.com/u/${authUser}/d/${folderId}=s220` : null,
          title: typeof item[2] === "string" && item[2].length > 0 ? item[2] : "Untitled"
        };
      }
      async function fetchFolderDetailsGuest(folderId) {
        const response = await requestProtoJson({
          authUser: "guest",
          body: buildFolderDetailsBody(folderId),
          headers: createGuestHeaders({
            "x-goog-fieldmask": DRIVE_ITEM_FIELD_MASK
          }),
          method: "POST",
          url: DRIVE_GUEST_ITEM_URL
        });
        const item = extractDriveProtoItem(response);
        if (!item) {
          throw new Error("Failed to parse Google Drive folder details");
        }
        const owner = Array.isArray(item[16]) ? item[16] : null;
        const thumbnailVersion = findThumbnailVersion(item);
        return {
          ownerEmail: owner ? findEmailValue(owner) || "Unknown" : "Unknown",
          thumbnailUrl: thumbnailVersion ? `https://drive.google.com/u/0/drive-usercontent/${folderId}=s220` : null,
          title: typeof item[2] === "string" && item[2].length > 0 ? item[2] : "Untitled"
        };
      }
      const accountCache = new Map();
      const pendingAccountRequests = new Map();
      function getAuthUser() {
        return isAuthenticated() ? getAuthUser$1() : "guest";
      }
      function loadAccount(authUser = getAuthUser()) {
        if (!isAuthenticated()) {
          return Promise.resolve(null);
        }
        const cachedAccountData = accountCache.get(authUser);
        if (cachedAccountData) {
          return Promise.resolve(cachedAccountData);
        }
        const pendingRequest = pendingAccountRequests.get(authUser);
        if (pendingRequest) {
          return pendingRequest;
        }
        const request = fetchAccount(authUser).then((accountData) => {
          accountCache.set(authUser, accountData);
          pendingAccountRequests.delete(authUser);
          return accountData;
        }).catch((error) => {
          pendingAccountRequests.delete(authUser);
          throw error;
        });
        pendingAccountRequests.set(authUser, request);
        return request;
      }
      const FOLDER_ID_PATTERN = /\/folders\/([^/?#]+)/;
      const FILE_ID_PATTERN = /\/file\/d\/([^/?#]+)/;
      const DRIVE_FOLDER_MIME = "application/vnd.google-apps.folder";
      const PDF_MIME = "application/pdf";
      const SHORTCUT_MIME = "application/vnd.google-apps.shortcut";
      const PASSWORD_FILE_PATTERN$1 = /^\.password\.(.+?)(?:\.(scanline|noise))?\.truyendrive$/;
      function findShortcutDetails(item) {
        for (let index = 0; index < item.length; index += 1) {
          const candidate = item[index];
          if (Array.isArray(candidate) && typeof candidate[0] === "string" && candidate[0].length > 0 && typeof candidate[2] === "string" && candidate[2].startsWith("application/")) {
            return candidate;
          }
        }
        return null;
      }
      function resolveShortcutItem(item) {
        const mimeType = typeof item[3] === "string" ? item[3] : "";
        if (mimeType !== SHORTCUT_MIME) {
          return item;
        }
        const details = findShortcutDetails(item);
        if (!details) {
          return item;
        }
        const targetItem = Array.isArray(details[4]) ? details[4] : null;
        if (targetItem) {
          return resolveShortcutItem(targetItem);
        }
        const patchedItem = [...item];
        patchedItem[0] = details[0];
        patchedItem[3] = details[2];
        return patchedItem;
      }
      function resolveShortcuts(items) {
        return items.map(resolveShortcutItem);
      }
      function extractPasswordFromItems(items) {
        for (const item of items) {
          const name = typeof item[2] === "string" ? item[2] : "";
          const match = name.match(PASSWORD_FILE_PATTERN$1);
          if (match) {
            return {
              password: match[1] ?? null,
              method: match[2] ?? null
            };
          }
        }
        return { password: null, method: null };
      }
      function isPasswordFileItem(item) {
        const name = typeof item[2] === "string" ? item[2] : "";
        return PASSWORD_FILE_PATTERN$1.test(name);
      }
      function extractImages(items) {
        const images = [];
        items.forEach((item) => {
          const id = typeof item[0] === "string" ? item[0] : "";
          const mimeType = typeof item[3] === "string" ? item[3] : "";
          if (!id || !mimeType.startsWith("image/")) {
            return;
          }
          const dimensions = Array.isArray(item[26]) ? item[26] : null;
          const width = typeof dimensions?.[1] === "number" ? dimensions[1] : 0;
          const height = typeof dimensions?.[2] === "number" ? dimensions[2] : 0;
          images.push({ id, width, height });
        });
        return images;
      }
      function extractChapters(items) {
        const chapters = [];
        items.forEach((item) => {
          const id = typeof item[0] === "string" ? item[0] : "";
          const mimeType = typeof item[3] === "string" ? item[3] : "";
          if (!id || mimeType !== DRIVE_FOLDER_MIME && mimeType !== PDF_MIME) {
            return;
          }
          chapters.push({
            creator: typeof item[16]?.[7] === "string" && item[16][7].length > 0 ? item[16][7] : "Unknown",
            id,
            kind: mimeType === PDF_MIME ? "pdf" : "folder",
            name: typeof item[2] === "string" && item[2].length > 0 ? item[2] : "Untitled",
            updatedAt: typeof item[9] === "number" ? item[9] : 0
          });
        });
        return chapters;
      }
      function classifyItems(items) {
        const contentItems = items.filter((item) => !isPasswordFileItem(item));
        if (contentItems.length === 0) {
          return "empty";
        }
        let allChapters = true;
        let allImages = true;
        contentItems.forEach((item) => {
          const mimeType = typeof item[3] === "string" ? item[3] : "";
          if (mimeType !== DRIVE_FOLDER_MIME && mimeType !== PDF_MIME) {
            allChapters = false;
          }
          if (!mimeType.startsWith("image/")) {
            allImages = false;
          }
        });
        if (allChapters) {
          return "chapters";
        }
        if (allImages) {
          return "images";
        }
        return "mixed";
      }
      function toFolderPageResult$1(items) {
        const classification = classifyItems(items);
        const passwordFile = extractPasswordFromItems(items);
        return {
          chapters: extractChapters(items),
          encryptionMethod: passwordFile.method,
          images: extractImages(items),
          isEmpty: classification === "empty",
          isMixed: classification === "mixed",
          password: passwordFile.password
        };
      }
      class GoogleDriveProvider {
        accountData = null;
        authUser = getAuthUser();
        error = null;
        initGeneration = 0;
        isGuest = !isAuthenticated();
        pendingInit = null;
        getFolderIdFromUrl() {
          return window.location.href.match(FOLDER_ID_PATTERN)?.[1] ?? null;
        }
        getResourceFromUrl() {
          const folderId = this.getFolderIdFromUrl();
          if (folderId) {
            return { id: folderId, kind: "folder" };
          }
          const fileId = window.location.href.match(FILE_ID_PATTERN)?.[1];
          if (fileId) {
            return { id: fileId, kind: "pdf" };
          }
          return null;
        }
        getAuthUser() {
          return getAuthUser();
        }
        getImageUrl(image) {
          if (image.url) {
            return image.url;
          }
          if (this.isGuest) {
            return `https://drive.google.com/u/0/drive-usercontent/${image.id}`;
          }
          return `https://lh3.google.com/u/${this.authUser}/d/${image.id}`;
        }
        buildFetchUrl(image) {
          if (image.fetchUrl ?? image.url) {
            return image.fetchUrl ?? image.url ?? "";
          }
          const base = this.getContentUrl(image.id);
          const width = image.width ?? 0;
          const height = image.height ?? 0;
          if (!base.startsWith("https://drive.google.com/") && !base.startsWith("https://lh3.google.com/")) {
            return base;
          }
          if (!width && !height) {
            return `${base}=w10000`;
          }
          if (width > 1600 || height > 1600) {
            return `${base}=w${width}-h${height}`;
          }
          return base;
        }
        getContentUrl(id) {
          const authUser = this.isGuest ? "0" : this.authUser;
          return `https://drive.google.com/u/${authUser}/drive-usercontent/${id}`;
        }
        getThumbnailUrl(imageId) {
          return `${this.getImageUrl({ id: imageId, width: 0, height: 0 })}=s220`;
        }
        async initialize() {
          const nextAuthUser = getAuthUser();
          if (!isAuthenticated()) {
            this.initGeneration += 1;
            this.authUser = nextAuthUser;
            this.accountData = null;
            this.error = null;
            this.isGuest = true;
            this.pendingInit = null;
            return;
          }
          if (!this.isGuest && this.accountData && this.authUser === nextAuthUser) {
            return;
          }
          if (!this.isGuest && this.error && this.authUser === nextAuthUser) {
            return;
          }
          if (this.pendingInit?.authUser === nextAuthUser) {
            return this.pendingInit.promise;
          }
          const requestGeneration = this.initGeneration + 1;
          this.initGeneration = requestGeneration;
          this.authUser = nextAuthUser;
          this.accountData = null;
          this.error = null;
          this.isGuest = false;
          const request = loadAccount(nextAuthUser).then((accountData) => {
            if (this.initGeneration !== requestGeneration) {
              return;
            }
            if (!accountData) {
              throw new Error("Failed to load account");
            }
            this.accountData = accountData;
            this.error = null;
          }).catch((error) => {
            if (this.initGeneration !== requestGeneration) {
              return;
            }
            this.accountData = null;
            this.error = error instanceof Error ? error : new Error("Failed to load account");
            throw this.error;
          }).finally(() => {
            if (this.pendingInit?.promise === request) {
              this.pendingInit = null;
            }
          });
          this.pendingInit = {
            authUser: nextAuthUser,
            promise: request
          };
          return request;
        }
        isReady() {
          return this.isGuest || this.accountData !== null;
        }
        getInitError() {
          return this.error;
        }
        async fetchFolderPage(folderId, cursor) {
          if (!this.isReady()) {
            await this.initialize();
          }
          if (this.isGuest) {
            const [rawItems2, nextCursor2] = await fetchFolderItemsGuest(
              folderId,
              cursor
            );
            const items2 = resolveShortcuts(rawItems2);
            return [toFolderPageResult$1(items2), nextCursor2 ?? void 0];
          }
          if (!this.accountData) {
            throw this.error ?? new Error("Failed to load account");
          }
          const [rawItems, nextCursor] = await fetchFolderItems(
            folderId,
            cursor,
            this.accountData,
            this.authUser
          );
          const items = resolveShortcuts(rawItems);
          return [toFolderPageResult$1(items), nextCursor ?? void 0];
        }
        async fetchPdfImages(pdfId) {
          if (!this.isReady()) {
            await this.initialize();
          }
          if (this.isGuest) {
            return fetchPdfImages(pdfId, "guest");
          }
          if (!this.accountData) {
            throw this.error ?? new Error("Failed to load account");
          }
          return fetchPdfImages(pdfId, this.authUser);
        }
        async fetchFolderDetails(folderId) {
          if (!this.isReady()) {
            await this.initialize();
          }
          if (this.isGuest) {
            return fetchFolderDetailsGuest(folderId);
          }
          if (!this.accountData) {
            throw this.error ?? new Error("Failed to load account");
          }
          return fetchFolderDetails(folderId, this.accountData, this.authUser);
        }
      }
      const IMAGE_EXTENSIONS = new Set(["avif", "gif", "jpeg", "jpg", "png", "webp"]);
      const ONEDRIVE_ORIGIN = "https://onedrive.live.com";
      const PASSWORD_FILE_PATTERN = /^\.password\.(.+?)(?:\.(scanline|noise))?\.truyendrive$/;
      const FIRST_PAGE_RENDER_OPTIONS = 1496871;
      const PAGED_RENDER_OPTIONS = 1232931;
      function decodeFolderId(value) {
        if (!value) {
          return null;
        }
        try {
          return decodeURIComponent(value);
        } catch {
          return value;
        }
      }
      function getString(value) {
        if (typeof value === "string") {
          return value;
        }
        if (typeof value === "number") {
          return String(value);
        }
        return "";
      }
      function cleanLookupValue(value) {
        const rawValue = getString(value);
        const separatorIndex = rawValue.lastIndexOf(";#");
        return separatorIndex === -1 ? rawValue : rawValue.slice(separatorIndex + 2);
      }
      function getFileName(row) {
        return cleanLookupValue(row.FileLeafRef) || cleanLookupValue(row.LinkFilename) || cleanLookupValue(row.FileRef).split("/").pop() || "Untitled";
      }
      function getExtension(name) {
        const extension = name.split(".").pop();
        return extension ? extension.toLowerCase() : "";
      }
      function isImageRow(row) {
        return getString(row.FSObjType) === "0" && IMAGE_EXTENSIONS.has(getExtension(getFileName(row)));
      }
      function isFolderRow(row) {
        return getString(row.FSObjType) === "1";
      }
      function parseModifiedAt(row) {
        const rawModified = getString(row["Modified."]) || getString(row.Modified);
        const timestamp = Date.parse(rawModified);
        return Number.isFinite(timestamp) ? timestamp : 0;
      }
      function getCreator(row) {
        const editor = row.Editor;
        if (Array.isArray(editor)) {
          const firstEditor = editor[0];
          if (firstEditor && typeof firstEditor === "object" && !Array.isArray(firstEditor)) {
            const email = getString(firstEditor.email);
            if (email) {
              return email;
            }
          }
        }
        return getString(row.Editor) || "Unknown";
      }
      function parseFastMetadata(row) {
        const rawMetadata = getString(row.MediaServiceFastMetadata);
        if (!rawMetadata) {
          return { height: 0, width: 0 };
        }
        try {
          const metadata = JSON.parse(rawMetadata);
          const width = Number(metadata.photo?.width ?? 0);
          const height = Number(metadata.photo?.height ?? 0);
          return {
            height: Number.isFinite(height) ? height : 0,
            width: Number.isFinite(width) ? width : 0
          };
        } catch {
          return { height: 0, width: 0 };
        }
      }
      function getItemIdFromApiUrl(row) {
        const url = getString(row[".spItemUrl"]);
        const match = url.match(/\/items\/([^/?#]+)/);
        return match ? decodeURIComponent(match[1]) : "";
      }
      function getDriveApiBaseFromRows(rows) {
        for (const row of rows) {
          const url = getString(row[".spItemUrl"]);
          const match = url.match(
            /^(https:\/\/onedrive\.live\.com(?::443)?\/_api\/v2\.0\/drives\/[^/]+)/
          );
          if (match) {
            return match[1];
          }
        }
        return null;
      }
      function getImageId(row) {
        return getString(row["name.FileSystemItemId"]) || getString(row.UniqueId) || getItemIdFromApiUrl(row) || getString(row.ID);
      }
      function getFolderPath(row, parentFolderId) {
        const fileRef = cleanLookupValue(row.FileRef);
        if (fileRef) {
          return fileRef;
        }
        const encodedUrl = cleanLookupValue(row.EncodedAbsUrl);
        if (encodedUrl) {
          try {
            return decodeURIComponent(new URL(encodedUrl).pathname);
          } catch {
            return encodedUrl;
          }
        }
        const folderName = getFileName(row);
        return `${parentFolderId.replace(/\/+$/, "")}/${folderName}`;
      }
      function toFolderPageResult(rows, folderId) {
        const chapters = [];
        const images = [];
        let hasChapters = false;
        let hasImages = false;
        let hasOther = false;
        let password = null;
        let encryptionMethod = null;
        rows.forEach((row) => {
          const fileName = getFileName(row);
          const passwordMatch = fileName.match(PASSWORD_FILE_PATTERN);
          if (passwordMatch) {
            password ??= passwordMatch[1];
            encryptionMethod ??= passwordMatch[2] ?? null;
            return;
          }
          if (isFolderRow(row)) {
            hasChapters = true;
            chapters.push({
              creator: getCreator(row),
              id: getFolderPath(row, folderId),
              kind: "folder",
              name: fileName,
              updatedAt: parseModifiedAt(row)
            });
            return;
          }
          if (isImageRow(row)) {
            hasImages = true;
            const id = getImageId(row);
            if (!id) {
              return;
            }
            images.push({
              id,
              ...parseFastMetadata(row)
            });
            return;
          }
          hasOther = true;
        });
        const isEmpty = !hasChapters && !hasImages && !hasOther;
        return {
          chapters,
          encryptionMethod,
          images,
          isEmpty,
          isMixed: !isEmpty && (hasChapters && hasImages || hasOther),
          password
        };
      }
      function getListData(response) {
        return response.ListData ?? response;
      }
      function unwrapListResponse(response) {
        const data = response.d;
        if (!data) {
          return response;
        }
        if ("RenderListDataAsStream" in data && data.RenderListDataAsStream) {
          return data.RenderListDataAsStream;
        }
        return data;
      }
      function getListSchema(response) {
        const listData = getListData(response);
        return response.ListSchema ?? listData.ListSchema ?? null;
      }
      function getNextHref(response) {
        const nextHref = getListData(response).NextHref ?? response.NextHref;
        return nextHref ? nextHref.replace(/&amp;/g, "&") : void 0;
      }
      function getRows(response) {
        const rows = getListData(response).Row ?? response.Row ?? [];
        return Array.isArray(rows) ? rows : [];
      }
      function parseFolderParts(folderId) {
        const cid = folderId.match(/^\/personal\/([^/]+)/)?.[1];
        if (!cid) {
          throw new Error("Invalid OneDrive folder URL");
        }
        const pathParts = folderId.split("/").filter(Boolean);
        const documentsIndex = pathParts.findIndex((part) => part === "Documents");
        const listParts = documentsIndex === -1 ? pathParts.slice(0, Math.min(pathParts.length, 3)) : pathParts.slice(0, documentsIndex + 1);
        return {
          cid,
          listUrl: `/${listParts.join("/")}`,
          rootFolder: folderId
        };
      }
      function parseFolderPartsForRequest(folderId) {
        try {
          return parseFolderParts(folderId);
        } catch {
          throw new Error(
            "Unsupported OneDrive folder URL. Open a personal OneDrive folder and try again."
          );
        }
      }
      function buildListEndpoint(cid) {
        return `${ONEDRIVE_ORIGIN}/personal/${encodeURIComponent(
    cid
  )}/_api/web/GetListUsingPath(DecodedUrl=@a1)/RenderListDataAsStream`;
      }
      function buildFirstPageUrl({ cid, listUrl, rootFolder }, viewId) {
        const query = [
          `@a1=${encodeURIComponent(`'${listUrl}'`)}`,
          `RootFolder=${encodeURIComponent(rootFolder)}`,
          ...viewId ? [`View=${viewId}`] : [],
          "SortField=LinkFilename",
          "SortDir=Asc",
          "TryNewExperienceSingle=TRUE"
        ].join("&");
        return `${buildListEndpoint(cid)}?${query}`;
      }
      function buildPagedUrl({ cid, listUrl }, cursor) {
        const queryPrefix = `@a1=${encodeURIComponent(`'${listUrl}'`)}&TryNewExperienceSingle=TRUE&`;
        const normalizedCursor = cursor.startsWith("?") ? cursor.slice(1) : cursor;
        return `${buildListEndpoint(cid)}?${queryPrefix}${normalizedCursor}`;
      }
      function buildRequestBody(renderOptions, viewXml) {
        return JSON.stringify({
          parameters: {
            __metadata: {
              type: "SP.RenderListDataParameters"
            },
            RenderOptions: renderOptions,
            ...viewXml ? { ViewXml: viewXml } : {},
            AddRequiredFields: true,
            AllowMultipleValueFilterForTaxonomyFields: true,
            RequireFolderColoringFields: true
          }
        });
      }
      function requestJson(url, body, listUrl) {
        return new Promise((resolve, reject) => {
          const xhr = new XMLHttpRequest();
          xhr.open("POST", url, true);
          xhr.withCredentials = true;
          xhr.setRequestHeader("accept", "application/json;odata=verbose");
          xhr.setRequestHeader("content-type", "application/json;odata=verbose");
          xhr.setRequestHeader("application", "onedrive web consumer");
          xhr.setRequestHeader("authorization", "Bearer");
          xhr.setRequestHeader("scenario", "ViewList");
          xhr.setRequestHeader("scenariotype", "AUO");
          if (listUrl) {
            xhr.setRequestHeader(
              "x-sp-requestresources",
              `listUrl=${encodeURIComponent(listUrl)}`
            );
          }
          xhr.onload = () => {
            if (xhr.status < 200 || xhr.status >= 300) {
              reject(new Error(`OneDrive request failed with status ${xhr.status}`));
              return;
            }
            try {
              resolve(JSON.parse(xhr.responseText));
            } catch (error) {
              reject(error);
            }
          };
          xhr.onerror = () => reject(new Error("Network error while requesting OneDrive data"));
          xhr.send(body);
        });
      }
      function hasOneDriveAuthCookie() {
        return /(?:^|;\s*)(?:MUID|OIDCAuth_[^=]+)=/.test(document.cookie);
      }
      class OneDriveProvider {
        activeCid = null;
        driveApiBaseByCid = new Map();
        error = null;
        listViewXmlByFolderId = new Map();
        viewIdByFolderId = new Map();
        metadataLoadedByCid = new Set();
        ownerEmailByCid = new Map();
        ready = false;
        getFolderIdFromUrl() {
          try {
            return decodeFolderId(
              new URL(window.location.href).searchParams.get("id")
            );
          } catch {
            return null;
          }
        }
        getResourceFromUrl() {
          const folderId = this.getFolderIdFromUrl();
          return folderId ? { id: folderId, kind: "folder" } : null;
        }
        getAuthUser() {
          return this.getFolderIdFromUrl()?.match(/^\/personal\/([^/]+)/)?.[1] ?? "onedrive";
        }
        getImageUrl(image) {
          const driveApiBase = this.getDriveApiBase();
          if (!driveApiBase || !image.width && !image.height) {
            return this.getContentUrl(image.id);
          }
          const max = 2560;
          let width = image.width ?? 0;
          let height = image.height ?? 0;
          if (width > max || height > max) {
            if (width >= height) {
              height = Math.round(height / width * max);
              width = max;
            } else {
              width = Math.round(width / height * max);
              height = max;
            }
          }
          const thumbnailWidth = width || max;
          const thumbnailHeight = height || max;
          return `${driveApiBase}/items/${encodeURIComponent(
      image.id
    )}/thumbnails/0/c${thumbnailWidth}x${thumbnailHeight}/content`;
        }
        buildFetchUrl(image) {
          const driveApiBase = this.getDriveApiBase();
          if (!driveApiBase) {
            return this.getContentUrl(image.id);
          }
          const width = image.width ?? 0;
          const height = image.height ?? 0;
          const max = 2560;
          if (!width || !height || width > max || height > max) {
            return this.getContentUrl(image.id);
          }
          return `${driveApiBase}/items/${encodeURIComponent(
      image.id
    )}/thumbnails/0/c${width}x${height}/content`;
        }
        getCurrentCid() {
          const folderId = this.getFolderIdFromUrl();
          if (!folderId) {
            return this.activeCid;
          }
          try {
            return parseFolderParts(folderId).cid;
          } catch {
            return this.activeCid;
          }
        }
        getDriveApiBase() {
          const cid = this.getCurrentCid();
          return cid ? this.driveApiBaseByCid.get(cid) ?? null : null;
        }
        getContentUrl(id) {
          const driveApiBase = this.getDriveApiBase();
          if (!driveApiBase) {
            return "";
          }
          return `${driveApiBase}/items/${encodeURIComponent(id)}/content`;
        }
        getThumbnailUrl(imageId) {
          const driveApiBase = this.getDriveApiBase();
          if (!driveApiBase) {
            return null;
          }
          return `${driveApiBase}/items/${encodeURIComponent(
      imageId
    )}/thumbnails/0/c220x220/content`;
        }
        async initialize() {
          if (hasOneDriveAuthCookie()) {
            this.error = null;
            this.ready = true;
            return;
          }
          this.ready = false;
          this.error = new Error("Not logged in to OneDrive");
          throw this.error;
        }
        isReady() {
          return this.ready;
        }
        getInitError() {
          return this.error;
        }
        async fetchFolderPage(folderId, cursor) {
          if (!this.isReady()) {
            await this.initialize();
          }
          const folderParts = parseFolderPartsForRequest(folderId);
          this.activeCid = folderParts.cid;
          const rawResponse = await requestJson(
            cursor ? buildPagedUrl(folderParts, cursor) : buildFirstPageUrl(
              folderParts,
              this.viewIdByFolderId.get(folderParts.rootFolder)
            ),
            buildRequestBody(
              cursor ? PAGED_RENDER_OPTIONS : FIRST_PAGE_RENDER_OPTIONS,
              this.listViewXmlByFolderId.get(folderParts.rootFolder)
            ),
            folderParts.listUrl
          );
          const response = unwrapListResponse(rawResponse);
          this.updateFolderMetadata(folderParts, response);
          return [
            toFolderPageResult(getRows(response), folderId),
            getNextHref(response)
          ];
        }
        async fetchPdfImages(_pdfId) {
          throw new Error("PDF reader is not supported for OneDrive yet");
        }
        updateFolderMetadata(folderParts, response) {
          const schema = getListSchema(response);
          const rows = getRows(response);
          const driveApiBase = schema?.[".driveUrl"]?.replace(/\/+$/, "") ?? getDriveApiBaseFromRows(rows)?.replace(/\/+$/, "") ?? null;
          if (driveApiBase) {
            this.driveApiBaseByCid.set(folderParts.cid, driveApiBase);
          }
          if (schema?.ViewMetadata?.ListViewXml) {
            this.listViewXmlByFolderId.set(
              folderParts.rootFolder,
              schema.ViewMetadata.ListViewXml
            );
          }
          if (schema?.ViewMetadata?.Id) {
            this.viewIdByFolderId.set(folderParts.rootFolder, schema.ViewMetadata.Id);
          }
          const ownerEmail = schema?.userEmail ?? schema?.PageContextInfo?.userEmail;
          if (ownerEmail) {
            this.ownerEmailByCid.set(folderParts.cid, ownerEmail);
          }
          this.metadataLoadedByCid.add(folderParts.cid);
        }
        async fetchFolderDetails(folderId) {
          if (!this.isReady()) {
            await this.initialize();
          }
          const folderParts = parseFolderPartsForRequest(folderId);
          this.activeCid = folderParts.cid;
          if (!this.metadataLoadedByCid.has(folderParts.cid)) {
            const rawResponse = await requestJson(
              buildFirstPageUrl(
                folderParts,
                this.viewIdByFolderId.get(folderParts.rootFolder)
              ),
              buildRequestBody(
                FIRST_PAGE_RENDER_OPTIONS,
                this.listViewXmlByFolderId.get(folderParts.rootFolder)
              ),
              folderParts.listUrl
            );
            this.updateFolderMetadata(folderParts, unwrapListResponse(rawResponse));
          }
          const rootFolder = folderParts.rootFolder;
          const title = decodeURIComponent(rootFolder.split("/").pop() ?? "");
          return {
            ownerEmail: this.ownerEmailByCid.get(folderParts.cid) ?? "Unknown",
            thumbnailUrl: null,
            title: title || "OneDrive Folder"
          };
        }
      }
      const shadowStyles = ':host{all:initial;background:transparent;color:var(--textCol, #ddd);font-family:Open Sans,sans-serif;position:relative;z-index:2147483647}:host,:host *{box-sizing:border-box}.truyendrive-portal{background:var(--readerBg);color:var(--textCol);font-family:Open Sans,sans-serif;inset:0;line-height:1.3;position:fixed;z-index:2147483647;width:100vw;height:100vh;height:100dvh;overflow:auto}.truyendrive-portal,.truyendrive-portal a,.truyendrive-portal input,.truyendrive-portal label,.truyendrive-portal option,.truyendrive-portal select,.truyendrive-portal textarea{color:inherit}.truyendrive-launcher{align-items:center;background-color:#000;border:1px solid #f00c;border-radius:.2em;bottom:20px;right:80px;color:#ddd;cursor:pointer;display:inline-flex;font:600 .9rem/1 Open Sans,sans-serif;padding:0;position:fixed;z-index:2147483647;transition:all .2s ease}@media(max-width:768px){.truyendrive-launcher{right:20px}}.truyendrive-launcher .launcher-icon{border-right:1px solid #f00c;padding:.6em .8em}.truyendrive-launcher .launcher-text{padding:.6em 1em}.truyendrive-launcher:hover{background-color:#1a1a1a;transform:translateY(-1px)}.reader-close-button{align-items:center;align-self:center;background:transparent;border:1px solid rgba(255,255,255,.16);border-radius:999px;color:var(--textCol);cursor:pointer;display:inline-flex;font:600 .72rem/1 Open Sans,sans-serif;height:auto;margin-right:.8rem;padding:.45rem .8rem;text-transform:uppercase}.reader-close-button:hover{border-color:var(--accentCol);color:var(--accentCol)}.direction-ltr .rdr-image-wrap,.direction-rtl .rdr-image-wrap{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scroll-snap-type:x mandatory}.direction-ltr .rdr-image-wrap .ReaderImageWrapper,.direction-rtl .rdr-image-wrap .ReaderImageWrapper{overflow-y:auto;scroll-snap-align:start}.direction-ttb .rdr-image-wrap{scroll-behavior:smooth}.rdr-page-selector-keys div,.rdr-previews-gallery img,.header,.hide-side-actual,.rdr-groups div{cursor:pointer}.reader-settings-content{display:flex;flex:1;flex-direction:column;max-width:30rem;min-width:20rem;padding-bottom:0}.reader-settings-content header{align-items:center;display:flex;justify-content:space-between}.reader-settings-scroller{overflow-y:auto;padding-bottom:1.5rem}.reader-settings-close{cursor:pointer}.reader-settings-close:before{content:"✕";font-family:Open Sans,sans-serif!important;font-size:.95rem;font-weight:700}.reader-select-wrap{display:flex}.reader-select{appearance:none;background:var(--blackLight);border:1px solid var(--borderColor);border-radius:4px;color:var(--textCol);font:500 .82rem/1.2 Open Sans,sans-serif;min-width:14rem;padding:.65rem .8rem;width:100%}.reader-reset-row{display:flex;justify-content:center;padding:1rem 1rem 1.5rem}.reader-select:focus-visible,.ColorPicker:focus-visible,.ResetButton:focus-visible,.truyendrive-launcher:focus-visible,.reader-close-button:focus-visible{outline:2px solid var(--accentCol);outline-offset:2px}.preload-entity{display:none}';
      const fontStyles = '@font-face{font-family:guya;src:url(data:font/woff;base64,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) format("woff");font-weight:400;font-style:normal}@font-face{font-family:coobaree;src:url(data:font/woff;base64,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) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:inline-icons;src:url(data:application/font-woff;charset=utf-8;base64,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) format("woff");font-weight:400;font-style:normal}';
      const globalStyle = document.createElement("style");
      globalStyle.textContent = fontStyles;
      document.head.appendChild(globalStyle);
      const host = document.createElement("div");
      host.id = "truyendrive-reader-host";
      document.body.append(host);
      const shadowRoot = host.attachShadow({ mode: "open" });
      const mountNode = document.createElement("div");
      shadowRoot.append(mountNode);
      const provider = window.location.hostname === "onedrive.live.com" ? new OneDriveProvider() : new GoogleDriveProvider();
      ReactDOM.createRoot(mountNode).render(
jsxRuntimeExports.jsxs(React.StrictMode, { children: [
jsxRuntimeExports.jsx("style", { children: shadowStyles }),
jsxRuntimeExports.jsx(ProviderProvider, { provider, children: jsxRuntimeExports.jsx(App, {}) })
        ] })
      );

    })
  };
}));

System.register("./decryptWorker-DYbJWN8U-BOfDuyZ4.js", [], (function (exports, module) {
  'use strict';
  return {
    execute: (function () {

      exports({
        decryptInWorker: decryptInWorker,
        xorDecryptInWorker: xorDecryptInWorker
      });

      const WORKER_SOURCE = (
`
"use strict";

function cyrb128(str) {
  var h1 = 1779033703;
  var h2 = 3144134277;
  var h3 = 1013904242;
  var h4 = 2773480762;

  for (var i = 0; i < str.length; i++) {
    var k = str.charCodeAt(i);
    h1 = h2 ^ Math.imul(h1 ^ k, 597399067);
    h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);
    h3 = h4 ^ Math.imul(h3 ^ k, 951274213);
    h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);
  }

  h1 = Math.imul(h3 ^ (h1 >>> 18), 597399067);
  h2 = Math.imul(h4 ^ (h2 >>> 22), 2869860233);
  h3 = Math.imul(h1 ^ (h3 >>> 17), 951274213);
  h4 = Math.imul(h2 ^ (h4 >>> 19), 2716044179);

  return (h1 ^ h2 ^ h3 ^ h4) >>> 0;
}

function mulberry32(seed) {
  var a = seed;
  return function () {
    a += 0x6d2b79f5;
    var t = Math.imul(a ^ (a >>> 15), a | 1);
    t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
    return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
  };
}

function decryptNoise(buffer, password) {
  var data = new Uint8Array(buffer);
  var len = data.length;
  var rand = mulberry32(cyrb128(password));

  for (var i = 0; i < len; i += 4) {
    data[i]     ^= Math.floor(rand() * 256);
    data[i + 1] ^= Math.floor(rand() * 256);
    data[i + 2] ^= Math.floor(rand() * 256);
    // data[i + 3] is alpha — skip
  }

  return buffer;
}

function decryptScanline(buffer, password, width, height) {
  var channels = 4;
  var rowByteLength = width * channels;
  var data = new Uint8Array(buffer);
  var output = new Uint8Array(data.length);
  var rand = mulberry32(cyrb128(password + ":" + width + "x" + height + ":" + channels + ":scanline"));

  for (var row = 0; row < height; row++) {
    var offset = width === 0 ? 0 : Math.floor(rand() * width);
    var reverse = rand() >= 0.5;

    for (var destinationColumn = 0; destinationColumn < width; destinationColumn++) {
      var transformedColumn = reverse ? width - 1 - destinationColumn : destinationColumn;
      var sourceColumn = (transformedColumn + offset) % width;
      var srcStart = row * rowByteLength + sourceColumn * channels;
      var destStart = row * rowByteLength + destinationColumn * channels;

      output[destStart] = data[srcStart];
      output[destStart + 1] = data[srcStart + 1];
      output[destStart + 2] = data[srcStart + 2];
      output[destStart + 3] = data[srcStart + 3];
    }
  }

  return output.buffer;
}

self.onmessage = function (e) {
  var jobId = e.data.jobId;
  var buffer = e.data.buffer;
  var password = e.data.password;
  var method = e.data.method || "noise";
  var width = e.data.width;
  var height = e.data.height;

  var decryptedBuffer = method === "scanline"
    ? decryptScanline(buffer, password, width, height)
    : decryptNoise(buffer, password);

  self.postMessage({ jobId: jobId, buffer: decryptedBuffer }, [decryptedBuffer]);
};
`
      );
      let workerBlobUrl = null;
      function getWorkerBlobUrl() {
        if (!workerBlobUrl) {
          const blob = new Blob([WORKER_SOURCE], { type: "application/javascript" });
          workerBlobUrl = URL.createObjectURL(blob);
        }
        return workerBlobUrl;
      }
      const POOL_SIZE = navigator.hardwareConcurrency ? Math.min(navigator.hardwareConcurrency, 4) : 2;
      let pool = null;
      function getPool() {
        if (!pool) {
          const url = getWorkerBlobUrl();
          pool = Array.from({ length: POOL_SIZE }, () => ({
            worker: new Worker(url),
            busy: false
          }));
        }
        return pool;
      }
      function acquireWorker() {
        const p = getPool();
        const free = p.find((w) => !w.busy);
        if (free) {
          free.busy = true;
          return Promise.resolve(free);
        }
        return new Promise((resolve) => {
          const check = () => {
            const w = p.find((w2) => !w2.busy);
            if (w) {
              w.busy = true;
              resolve(w);
            } else {
              setTimeout(check, 10);
            }
          };
          check();
        });
      }
      function releaseWorker(pw) {
        pw.busy = false;
      }
      let nextJobId = 0;
      async function decryptInWorker(pixelBuffer, password, method, width, height, signal) {
        const pw = await acquireWorker();
        const jobId = nextJobId++;
        return new Promise((resolve, reject) => {
          if (signal?.aborted) {
            releaseWorker(pw);
            reject(signal.reason ?? new DOMException("Aborted", "AbortError"));
            return;
          }
          let settled = false;
          pw.worker.onmessage = (e) => {
            releaseWorker(pw);
            if (settled) return;
            if (e.data.jobId !== jobId) return;
            settled = true;
            signal?.removeEventListener("abort", onAbort);
            resolve(e.data.buffer);
          };
          pw.worker.onerror = (err) => {
            releaseWorker(pw);
            if (settled) return;
            settled = true;
            signal?.removeEventListener("abort", onAbort);
            reject(err);
          };
          const onAbort = () => {
            if (settled) return;
            settled = true;
            reject(signal.reason ?? new DOMException("Aborted", "AbortError"));
          };
          signal?.addEventListener("abort", onAbort, { once: true });
          pw.worker.postMessage(
            { jobId, buffer: pixelBuffer, password, method, width, height },
            [pixelBuffer]
          );
        });
      }
      function xorDecryptInWorker(pixelBuffer, password, signal) {
        return decryptInWorker(pixelBuffer, password, "noise", 0, 0, signal);
      }

    })
  };
}));

System.import("./__entry.js", "./");