From e44bc318ac90035186bc0e35a19c131e6e40837c Mon Sep 17 00:00:00 2001 From: Martin Ziegler Date: Fri, 5 Dec 2025 16:00:56 +0100 Subject: [PATCH] Refactoring AMS module --- backend/app/api/routes/printers.py | 1 + backend/app/schemas/printer.py | 2 + backend/app/services/bambu_mqtt.py | 4 + frontend/src/api/client.ts | 2 + .../src/components/control/AMSSectionDual.tsx | 194 +---- .../components/control/useAmsOperations.ts | 68 +- .../{index-CLNJVLog.js => index-BHvBWY5n.js} | 824 +++++++++--------- static/index.html | 2 +- 8 files changed, 492 insertions(+), 605 deletions(-) rename static/assets/{index-CLNJVLog.js => index-BHvBWY5n.js} (57%) diff --git a/backend/app/api/routes/printers.py b/backend/app/api/routes/printers.py index cdc277b2e..8698f1970 100644 --- a/backend/app/api/routes/printers.py +++ b/backend/app/api/routes/printers.py @@ -310,6 +310,7 @@ async def get_printer_status(printer_id: int, db: AsyncSession = Depends(get_db) ams_status_main=state.ams_status_main, ams_status_sub=state.ams_status_sub, mc_print_sub_stage=state.mc_print_sub_stage, + last_ams_update=state.last_ams_update, ) diff --git a/backend/app/schemas/printer.py b/backend/app/schemas/printer.py index 908969dc7..fd5923a66 100644 --- a/backend/app/schemas/printer.py +++ b/backend/app/schemas/printer.py @@ -143,3 +143,5 @@ class PrinterStatus(BaseModel): ams_status_sub: int = 0 # mc_print_sub_stage - filament change step indicator used by OrcaSlicer/BambuStudio mc_print_sub_stage: int = 0 + # Timestamp of last AMS data update (for RFID refresh detection) + last_ams_update: float = 0.0 diff --git a/backend/app/services/bambu_mqtt.py b/backend/app/services/bambu_mqtt.py index 5bc1d9127..f933dd825 100644 --- a/backend/app/services/bambu_mqtt.py +++ b/backend/app/services/bambu_mqtt.py @@ -130,6 +130,8 @@ class PrinterState: ams_mapping: list = field(default_factory=list) # Per-AMS extruder map: {ams_id: extruder_id} where 0=right, 1=left ams_extruder_map: dict = field(default_factory=dict) + # Timestamp of last AMS data update (for RFID refresh detection) + last_ams_update: float = 0.0 # Stage name mapping from BambuStudio DeviceManager.cpp @@ -796,6 +798,8 @@ class BambuMQTTClient: # Store AMS data in raw_data so it's accessible via API self.state.raw_data["ams"] = ams_list + # Update timestamp for RFID refresh detection (frontend can detect "new data arrived") + self.state.last_ams_update = time.time() logger.debug(f"[{self.serial_number}] Stored AMS data with {len(ams_list)} units") # Extract ams_extruder_map from each AMS unit's info field diff --git a/frontend/src/api/client.ts b/frontend/src/api/client.ts index 0f3a4fe0f..217ec7f71 100644 --- a/frontend/src/api/client.ts +++ b/frontend/src/api/client.ts @@ -147,6 +147,8 @@ export interface PrinterStatus { ams_status_sub: number; // mc_print_sub_stage - filament change step indicator used by OrcaSlicer/BambuStudio mc_print_sub_stage: number; + // Timestamp of last AMS data update (for RFID refresh detection) + last_ams_update: number; } export interface PrinterCreate { diff --git a/frontend/src/components/control/AMSSectionDual.tsx b/frontend/src/components/control/AMSSectionDual.tsx index 2148abac4..86b9cc491 100644 --- a/frontend/src/components/control/AMSSectionDual.tsx +++ b/frontend/src/components/control/AMSSectionDual.tsx @@ -934,6 +934,7 @@ export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }: // Get ams_status values from printer status const amsStatusMain = status?.ams_status_main ?? 0; const trayNow = status?.tray_now ?? 255; + const lastAmsUpdate = status?.last_ams_update ?? 0; // AMS Operations hook - manages state machine for refresh/load/unload const amsOps = useAmsOperations({ @@ -941,6 +942,7 @@ export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }: amsUnits, amsStatusMain, trayNow, + lastAmsUpdate, onToast: showToast, }); @@ -967,60 +969,7 @@ export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }: } }, [status?.tray_now]); - // Watch for AMS data updates to clear the refresh spinner - // When the printer reports updated tray data after RFID read, clear the spinner - const prevAmsDataRef = useRef(''); - useEffect(() => { - if (!refreshingSlotState) return; - // Find the refreshing slot's current data - const { amsId, trayId, startTime } = refreshingSlotState; - const unit = amsUnits.find(u => u.id === amsId); - const tray = unit?.tray?.find(t => t.id === trayId); - - if (!tray) return; - - // Create a signature of the tray data to detect changes - const traySignature = JSON.stringify({ - tag_uid: tray.tag_uid, - tray_uuid: tray.tray_uuid, - tray_id_name: tray.tray_id_name, - tray_type: tray.tray_type, - tray_color: tray.tray_color, - }); - - // If we have previous data and it changed, the refresh is complete - // Also require at least 500ms to have passed (to avoid false positives from initial render) - const elapsed = Date.now() - startTime; - if (prevAmsDataRef.current && prevAmsDataRef.current !== traySignature && elapsed > 500) { - console.log(`[AMSSectionDual] RFID refresh complete for AMS ${amsId} tray ${trayId} (took ${elapsed}ms)`); - setRefreshingSlotState(null); - } - - // Update the ref for next comparison - prevAmsDataRef.current = traySignature; - }, [refreshingSlotState, amsUnits]); - - const loadMutation = useMutation({ - mutationFn: ({ trayId, extruderId }: { trayId: number; extruderId?: number }) => - api.amsLoadFilament(printerId, trayId, extruderId), - onSuccess: (data, { trayId, extruderId }) => { - console.log(`[AMSSectionDual] Load filament success (tray ${trayId}, extruder ${extruderId}):`, data); - }, - onError: (error, { trayId, extruderId }) => { - console.error(`[AMSSectionDual] Load filament error (tray ${trayId}, extruder ${extruderId}):`, error); - }, - }); - - const unloadMutation = useMutation({ - mutationFn: () => api.amsUnloadFilament(printerId), - onSuccess: (data) => { - console.log(`[AMSSectionDual] Unload filament success:`, data); - }, - onError: (error) => { - console.error(`[AMSSectionDual] Unload filament error:`, error); - }, - }); // Handle tray selection const handleTraySelect = (trayId: number | null) => { @@ -1053,132 +1002,43 @@ export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }: console.log(`[AMSSectionDual] handleLoad called, selectedTray: ${selectedTray}`); if (selectedTray !== null) { const extruderId = getExtruderIdForTray(selectedTray); - console.log(`[AMSSectionDual] Calling loadMutation.mutate(tray: ${selectedTray}, extruder: ${extruderId})`); - // Set ref synchronously FIRST (refs update immediately, before MQTT can respond) - intendedOperationRef.current = 'load'; - // Show filament change card immediately - setUserFilamentChange({ isLoading: true, targetTrayId: selectedTray }); - loadMutation.mutate({ trayId: selectedTray, extruderId }); + console.log(`[AMSSectionDual] Starting load via hook: tray ${selectedTray}, extruder ${extruderId}`); + amsOps.startLoad(selectedTray, extruderId); } }; const handleUnload = () => { - console.log(`[AMSSectionDual] handleUnload called, printerId: ${printerId}, trayNow: ${status?.tray_now}`); - // Set ref synchronously FIRST (refs update immediately, before MQTT can respond) - intendedOperationRef.current = 'unload'; - // Show filament change card immediately (no target tray for unload) - setUserFilamentChange({ isLoading: false, targetTrayId: null }); - console.log(`[AMSSectionDual] Calling unloadMutation.mutate()`); - unloadMutation.mutate(); + console.log(`[AMSSectionDual] handleUnload called, printerId: ${printerId}, trayNow: ${trayNow}`); + amsOps.startUnload(); }; // Callback for FilamentChangeCard to close itself const handleFilamentChangeComplete = () => { - console.log(`[AMSSectionDual] FilamentChangeCard completed, closing card`); - intendedOperationRef.current = null; // Clear the synchronous ref - setUserFilamentChange(null); + console.log(`[AMSSectionDual] FilamentChangeCard completed, resetting operation`); + amsOps.reset(); }; - const isLoading = loadMutation.isPending || unloadMutation.isPending; - // Handlers for modals and actions const handleHumidityClick = (humidity: number, temp: number) => { setHumidityModal({ humidity, temp }); }; - const refreshMutation = useMutation({ - mutationFn: ({ amsId, trayId }: { amsId: number; trayId: number }) => - api.refreshAmsTray(printerId, amsId, trayId), - onSuccess: (data, variables) => { - console.log(`[AMSSectionDual] Tray refresh response (AMS ${variables.amsId}, Tray ${variables.trayId}):`, data); - if (data.success) { - showToast(data.message || 'RFID refresh started', 'success'); - } else { - showToast(data.message || 'Failed to refresh tray', 'error'); - } - }, - onError: (error, variables) => { - console.error(`[AMSSectionDual] Tray refresh error (AMS ${variables.amsId}, Tray ${variables.trayId}):`, error); - showToast('Failed to refresh tray', 'error'); - }, - }); - const handleSlotRefresh = (amsId: number, slotId: number) => { - // Trigger RFID re-read for the specific tray - console.log(`[AMSSectionDual] Slot refresh triggered: AMS ${amsId}, Slot ${slotId}, printerId: ${printerId}`); - // Reset the previous data ref so we can detect the next change - prevAmsDataRef.current = ''; - // Show spinner immediately - will be cleared when AMS data updates from MQTT - const startTime = Date.now(); - setRefreshingSlotState({ amsId, trayId: slotId, startTime }); - refreshMutation.mutate({ amsId, trayId: slotId }); - // Fallback timeout (15s) in case data doesn't change (e.g., same spool re-read) - setTimeout(() => { - setRefreshingSlotState(prev => { - if (prev && prev.startTime === startTime) { - console.log(`[AMSSectionDual] RFID refresh timeout for AMS ${amsId} tray ${slotId}`); - return null; - } - return prev; - }); - }, 15000); + console.log(`[AMSSectionDual] Slot refresh triggered: AMS ${amsId}, Slot ${slotId}`); + amsOps.startRefresh(amsId, slotId); }; const handleEyeClick = (tray: AMSTray, slotLabel: string, amsId: number) => { setMaterialsModal({ tray, slotLabel, amsId }); }; - // Determine if we're in a filament change state (from MQTT ams_status) - // ams_status_main: 0=idle, 1=filament_change, 2=rfid_identifying, 3=assist, 4=calibration - // mc_print_sub_stage: step indicator used by BambuStudio/OrcaSlicer for filament change progress - const amsStatusMain = status?.ams_status_main ?? 0; + // Show FilamentChangeCard when operation is in progress (LOADING or UNLOADING state) const isMqttFilamentChangeActive = amsStatusMain === 1; - - // Auto-close card when operation completes - // Track when we transition from filament change active to idle (ams_status_main 1 -> 0) - const prevAmsStatusMainRef = useRef(amsStatusMain); - // Track if we've seen ams_status_main = 1 since the user clicked load/unload - // This prevents premature card closure on brief status glitches - const operationStartedRef = useRef(false); - useEffect(() => { - const wasActive = prevAmsStatusMainRef.current === 1; - - if (isMqttFilamentChangeActive) { - // MQTT is now reporting filament change - operation has started - operationStartedRef.current = true; - // Clear user-triggered state, card will continue showing because isMqttFilamentChangeActive is true - setUserFilamentChange(null); - } else if (wasActive && !isMqttFilamentChangeActive && operationStartedRef.current) { - // Transition from active (1) to idle (0), AND we've confirmed operation started - // Close the card by clearing user state and the synchronous ref - console.log(`[AMSSectionDual] ams_status_main transitioned 1->0, operation was started, closing card`); - intendedOperationRef.current = null; - operationStartedRef.current = false; - setUserFilamentChange(null); - } - - // Update previous status for next comparison - prevAmsStatusMainRef.current = amsStatusMain; - }, [isMqttFilamentChangeActive, amsStatusMain]); - - // Show FilamentChangeCard when either MQTT reports active ams_status OR user just clicked load/unload - const showFilamentChangeCard = isMqttFilamentChangeActive || userFilamentChange !== null; + const showFilamentChangeCard = amsOps.state === 'LOADING' || amsOps.state === 'UNLOADING' || isMqttFilamentChangeActive; // Get the loaded tray info for wire coloring // Wire coloring should show the path from the currently loaded filament to the extruder // But ONLY if the currently displayed AMS panel is the one with the loaded filament - const trayNow = status?.tray_now ?? 255; - - // Determine if loading or unloading for the card display - // Priority: 1) Synchronous ref (set immediately on click), 2) React state, 3) MQTT signals - // The ref prevents race conditions where MQTT updates arrive before React state updates - const amsStatusSub = status?.ams_status_sub ?? 0; - const SUB_RETRACT = 4; // Only happens during unload - const isFilamentLoading = - intendedOperationRef.current === 'load' ? true : - intendedOperationRef.current === 'unload' ? false : - userFilamentChange !== null ? userFilamentChange.isLoading : - !(amsStatusSub === SUB_RETRACT || trayNow === 255); // Unload if retracting or tray_now is 255 const getLoadedTrayInfo = (): { leftActiveSlot: number | null; rightActiveSlot: number | null; @@ -1235,8 +1095,10 @@ export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }: const { leftActiveSlot, rightActiveSlot, leftFilamentColor, rightFilamentColor } = getLoadedTrayInfo(); - // Use state-based refreshing slot for spinner visibility (minimum 1.5s display time) - const refreshingSlot = refreshingSlotState; + // Create refreshingSlot object from hook state for spinner visibility + const refreshingSlot = amsOps.state === 'REFRESHING' && amsOps.context?.refreshTarget + ? { amsId: amsOps.context.refreshTarget.amsId, trayId: amsOps.context.refreshTarget.trayId } + : null; return (
@@ -1304,33 +1166,33 @@ export function AMSSectionDual({ printerId, printerModel, status, nozzleCount }:
- {/* Unload button: disabled if not connected, printing, mutation pending, or no filament loaded */} + {/* Unload button: disabled if not connected, printing, operation in progress, or no filament loaded */} - {/* Load button: disabled if not connected, printing, mutation pending, no tray selected, or selected tray is already loaded */} + {/* Load button: disabled if not connected, printing, operation in progress, no tray selected, or selected tray is already loaded */}
{/* Error messages */} - {(loadMutation.error || unloadMutation.error) && ( + {(amsOps.loadError || amsOps.unloadError) && (

- {(loadMutation.error || unloadMutation.error)?.message} + {(amsOps.loadError || amsOps.unloadError)?.message}

)} {/* Filament Change Progress Card - appears during load/unload operations */} {showFilamentChangeCard && ( )} diff --git a/frontend/src/components/control/useAmsOperations.ts b/frontend/src/components/control/useAmsOperations.ts index 44e808337..1af17a614 100644 --- a/frontend/src/components/control/useAmsOperations.ts +++ b/frontend/src/components/control/useAmsOperations.ts @@ -43,6 +43,7 @@ interface UseAmsOperationsProps { amsUnits: AMSUnit[]; amsStatusMain: number; trayNow: number; + lastAmsUpdate: number; // Backend timestamp for detecting AMS data updates onToast: (message: string, type: 'success' | 'error') => void; } @@ -82,6 +83,7 @@ export function useAmsOperations({ amsUnits, amsStatusMain, trayNow, + lastAmsUpdate, onToast, }: UseAmsOperationsProps): UseAmsOperationsReturn { const [state, setState] = useState('IDLE'); @@ -89,7 +91,10 @@ export function useAmsOperations({ // Track previous values for transition detection const prevAmsStatusMainRef = useRef(amsStatusMain); - const prevTrayDataRef = useRef(''); + // Track initial tray data signature for detecting changes during refresh + const refreshInitialDataRef = useRef(''); + // Track initial lastAmsUpdate value at start of refresh (to detect when new data arrives) + const refreshInitialAmsUpdateRef = useRef(0); // Timeout ref for cleanup const timeoutRef = useRef(null); @@ -107,19 +112,10 @@ export function useAmsOperations({ clearOperationTimeout(); setState('IDLE'); setContext(null); - prevTrayDataRef.current = ''; + refreshInitialDataRef.current = ''; + refreshInitialAmsUpdateRef.current = 0; }, [clearOperationTimeout]); - // Set up timeout for current operation - const startOperationTimeout = useCallback((timeoutMs: number) => { - clearOperationTimeout(); - const startTime = context?.startTime ?? Date.now(); - timeoutRef.current = setTimeout(() => { - console.log(`[useAmsOperations] Operation timed out after ${timeoutMs}ms`); - reset(); - }, timeoutMs); - }, [clearOperationTimeout, reset, context?.startTime]); - // === Mutations === const refreshMutation = useMutation({ @@ -173,22 +169,24 @@ export function useAmsOperations({ return; } - console.log(`[useAmsOperations] Starting refresh: AMS ${amsId}, Tray ${trayId}`); - - // Capture current tray data signature for change detection + // Capture current tray data to detect changes const unit = amsUnits.find(u => u.id === amsId); const tray = unit?.tray?.find(t => t.id === trayId); if (tray) { - prevTrayDataRef.current = JSON.stringify({ + refreshInitialDataRef.current = JSON.stringify({ tag_uid: tray.tag_uid, tray_uuid: tray.tray_uuid, - tray_id_name: tray.tray_id_name, tray_type: tray.tray_type, tray_color: tray.tray_color, }); } + // Capture initial lastAmsUpdate to detect when NEW data arrives + refreshInitialAmsUpdateRef.current = lastAmsUpdate; + const startTime = Date.now(); + console.log(`[useAmsOperations] Starting refresh: AMS ${amsId}, Tray ${trayId}, startTime=${startTime}, initialAmsUpdate=${lastAmsUpdate}`); + setState('REFRESHING'); setContext({ refreshTarget: { amsId, trayId }, startTime }); @@ -199,7 +197,7 @@ export function useAmsOperations({ }, REFRESH_TIMEOUT_MS); refreshMutation.mutate({ amsId, trayId }); - }, [state, amsUnits, reset, refreshMutation]); + }, [state, amsUnits, lastAmsUpdate, reset, refreshMutation]); const startLoad = useCallback((trayId: number, extruderId?: number) => { if (state !== 'IDLE') { @@ -245,31 +243,49 @@ export function useAmsOperations({ // === Completion Detection === - // Detect REFRESH completion via tray data change + // Detect REFRESH completion by waiting for new AMS data to arrive + // RFID read takes 5-10 seconds. We detect completion when: + // 1. Data changed (new/different spool detected) - complete after minimum 1s + // 2. lastAmsUpdate timestamp changed from initial AND elapsed > 5 seconds + // This means a new AMS data packet arrived after the RFID read should be done useEffect(() => { if (state !== 'REFRESHING' || !context?.refreshTarget) return; const { amsId, trayId } = context.refreshTarget; + const elapsed = Date.now() - context.startTime; + + // Get current tray data const unit = amsUnits.find(u => u.id === amsId); const tray = unit?.tray?.find(t => t.id === trayId); - if (!tray) return; - const currentSignature = JSON.stringify({ + const currentData = JSON.stringify({ tag_uid: tray.tag_uid, tray_uuid: tray.tray_uuid, - tray_id_name: tray.tray_id_name, tray_type: tray.tray_type, tray_color: tray.tray_color, }); - // Require minimum 500ms to avoid false positives from initial render - const elapsed = Date.now() - context.startTime; - if (prevTrayDataRef.current && prevTrayDataRef.current !== currentSignature && elapsed > 500) { + // Check if data changed (new spool detected) + const dataChanged = refreshInitialDataRef.current && currentData !== refreshInitialDataRef.current; + + // Check if lastAmsUpdate changed from when we started + const amsUpdateChanged = lastAmsUpdate !== refreshInitialAmsUpdateRef.current; + + // Primary completion: data changed (new spool detected) - complete quickly + if (dataChanged && elapsed > 1000) { console.log(`[useAmsOperations] Refresh complete: data changed for AMS ${amsId} tray ${trayId} (took ${elapsed}ms)`); reset(); + return; } - }, [state, context, amsUnits, reset]); + + // Secondary completion: new AMS update received after minimum wait time + // Wait 8 seconds to ensure RFID read has time to complete before considering updates + if (amsUpdateChanged && elapsed > 8000) { + console.log(`[useAmsOperations] Refresh complete: new AMS update after ${elapsed}ms for AMS ${amsId} tray ${trayId}`); + reset(); + } + }, [state, context, amsUnits, lastAmsUpdate, reset]); // Detect LOAD/UNLOAD completion via ams_status_main transition 1 → 0 useEffect(() => { diff --git a/static/assets/index-CLNJVLog.js b/static/assets/index-BHvBWY5n.js similarity index 57% rename from static/assets/index-CLNJVLog.js rename to static/assets/index-BHvBWY5n.js index 586372011..f608710ce 100644 --- a/static/assets/index-CLNJVLog.js +++ b/static/assets/index-BHvBWY5n.js @@ -1,18 +1,18 @@ -function rne(t,e){for(var n=0;ni[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const a of r)if(a.type==="childList")for(const s of a.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&i(s)}).observe(document,{childList:!0,subtree:!0});function n(r){const a={};return r.integrity&&(a.integrity=r.integrity),r.referrerPolicy&&(a.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?a.credentials="include":r.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function i(r){if(r.ep)return;r.ep=!0;const a=n(r);fetch(r.href,a)}})();var Nb=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Js(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var AA={exports:{}},Ng={};var Z4;function ane(){if(Z4)return Ng;Z4=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(i,r,a){var s=null;if(a!==void 0&&(s=""+a),r.key!==void 0&&(s=""+r.key),"key"in r){a={};for(var o in r)o!=="key"&&(a[o]=r[o])}else a=r;return r=a.ref,{$$typeof:t,type:i,key:s,ref:r!==void 0?r:null,props:a}}return Ng.Fragment=e,Ng.jsx=n,Ng.jsxs=n,Ng}var Q4;function sne(){return Q4||(Q4=1,AA.exports=ane()),AA.exports}var h=sne(),TA={exports:{}},Kt={};var J4;function one(){if(J4)return Kt;J4=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),s=Symbol.for("react.context"),o=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),c=Symbol.for("react.memo"),u=Symbol.for("react.lazy"),f=Symbol.for("react.activity"),g=Symbol.iterator;function m(H){return H===null||typeof H!="object"?null:(H=g&&H[g]||H["@@iterator"],typeof H=="function"?H:null)}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},b=Object.assign,v={};function x(H,X,ae){this.props=H,this.context=X,this.refs=v,this.updater=ae||y}x.prototype.isReactComponent={},x.prototype.setState=function(H,X){if(typeof H!="object"&&typeof H!="function"&&H!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,H,X,"setState")},x.prototype.forceUpdate=function(H){this.updater.enqueueForceUpdate(this,H,"forceUpdate")};function M(){}M.prototype=x.prototype;function w(H,X,ae){this.props=H,this.context=X,this.refs=v,this.updater=ae||y}var A=w.prototype=new M;A.constructor=w,b(A,x.prototype),A.isPureReactComponent=!0;var T=Array.isArray;function R(){}var N={H:null,A:null,T:null,S:null},j=Object.prototype.hasOwnProperty;function C(H,X,ae){var ce=ae.ref;return{$$typeof:t,type:H,key:X,ref:ce!==void 0?ce:null,props:ae}}function k(H,X){return C(H.type,X,H.props)}function F(H){return typeof H=="object"&&H!==null&&H.$$typeof===t}function I(H){var X={"=":"=0",":":"=2"};return"$"+H.replace(/[=:]/g,function(ae){return X[ae]})}var G=/\/+/g;function L(H,X){return typeof H=="object"&&H!==null&&H.key!=null?I(""+H.key):X.toString(36)}function B(H){switch(H.status){case"fulfilled":return H.value;case"rejected":throw H.reason;default:switch(typeof H.status=="string"?H.then(R,R):(H.status="pending",H.then(function(X){H.status==="pending"&&(H.status="fulfilled",H.value=X)},function(X){H.status==="pending"&&(H.status="rejected",H.reason=X)})),H.status){case"fulfilled":return H.value;case"rejected":throw H.reason}}throw H}function $(H,X,ae,ce,ve){var te=typeof H;(te==="undefined"||te==="boolean")&&(H=null);var be=!1;if(H===null)be=!0;else switch(te){case"bigint":case"string":case"number":be=!0;break;case"object":switch(H.$$typeof){case t:case e:be=!0;break;case u:return be=H._init,$(be(H._payload),X,ae,ce,ve)}}if(be)return ve=ve(H),be=ce===""?"."+L(H,0):ce,T(ve)?(ae="",be!=null&&(ae=be.replace(G,"$&/")+"/"),$(ve,X,ae,"",function(ge){return ge})):ve!=null&&(F(ve)&&(ve=k(ve,ae+(ve.key==null||H&&H.key===ve.key?"":(""+ve.key).replace(G,"$&/")+"/")+be)),X.push(ve)),1;be=0;var Pe=ce===""?".":ce+":";if(T(H))for(var he=0;he>>1,se=$[Z];if(0>>1;Zr(ae,Y))cer(ve,ae)?($[Z]=ve,$[ce]=Y,Z=ce):($[Z]=ae,$[X]=Y,Z=X);else if(cer(ve,Y))$[Z]=ve,$[ce]=Y,Z=ce;else break e}}return V}function r($,V){var Y=$.sortIndex-V.sortIndex;return Y!==0?Y:$.id-V.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var a=performance;t.unstable_now=function(){return a.now()}}else{var s=Date,o=s.now();t.unstable_now=function(){return s.now()-o}}var l=[],c=[],u=1,f=null,g=3,m=!1,y=!1,b=!1,v=!1,x=typeof setTimeout=="function"?setTimeout:null,M=typeof clearTimeout=="function"?clearTimeout:null,w=typeof setImmediate<"u"?setImmediate:null;function A($){for(var V=n(c);V!==null;){if(V.callback===null)i(c);else if(V.startTime<=$)i(c),V.sortIndex=V.expirationTime,e(l,V);else break;V=n(c)}}function T($){if(b=!1,A($),!y)if(n(l)!==null)y=!0,R||(R=!0,I());else{var V=n(c);V!==null&&B(T,V.startTime-$)}}var R=!1,N=-1,j=5,C=-1;function k(){return v?!0:!(t.unstable_now()-C$&&k());){var Z=f.callback;if(typeof Z=="function"){f.callback=null,g=f.priorityLevel;var se=Z(f.expirationTime<=$);if($=t.unstable_now(),typeof se=="function"){f.callback=se,A($),V=!0;break t}f===n(l)&&i(l),A($)}else i(l);f=n(l)}if(f!==null)V=!0;else{var H=n(c);H!==null&&B(T,H.startTime-$),V=!1}}break e}finally{f=null,g=Y,m=!1}V=void 0}}finally{V?I():R=!1}}}var I;if(typeof w=="function")I=function(){w(F)};else if(typeof MessageChannel<"u"){var G=new MessageChannel,L=G.port2;G.port1.onmessage=F,I=function(){L.postMessage(null)}}else I=function(){x(F,0)};function B($,V){N=x(function(){$(t.unstable_now())},V)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function($){$.callback=null},t.unstable_forceFrameRate=function($){0>$||125<$?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):j=0<$?Math.floor(1e3/$):5},t.unstable_getCurrentPriorityLevel=function(){return g},t.unstable_next=function($){switch(g){case 1:case 2:case 3:var V=3;break;default:V=g}var Y=g;g=V;try{return $()}finally{g=Y}},t.unstable_requestPaint=function(){v=!0},t.unstable_runWithPriority=function($,V){switch($){case 1:case 2:case 3:case 4:case 5:break;default:$=3}var Y=g;g=$;try{return V()}finally{g=Y}},t.unstable_scheduleCallback=function($,V,Y){var Z=t.unstable_now();switch(typeof Y=="object"&&Y!==null?(Y=Y.delay,Y=typeof Y=="number"&&0Z?($.sortIndex=Y,e(c,$),n(l)===null&&$===n(c)&&(b?(M(N),N=-1):b=!0,B(T,Y-Z))):($.sortIndex=se,e(l,$),y||m||(y=!0,R||(R=!0,I()))),$},t.unstable_shouldYield=k,t.unstable_wrapCallback=function($){var V=g;return function(){var Y=g;g=V;try{return $.apply(this,arguments)}finally{g=Y}}}})(RA)),RA}var nU;function une(){return nU||(nU=1,NA.exports=cne()),NA.exports}var PA={exports:{}},Xr={};var iU;function dne(){if(iU)return Xr;iU=1;var t=xm();function e(l){var c="https://react.dev/errors/"+l;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),PA.exports=dne(),PA.exports}var aU;function fne(){if(aU)return Rg;aU=1;var t=une(),e=xm(),n=vG();function i(d){var p="https://react.dev/errors/"+d;if(1se||(d.current=Z[se],Z[se]=null,se--)}function ae(d,p){se++,Z[se]=d.current,d.current=p}var ce=H(null),ve=H(null),te=H(null),be=H(null);function Pe(d,p){switch(ae(te,p),ae(ve,d),ae(ce,null),p.nodeType){case 9:case 11:d=(d=p.documentElement)&&(d=d.namespaceURI)?y4(d):0;break;default:if(d=p.tagName,p=p.namespaceURI)p=y4(p),d=_4(p,d);else switch(d){case"svg":d=1;break;case"math":d=2;break;default:d=0}}X(ce),ae(ce,d)}function he(){X(ce),X(ve),X(te)}function ge(d){d.memoizedState!==null&&ae(be,d);var p=ce.current,_=_4(p,d.type);p!==_&&(ae(ve,d),ae(ce,_))}function De(d){ve.current===d&&(X(ce),X(ve)),be.current===d&&(X(be),Eg._currentValue=Y)}var oe,ct;function z(d){if(oe===void 0)try{throw Error()}catch(_){var p=_.stack.trim().match(/\n( *(at )?)/);oe=p&&p[1]||"",ct=-1<_.stack.indexOf(` +function ane(t,e){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const a of i)if(a.type==="childList")for(const s of a.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(i){const a={};return i.integrity&&(a.integrity=i.integrity),i.referrerPolicy&&(a.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?a.credentials="include":i.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function r(i){if(i.ep)return;i.ep=!0;const a=n(i);fetch(i.href,a)}})();var Nb=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Js(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var AA={exports:{}},Ng={};var Z4;function sne(){if(Z4)return Ng;Z4=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(r,i,a){var s=null;if(a!==void 0&&(s=""+a),i.key!==void 0&&(s=""+i.key),"key"in i){a={};for(var o in i)o!=="key"&&(a[o]=i[o])}else a=i;return i=a.ref,{$$typeof:t,type:r,key:s,ref:i!==void 0?i:null,props:a}}return Ng.Fragment=e,Ng.jsx=n,Ng.jsxs=n,Ng}var Q4;function one(){return Q4||(Q4=1,AA.exports=sne()),AA.exports}var h=one(),TA={exports:{}},Kt={};var J4;function lne(){if(J4)return Kt;J4=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),s=Symbol.for("react.context"),o=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),c=Symbol.for("react.memo"),u=Symbol.for("react.lazy"),f=Symbol.for("react.activity"),g=Symbol.iterator;function m($){return $===null||typeof $!="object"?null:($=g&&$[g]||$["@@iterator"],typeof $=="function"?$:null)}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},v=Object.assign,b={};function x($,X,ae){this.props=$,this.context=X,this.refs=b,this.updater=ae||y}x.prototype.isReactComponent={},x.prototype.setState=function($,X){if(typeof $!="object"&&typeof $!="function"&&$!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,$,X,"setState")},x.prototype.forceUpdate=function($){this.updater.enqueueForceUpdate(this,$,"forceUpdate")};function M(){}M.prototype=x.prototype;function w($,X,ae){this.props=$,this.context=X,this.refs=b,this.updater=ae||y}var A=w.prototype=new M;A.constructor=w,v(A,x.prototype),A.isPureReactComponent=!0;var T=Array.isArray;function R(){}var N={H:null,A:null,T:null,S:null},j=Object.prototype.hasOwnProperty;function C($,X,ae){var ce=ae.ref;return{$$typeof:t,type:$,key:X,ref:ce!==void 0?ce:null,props:ae}}function k($,X){return C($.type,X,$.props)}function U($){return typeof $=="object"&&$!==null&&$.$$typeof===t}function I($){var X={"=":"=0",":":"=2"};return"$"+$.replace(/[=:]/g,function(ae){return X[ae]})}var H=/\/+/g;function O($,X){return typeof $=="object"&&$!==null&&$.key!=null?I(""+$.key):X.toString(36)}function B($){switch($.status){case"fulfilled":return $.value;case"rejected":throw $.reason;default:switch(typeof $.status=="string"?$.then(R,R):($.status="pending",$.then(function(X){$.status==="pending"&&($.status="fulfilled",$.value=X)},function(X){$.status==="pending"&&($.status="rejected",$.reason=X)})),$.status){case"fulfilled":return $.value;case"rejected":throw $.reason}}throw $}function V($,X,ae,ce,xe){var te=typeof $;(te==="undefined"||te==="boolean")&&($=null);var ve=!1;if($===null)ve=!0;else switch(te){case"bigint":case"string":case"number":ve=!0;break;case"object":switch($.$$typeof){case t:case e:ve=!0;break;case u:return ve=$._init,V(ve($._payload),X,ae,ce,xe)}}if(ve)return xe=xe($),ve=ce===""?"."+O($,0):ce,T(xe)?(ae="",ve!=null&&(ae=ve.replace(H,"$&/")+"/"),V(xe,X,ae,"",function(me){return me})):xe!=null&&(U(xe)&&(xe=k(xe,ae+(xe.key==null||$&&$.key===xe.key?"":(""+xe.key).replace(H,"$&/")+"/")+ve)),X.push(xe)),1;ve=0;var De=ce===""?".":ce+":";if(T($))for(var he=0;he<$.length;he++)ce=$[he],te=De+O(ce,he),ve+=V(ce,X,ae,te,xe);else if(he=m($),typeof he=="function")for($=he.call($),he=0;!(ce=$.next()).done;)ce=ce.value,te=De+O(ce,he++),ve+=V(ce,X,ae,te,xe);else if(te==="object"){if(typeof $.then=="function")return V(B($),X,ae,ce,xe);throw X=String($),Error("Objects are not valid as a React child (found: "+(X==="[object Object]"?"object with keys {"+Object.keys($).join(", ")+"}":X)+"). If you meant to render a collection of children, use an array instead.")}return ve}function G($,X,ae){if($==null)return $;var ce=[],xe=0;return V($,ce,"","",function(te){return X.call(ae,te,xe++)}),ce}function K($){if($._status===-1){var X=$._result;X=X(),X.then(function(ae){($._status===0||$._status===-1)&&($._status=1,$._result=ae)},function(ae){($._status===0||$._status===-1)&&($._status=2,$._result=ae)}),$._status===-1&&($._status=0,$._result=X)}if($._status===1)return $._result.default;throw $._result}var Y=typeof reportError=="function"?reportError:function($){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var X=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof $=="object"&&$!==null&&typeof $.message=="string"?String($.message):String($),error:$});if(!window.dispatchEvent(X))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",$);return}console.error($)},oe={map:G,forEach:function($,X,ae){G($,function(){X.apply(this,arguments)},ae)},count:function($){var X=0;return G($,function(){X++}),X},toArray:function($){return G($,function(X){return X})||[]},only:function($){if(!U($))throw Error("React.Children.only expected to receive a single React element child.");return $}};return Kt.Activity=f,Kt.Children=oe,Kt.Component=x,Kt.Fragment=n,Kt.Profiler=i,Kt.PureComponent=w,Kt.StrictMode=r,Kt.Suspense=l,Kt.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=N,Kt.__COMPILER_RUNTIME={__proto__:null,c:function($){return N.H.useMemoCache($)}},Kt.cache=function($){return function(){return $.apply(null,arguments)}},Kt.cacheSignal=function(){return null},Kt.cloneElement=function($,X,ae){if($==null)throw Error("The argument must be a React element, but you passed "+$+".");var ce=v({},$.props),xe=$.key;if(X!=null)for(te in X.key!==void 0&&(xe=""+X.key),X)!j.call(X,te)||te==="key"||te==="__self"||te==="__source"||te==="ref"&&X.ref===void 0||(ce[te]=X[te]);var te=arguments.length-2;if(te===1)ce.children=ae;else if(1>>1,oe=V[Y];if(0>>1;Y<$;){var X=2*(Y+1)-1,ae=V[X],ce=X+1,xe=V[ce];if(0>i(ae,K))cei(xe,ae)?(V[Y]=xe,V[ce]=K,Y=ce):(V[Y]=ae,V[X]=K,Y=X);else if(cei(xe,K))V[Y]=xe,V[ce]=K,Y=ce;else break e}}return G}function i(V,G){var K=V.sortIndex-G.sortIndex;return K!==0?K:V.id-G.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var a=performance;t.unstable_now=function(){return a.now()}}else{var s=Date,o=s.now();t.unstable_now=function(){return s.now()-o}}var l=[],c=[],u=1,f=null,g=3,m=!1,y=!1,v=!1,b=!1,x=typeof setTimeout=="function"?setTimeout:null,M=typeof clearTimeout=="function"?clearTimeout:null,w=typeof setImmediate<"u"?setImmediate:null;function A(V){for(var G=n(c);G!==null;){if(G.callback===null)r(c);else if(G.startTime<=V)r(c),G.sortIndex=G.expirationTime,e(l,G);else break;G=n(c)}}function T(V){if(v=!1,A(V),!y)if(n(l)!==null)y=!0,R||(R=!0,I());else{var G=n(c);G!==null&&B(T,G.startTime-V)}}var R=!1,N=-1,j=5,C=-1;function k(){return b?!0:!(t.unstable_now()-CV&&k());){var Y=f.callback;if(typeof Y=="function"){f.callback=null,g=f.priorityLevel;var oe=Y(f.expirationTime<=V);if(V=t.unstable_now(),typeof oe=="function"){f.callback=oe,A(V),G=!0;break t}f===n(l)&&r(l),A(V)}else r(l);f=n(l)}if(f!==null)G=!0;else{var $=n(c);$!==null&&B(T,$.startTime-V),G=!1}}break e}finally{f=null,g=K,m=!1}G=void 0}}finally{G?I():R=!1}}}var I;if(typeof w=="function")I=function(){w(U)};else if(typeof MessageChannel<"u"){var H=new MessageChannel,O=H.port2;H.port1.onmessage=U,I=function(){O.postMessage(null)}}else I=function(){x(U,0)};function B(V,G){N=x(function(){V(t.unstable_now())},G)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(V){V.callback=null},t.unstable_forceFrameRate=function(V){0>V||125Y?(V.sortIndex=K,e(c,V),n(l)===null&&V===n(c)&&(v?(M(N),N=-1):v=!0,B(T,K-Y))):(V.sortIndex=oe,e(l,V),y||m||(y=!0,R||(R=!0,I()))),V},t.unstable_shouldYield=k,t.unstable_wrapCallback=function(V){var G=g;return function(){var K=g;g=G;try{return V.apply(this,arguments)}finally{g=K}}}})(RA)),RA}var nU;function dne(){return nU||(nU=1,NA.exports=une()),NA.exports}var PA={exports:{}},Xi={};var rU;function fne(){if(rU)return Xi;rU=1;var t=xm();function e(l){var c="https://react.dev/errors/"+l;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),PA.exports=fne(),PA.exports}var aU;function hne(){if(aU)return Rg;aU=1;var t=dne(),e=xm(),n=bG();function r(d){var p="https://react.dev/errors/"+d;if(1oe||(d.current=Y[oe],Y[oe]=null,oe--)}function ae(d,p){oe++,Y[oe]=d.current,d.current=p}var ce=$(null),xe=$(null),te=$(null),ve=$(null);function De(d,p){switch(ae(te,p),ae(xe,d),ae(ce,null),p.nodeType){case 9:case 11:d=(d=p.documentElement)&&(d=d.namespaceURI)?y4(d):0;break;default:if(d=p.tagName,p=p.namespaceURI)p=y4(p),d=_4(p,d);else switch(d){case"svg":d=1;break;case"math":d=2;break;default:d=0}}X(ce),ae(ce,d)}function he(){X(ce),X(xe),X(te)}function me(d){d.memoizedState!==null&&ae(ve,d);var p=ce.current,_=_4(p,d.type);p!==_&&(ae(xe,d),ae(ce,_))}function we(d){xe.current===d&&(X(ce),X(xe)),ve.current===d&&(X(ve),Eg._currentValue=K)}var se,st;function z(d){if(se===void 0)try{throw Error()}catch(_){var p=_.stack.trim().match(/\n( *(at )?)/);se=p&&p[1]||"",st=-1<_.stack.indexOf(` at`)?" ()":-1<_.stack.indexOf("@")?"@unknown:0:0":""}return` -`+oe+d+ct}var q=!1;function re(d,p){if(!d||q)return"";q=!0;var _=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var S={DetermineComponentFrameRoot:function(){try{if(p){var ot=function(){throw Error()};if(Object.defineProperty(ot.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(ot,[])}catch(Ze){var Ve=Ze}Reflect.construct(d,[],ot)}else{try{ot.call()}catch(Ze){Ve=Ze}d.call(ot.prototype)}}else{try{throw Error()}catch(Ze){Ve=Ze}(ot=d())&&typeof ot.catch=="function"&&ot.catch(function(){})}}catch(Ze){if(Ze&&Ve&&typeof Ze.stack=="string")return[Ze.stack,Ve.stack]}return[null,null]}};S.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var P=Object.getOwnPropertyDescriptor(S.DetermineComponentFrameRoot,"name");P&&P.configurable&&Object.defineProperty(S.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var D=S.DetermineComponentFrameRoot(),W=D[0],ie=D[1];if(W&&ie){var Se=W.split(` -`),Be=ie.split(` +`+se+d+st}var q=!1;function ie(d,p){if(!d||q)return"";q=!0;var _=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var S={DetermineComponentFrameRoot:function(){try{if(p){var lt=function(){throw Error()};if(Object.defineProperty(lt.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(lt,[])}catch(Ye){var Ve=Ye}Reflect.construct(d,[],lt)}else{try{lt.call()}catch(Ye){Ve=Ye}d.call(lt.prototype)}}else{try{throw Error()}catch(Ye){Ve=Ye}(lt=d())&&typeof lt.catch=="function"&<.catch(function(){})}}catch(Ye){if(Ye&&Ve&&typeof Ye.stack=="string")return[Ye.stack,Ve.stack]}return[null,null]}};S.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var P=Object.getOwnPropertyDescriptor(S.DetermineComponentFrameRoot,"name");P&&P.configurable&&Object.defineProperty(S.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var D=S.DetermineComponentFrameRoot(),W=D[0],re=D[1];if(W&&re){var Se=W.split(` +`),Be=re.split(` `);for(P=S=0;SP||Se[S]!==Be[P]){var et=` -`+Se[S].replace(" at new "," at ");return d.displayName&&et.includes("")&&(et=et.replace("",d.displayName)),et}while(1<=S&&0<=P);break}}}finally{q=!1,Error.prepareStackTrace=_}return(_=d?d.displayName||d.name:"")?z(_):""}function Q(d,p){switch(d.tag){case 26:case 27:case 5:return z(d.type);case 16:return z("Lazy");case 13:return d.child!==p&&p!==null?z("Suspense Fallback"):z("Suspense");case 19:return z("SuspenseList");case 0:case 15:return re(d.type,!1);case 11:return re(d.type.render,!1);case 1:return re(d.type,!0);case 31:return z("Activity");default:return""}}function ee(d){try{var p="",_=null;do p+=Q(d,_),_=d,d=d.return;while(d);return p}catch(S){return` +`+Se[S].replace(" at new "," at ");return d.displayName&&et.includes("")&&(et=et.replace("",d.displayName)),et}while(1<=S&&0<=P);break}}}finally{q=!1,Error.prepareStackTrace=_}return(_=d?d.displayName||d.name:"")?z(_):""}function Q(d,p){switch(d.tag){case 26:case 27:case 5:return z(d.type);case 16:return z("Lazy");case 13:return d.child!==p&&p!==null?z("Suspense Fallback"):z("Suspense");case 19:return z("SuspenseList");case 0:case 15:return ie(d.type,!1);case 11:return ie(d.type.render,!1);case 1:return ie(d.type,!0);case 31:return z("Activity");default:return""}}function ee(d){try{var p="",_=null;do p+=Q(d,_),_=d,d=d.return;while(d);return p}catch(S){return` Error generating stack: `+S.message+` -`+S.stack}}var le=Object.prototype.hasOwnProperty,ke=t.unstable_scheduleCallback,Ne=t.unstable_cancelCallback,ne=t.unstable_shouldYield,U=t.unstable_requestPaint,O=t.unstable_now,K=t.unstable_getCurrentPriorityLevel,de=t.unstable_ImmediatePriority,xe=t.unstable_UserBlockingPriority,fe=t.unstable_NormalPriority,Xe=t.unstable_LowPriority,Ie=t.unstable_IdlePriority,We=t.log,st=t.unstable_setDisableYieldValue,je=null,Re=null;function pt(d){if(typeof We=="function"&&st(d),Re&&typeof Re.setStrictMode=="function")try{Re.setStrictMode(je,d)}catch{}}var it=Math.clz32?Math.clz32:pe,nt=Math.log,dt=Math.LN2;function pe(d){return d>>>=0,d===0?32:31-(nt(d)/dt|0)|0}var rt=256,me=262144,Le=4194304;function Me(d){var p=d&42;if(p!==0)return p;switch(d&-d){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 d&261888;case 262144:case 524288:case 1048576:case 2097152:return d&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return d&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return d}}function ye(d,p,_){var S=d.pendingLanes;if(S===0)return 0;var P=0,D=d.suspendedLanes,W=d.pingedLanes;d=d.warmLanes;var ie=S&134217727;return ie!==0?(S=ie&~D,S!==0?P=Me(S):(W&=ie,W!==0?P=Me(W):_||(_=ie&~d,_!==0&&(P=Me(_))))):(ie=S&~D,ie!==0?P=Me(ie):W!==0?P=Me(W):_||(_=S&~d,_!==0&&(P=Me(_)))),P===0?0:p!==0&&p!==P&&(p&D)===0&&(D=P&-P,_=p&-p,D>=_||D===32&&(_&4194048)!==0)?p:P}function He(d,p){return(d.pendingLanes&~(d.suspendedLanes&~d.pingedLanes)&p)===0}function ut(d,p){switch(d){case 1:case 2:case 4:case 8:case 64:return p+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 p+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 _t(){var d=Le;return Le<<=1,(Le&62914560)===0&&(Le=4194304),d}function Rt(d){for(var p=[],_=0;31>_;_++)p.push(d);return p}function ln(d,p){d.pendingLanes|=p,p!==268435456&&(d.suspendedLanes=0,d.pingedLanes=0,d.warmLanes=0)}function Dt(d,p,_,S,P,D){var W=d.pendingLanes;d.pendingLanes=_,d.suspendedLanes=0,d.pingedLanes=0,d.warmLanes=0,d.expiredLanes&=_,d.entangledLanes&=_,d.errorRecoveryDisabledLanes&=_,d.shellSuspendCounter=0;var ie=d.entanglements,Se=d.expirationTimes,Be=d.hiddenUpdates;for(_=W&~_;0<_;){var et=31-it(_),ot=1<"u")return null;try{return d.activeElement||d.body}catch{return d.body}}var Ti=/[\n"\\]/g;function Nn(d){return d.replace(Ti,function(p){return"\\"+p.charCodeAt(0).toString(16)+" "})}function io(d,p,_,S,P,D,W,ie){d.name="",W!=null&&typeof W!="function"&&typeof W!="symbol"&&typeof W!="boolean"?d.type=W:d.removeAttribute("type"),p!=null?W==="number"?(p===0&&d.value===""||d.value!=p)&&(d.value=""+un(p)):d.value!==""+un(p)&&(d.value=""+un(p)):W!=="submit"&&W!=="reset"||d.removeAttribute("value"),p!=null?gr(d,W,un(p)):_!=null?gr(d,W,un(_)):S!=null&&d.removeAttribute("value"),P==null&&D!=null&&(d.defaultChecked=!!D),P!=null&&(d.checked=P&&typeof P!="function"&&typeof P!="symbol"),ie!=null&&typeof ie!="function"&&typeof ie!="symbol"&&typeof ie!="boolean"?d.name=""+un(ie):d.removeAttribute("name")}function Pn(d,p,_,S,P,D,W,ie){if(D!=null&&typeof D!="function"&&typeof D!="symbol"&&typeof D!="boolean"&&(d.type=D),p!=null||_!=null){if(!(D!=="submit"&&D!=="reset"||p!=null)){Xt(d);return}_=_!=null?""+un(_):"",p=p!=null?""+un(p):_,ie||p===d.value||(d.value=p),d.defaultValue=p}S=S??P,S=typeof S!="function"&&typeof S!="symbol"&&!!S,d.checked=ie?d.checked:!!S,d.defaultChecked=!!S,W!=null&&typeof W!="function"&&typeof W!="symbol"&&typeof W!="boolean"&&(d.name=W),Xt(d)}function gr(d,p,_){p==="number"&&bi(d.ownerDocument)===d||d.defaultValue===""+_||(d.defaultValue=""+_)}function Qi(d,p,_,S){if(d=d.options,p){p={};for(var P=0;P<_.length;P++)p["$"+_[P]]=!0;for(_=0;_"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),AM=!1;if(pl)try{var $m={};Object.defineProperty($m,"passive",{get:function(){AM=!0}}),window.addEventListener("test",$m,$m),window.removeEventListener("test",$m,$m)}catch{AM=!1}var Lc=null,TM=null,_v=null;function _L(){if(_v)return _v;var d,p=TM,_=p.length,S,P="value"in Lc?Lc.value:Lc.textContent,D=P.length;for(d=0;d<_&&p[d]===P[d];d++);var W=_-d;for(S=1;S<=W&&p[_-S]===P[D-S];S++);return _v=P.slice(d,1=Wm),TL=" ",CL=!1;function NL(d,p){switch(d){case"keyup":return Aee.indexOf(p.keyCode)!==-1;case"keydown":return p.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function RL(d){return d=d.detail,typeof d=="object"&&"data"in d?d.data:null}var eh=!1;function Cee(d,p){switch(d){case"compositionend":return RL(p);case"keypress":return p.which!==32?null:(CL=!0,TL);case"textInput":return d=p.data,d===TL&&CL?null:d;default:return null}}function Nee(d,p){if(eh)return d==="compositionend"||!kM&&NL(d,p)?(d=_L(),_v=TM=Lc=null,eh=!1,d):null;switch(d){case"paste":return null;case"keypress":if(!(p.ctrlKey||p.altKey||p.metaKey)||p.ctrlKey&&p.altKey){if(p.char&&1=p)return{node:_,offset:p-d};d=S}e:{for(;_;){if(_.nextSibling){_=_.nextSibling;break e}_=_.parentNode}_=void 0}_=UL(_)}}function zL(d,p){return d&&p?d===p?!0:d&&d.nodeType===3?!1:p&&p.nodeType===3?zL(d,p.parentNode):"contains"in d?d.contains(p):d.compareDocumentPosition?!!(d.compareDocumentPosition(p)&16):!1:!1}function BL(d){d=d!=null&&d.ownerDocument!=null&&d.ownerDocument.defaultView!=null?d.ownerDocument.defaultView:window;for(var p=bi(d.document);p instanceof d.HTMLIFrameElement;){try{var _=typeof p.contentWindow.location.href=="string"}catch{_=!1}if(_)d=p.contentWindow;else break;p=bi(d.document)}return p}function LM(d){var p=d&&d.nodeName&&d.nodeName.toLowerCase();return p&&(p==="input"&&(d.type==="text"||d.type==="search"||d.type==="tel"||d.type==="url"||d.type==="password")||p==="textarea"||d.contentEditable==="true")}var jee=pl&&"documentMode"in document&&11>=document.documentMode,th=null,IM=null,Ym=null,jM=!1;function HL(d,p,_){var S=_.window===_?_.document:_.nodeType===9?_:_.ownerDocument;jM||th==null||th!==bi(S)||(S=th,"selectionStart"in S&&LM(S)?S={start:S.selectionStart,end:S.selectionEnd}:(S=(S.ownerDocument&&S.ownerDocument.defaultView||window).getSelection(),S={anchorNode:S.anchorNode,anchorOffset:S.anchorOffset,focusNode:S.focusNode,focusOffset:S.focusOffset}),Ym&&Km(Ym,S)||(Ym=S,S=pb(IM,"onSelect"),0>=W,P-=W,Ro=1<<32-it(p)+P|_<Jt?(vn=kt,kt=null):vn=kt.sibling;var Mn=Ve(Oe,kt,ze[Jt],at);if(Mn===null){kt===null&&(kt=vn);break}d&&kt&&Mn.alternate===null&&p(Oe,kt),Ee=D(Mn,Ee,Jt),wn===null?It=Mn:wn.sibling=Mn,wn=Mn,kt=vn}if(Jt===ze.length)return _(Oe,kt),yn&&gl(Oe,Jt),It;if(kt===null){for(;JtJt?(vn=kt,kt=null):vn=kt.sibling;var iu=Ve(Oe,kt,Mn.value,at);if(iu===null){kt===null&&(kt=vn);break}d&&kt&&iu.alternate===null&&p(Oe,kt),Ee=D(iu,Ee,Jt),wn===null?It=iu:wn.sibling=iu,wn=iu,kt=vn}if(Mn.done)return _(Oe,kt),yn&&gl(Oe,Jt),It;if(kt===null){for(;!Mn.done;Jt++,Mn=ze.next())Mn=ot(Oe,Mn.value,at),Mn!==null&&(Ee=D(Mn,Ee,Jt),wn===null?It=Mn:wn.sibling=Mn,wn=Mn);return yn&&gl(Oe,Jt),It}for(kt=S(kt);!Mn.done;Jt++,Mn=ze.next())Mn=Ze(kt,Oe,Jt,Mn.value,at),Mn!==null&&(d&&Mn.alternate!==null&&kt.delete(Mn.key===null?Jt:Mn.key),Ee=D(Mn,Ee,Jt),wn===null?It=Mn:wn.sibling=Mn,wn=Mn);return d&&kt.forEach(function(ine){return p(Oe,ine)}),yn&&gl(Oe,Jt),It}function Fn(Oe,Ee,ze,at){if(typeof ze=="object"&&ze!==null&&ze.type===b&&ze.key===null&&(ze=ze.props.children),typeof ze=="object"&&ze!==null){switch(ze.$$typeof){case m:e:{for(var It=ze.key;Ee!==null;){if(Ee.key===It){if(It=ze.type,It===b){if(Ee.tag===7){_(Oe,Ee.sibling),at=P(Ee,ze.props.children),at.return=Oe,Oe=at;break e}}else if(Ee.elementType===It||typeof It=="object"&&It!==null&&It.$$typeof===j&&Md(It)===Ee.type){_(Oe,Ee.sibling),at=P(Ee,ze.props),ng(at,ze),at.return=Oe,Oe=at;break e}_(Oe,Ee);break}else p(Oe,Ee);Ee=Ee.sibling}ze.type===b?(at=bd(ze.props.children,Oe.mode,at,ze.key),at.return=Oe,Oe=at):(at=Pv(ze.type,ze.key,ze.props,null,Oe.mode,at),ng(at,ze),at.return=Oe,Oe=at)}return W(Oe);case y:e:{for(It=ze.key;Ee!==null;){if(Ee.key===It)if(Ee.tag===4&&Ee.stateNode.containerInfo===ze.containerInfo&&Ee.stateNode.implementation===ze.implementation){_(Oe,Ee.sibling),at=P(Ee,ze.children||[]),at.return=Oe,Oe=at;break e}else{_(Oe,Ee);break}else p(Oe,Ee);Ee=Ee.sibling}at=VM(ze,Oe.mode,at),at.return=Oe,Oe=at}return W(Oe);case j:return ze=Md(ze),Fn(Oe,Ee,ze,at)}if(B(ze))return Nt(Oe,Ee,ze,at);if(I(ze)){if(It=I(ze),typeof It!="function")throw Error(i(150));return ze=It.call(ze),Ht(Oe,Ee,ze,at)}if(typeof ze.then=="function")return Fn(Oe,Ee,Uv(ze),at);if(ze.$$typeof===w)return Fn(Oe,Ee,Ov(Oe,ze),at);Fv(Oe,ze)}return typeof ze=="string"&&ze!==""||typeof ze=="number"||typeof ze=="bigint"?(ze=""+ze,Ee!==null&&Ee.tag===6?(_(Oe,Ee.sibling),at=P(Ee,ze),at.return=Oe,Oe=at):(_(Oe,Ee),at=$M(ze,Oe.mode,at),at.return=Oe,Oe=at),W(Oe)):_(Oe,Ee)}return function(Oe,Ee,ze,at){try{tg=0;var It=Fn(Oe,Ee,ze,at);return fh=null,It}catch(kt){if(kt===dh||kt===Iv)throw kt;var wn=Ka(29,kt,null,Oe.mode);return wn.lanes=at,wn.return=Oe,wn}finally{}}}var Ad=dI(!0),fI=dI(!1),zc=!1;function nE(d){d.updateQueue={baseState:d.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function iE(d,p){d=d.updateQueue,p.updateQueue===d&&(p.updateQueue={baseState:d.baseState,firstBaseUpdate:d.firstBaseUpdate,lastBaseUpdate:d.lastBaseUpdate,shared:d.shared,callbacks:null})}function Bc(d){return{lane:d,tag:0,payload:null,callback:null,next:null}}function Hc(d,p,_){var S=d.updateQueue;if(S===null)return null;if(S=S.shared,(Cn&2)!==0){var P=S.pending;return P===null?p.next=p:(p.next=P.next,P.next=p),S.pending=p,p=Rv(d),KL(d,null,_),p}return Nv(d,S,p,_),Rv(d)}function ig(d,p,_){if(p=p.updateQueue,p!==null&&(p=p.shared,(_&4194048)!==0)){var S=p.lanes;S&=d.pendingLanes,_|=S,p.lanes=_,qn(d,_)}}function rE(d,p){var _=d.updateQueue,S=d.alternate;if(S!==null&&(S=S.updateQueue,_===S)){var P=null,D=null;if(_=_.firstBaseUpdate,_!==null){do{var W={lane:_.lane,tag:_.tag,payload:_.payload,callback:null,next:null};D===null?P=D=W:D=D.next=W,_=_.next}while(_!==null);D===null?P=D=p:D=D.next=p}else P=D=p;_={baseState:S.baseState,firstBaseUpdate:P,lastBaseUpdate:D,shared:S.shared,callbacks:S.callbacks},d.updateQueue=_;return}d=_.lastBaseUpdate,d===null?_.firstBaseUpdate=p:d.next=p,_.lastBaseUpdate=p}var aE=!1;function rg(){if(aE){var d=uh;if(d!==null)throw d}}function ag(d,p,_,S){aE=!1;var P=d.updateQueue;zc=!1;var D=P.firstBaseUpdate,W=P.lastBaseUpdate,ie=P.shared.pending;if(ie!==null){P.shared.pending=null;var Se=ie,Be=Se.next;Se.next=null,W===null?D=Be:W.next=Be,W=Se;var et=d.alternate;et!==null&&(et=et.updateQueue,ie=et.lastBaseUpdate,ie!==W&&(ie===null?et.firstBaseUpdate=Be:ie.next=Be,et.lastBaseUpdate=Se))}if(D!==null){var ot=P.baseState;W=0,et=Be=Se=null,ie=D;do{var Ve=ie.lane&-536870913,Ze=Ve!==ie.lane;if(Ze?(xn&Ve)===Ve:(S&Ve)===Ve){Ve!==0&&Ve===ch&&(aE=!0),et!==null&&(et=et.next={lane:0,tag:ie.tag,payload:ie.payload,callback:null,next:null});e:{var Nt=d,Ht=ie;Ve=p;var Fn=_;switch(Ht.tag){case 1:if(Nt=Ht.payload,typeof Nt=="function"){ot=Nt.call(Fn,ot,Ve);break e}ot=Nt;break e;case 3:Nt.flags=Nt.flags&-65537|128;case 0:if(Nt=Ht.payload,Ve=typeof Nt=="function"?Nt.call(Fn,ot,Ve):Nt,Ve==null)break e;ot=f({},ot,Ve);break e;case 2:zc=!0}}Ve=ie.callback,Ve!==null&&(d.flags|=64,Ze&&(d.flags|=8192),Ze=P.callbacks,Ze===null?P.callbacks=[Ve]:Ze.push(Ve))}else Ze={lane:Ve,tag:ie.tag,payload:ie.payload,callback:ie.callback,next:null},et===null?(Be=et=Ze,Se=ot):et=et.next=Ze,W|=Ve;if(ie=ie.next,ie===null){if(ie=P.shared.pending,ie===null)break;Ze=ie,ie=Ze.next,Ze.next=null,P.lastBaseUpdate=Ze,P.shared.pending=null}}while(!0);et===null&&(Se=ot),P.baseState=Se,P.firstBaseUpdate=Be,P.lastBaseUpdate=et,D===null&&(P.shared.lanes=0),qc|=W,d.lanes=W,d.memoizedState=ot}}function hI(d,p){if(typeof d!="function")throw Error(i(191,d));d.call(p)}function pI(d,p){var _=d.callbacks;if(_!==null)for(d.callbacks=null,d=0;d<_.length;d++)hI(_[d],p)}var hh=H(null),zv=H(0);function mI(d,p){d=Tl,ae(zv,d),ae(hh,p),Tl=d|p.baseLanes}function sE(){ae(zv,Tl),ae(hh,hh.current)}function oE(){Tl=zv.current,X(hh),X(zv)}var Ya=H(null),ws=null;function $c(d){var p=d.alternate;ae(Ci,Ci.current&1),ae(Ya,d),ws===null&&(p===null||hh.current!==null||p.memoizedState!==null)&&(ws=d)}function lE(d){ae(Ci,Ci.current),ae(Ya,d),ws===null&&(ws=d)}function gI(d){d.tag===22?(ae(Ci,Ci.current),ae(Ya,d),ws===null&&(ws=d)):Vc()}function Vc(){ae(Ci,Ci.current),ae(Ya,Ya.current)}function Za(d){X(Ya),ws===d&&(ws=null),X(Ci)}var Ci=H(0);function Bv(d){for(var p=d;p!==null;){if(p.tag===13){var _=p.memoizedState;if(_!==null&&(_=_.dehydrated,_===null||pA(_)||mA(_)))return p}else if(p.tag===19&&(p.memoizedProps.revealOrder==="forwards"||p.memoizedProps.revealOrder==="backwards"||p.memoizedProps.revealOrder==="unstable_legacy-backwards"||p.memoizedProps.revealOrder==="together")){if((p.flags&128)!==0)return p}else if(p.child!==null){p.child.return=p,p=p.child;continue}if(p===d)break;for(;p.sibling===null;){if(p.return===null||p.return===d)return null;p=p.return}p.sibling.return=p.return,p=p.sibling}return null}var bl=0,Qt=null,jn=null,ji=null,Hv=!1,ph=!1,Td=!1,$v=0,sg=0,mh=null,qee=0;function yi(){throw Error(i(321))}function cE(d,p){if(p===null)return!1;for(var _=0;_D?D:8;var W=$.T,ie={};$.T=ie,ME(d,!1,p,_);try{var Se=P(),Be=$.S;if(Be!==null&&Be(ie,Se),Se!==null&&typeof Se=="object"&&typeof Se.then=="function"){var et=Wee(Se,S);lg(d,p,et,es(d))}else lg(d,p,S,es(d))}catch(ot){lg(d,p,{then:function(){},status:"rejected",reason:ot},es())}finally{V.p=D,W!==null&&ie.types!==null&&(W.types=ie.types),$.T=W}}function Qee(){}function SE(d,p,_,S){if(d.tag!==5)throw Error(i(476));var P=WI(d).queue;GI(d,P,p,Y,_===null?Qee:function(){return qI(d),_(S)})}function WI(d){var p=d.memoizedState;if(p!==null)return p;p={memoizedState:Y,baseState:Y,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:yl,lastRenderedState:Y},next:null};var _={};return p.next={memoizedState:_,baseState:_,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:yl,lastRenderedState:_},next:null},d.memoizedState=p,d=d.alternate,d!==null&&(d.memoizedState=p),p}function qI(d){var p=WI(d);p.next===null&&(p=d.alternate.memoizedState),lg(d,p.next.queue,{},es())}function wE(){return Or(Eg)}function XI(){return Ni().memoizedState}function KI(){return Ni().memoizedState}function Jee(d){for(var p=d.return;p!==null;){switch(p.tag){case 24:case 3:var _=es();d=Bc(_);var S=Hc(p,d,_);S!==null&&(ka(S,p,_),ig(S,p,_)),p={cache:QM()},d.payload=p;return}p=p.return}}function ete(d,p,_){var S=es();_={lane:S,revertLane:0,gesture:null,action:_,hasEagerState:!1,eagerState:null,next:null},Kv(d)?ZI(p,_):(_=BM(d,p,_,S),_!==null&&(ka(_,d,S),QI(_,p,S)))}function YI(d,p,_){var S=es();lg(d,p,_,S)}function lg(d,p,_,S){var P={lane:S,revertLane:0,gesture:null,action:_,hasEagerState:!1,eagerState:null,next:null};if(Kv(d))ZI(p,P);else{var D=d.alternate;if(d.lanes===0&&(D===null||D.lanes===0)&&(D=p.lastRenderedReducer,D!==null))try{var W=p.lastRenderedState,ie=D(W,_);if(P.hasEagerState=!0,P.eagerState=ie,Xa(ie,W))return Nv(d,p,P,0),Xn===null&&Cv(),!1}catch{}finally{}if(_=BM(d,p,P,S),_!==null)return ka(_,d,S),QI(_,p,S),!0}return!1}function ME(d,p,_,S){if(S={lane:2,revertLane:nA(),gesture:null,action:S,hasEagerState:!1,eagerState:null,next:null},Kv(d)){if(p)throw Error(i(479))}else p=BM(d,_,S,2),p!==null&&ka(p,d,2)}function Kv(d){var p=d.alternate;return d===Qt||p!==null&&p===Qt}function ZI(d,p){ph=Hv=!0;var _=d.pending;_===null?p.next=p:(p.next=_.next,_.next=p),d.pending=p}function QI(d,p,_){if((_&4194048)!==0){var S=p.lanes;S&=d.pendingLanes,_|=S,p.lanes=_,qn(d,_)}}var cg={readContext:Or,use:Gv,useCallback:yi,useContext:yi,useEffect:yi,useImperativeHandle:yi,useLayoutEffect:yi,useInsertionEffect:yi,useMemo:yi,useReducer:yi,useRef:yi,useState:yi,useDebugValue:yi,useDeferredValue:yi,useTransition:yi,useSyncExternalStore:yi,useId:yi,useHostTransitionStatus:yi,useFormState:yi,useActionState:yi,useOptimistic:yi,useMemoCache:yi,useCacheRefresh:yi};cg.useEffectEvent=yi;var JI={readContext:Or,use:Gv,useCallback:function(d,p){return ua().memoizedState=[d,p===void 0?null:p],d},useContext:Or,useEffect:II,useImperativeHandle:function(d,p,_){_=_!=null?_.concat([d]):null,qv(4194308,4,zI.bind(null,p,d),_)},useLayoutEffect:function(d,p){return qv(4194308,4,d,p)},useInsertionEffect:function(d,p){qv(4,2,d,p)},useMemo:function(d,p){var _=ua();p=p===void 0?null:p;var S=d();if(Td){pt(!0);try{d()}finally{pt(!1)}}return _.memoizedState=[S,p],S},useReducer:function(d,p,_){var S=ua();if(_!==void 0){var P=_(p);if(Td){pt(!0);try{_(p)}finally{pt(!1)}}}else P=p;return S.memoizedState=S.baseState=P,d={pending:null,lanes:0,dispatch:null,lastRenderedReducer:d,lastRenderedState:P},S.queue=d,d=d.dispatch=ete.bind(null,Qt,d),[S.memoizedState,d]},useRef:function(d){var p=ua();return d={current:d},p.memoizedState=d},useState:function(d){d=xE(d);var p=d.queue,_=YI.bind(null,Qt,p);return p.dispatch=_,[d.memoizedState,_]},useDebugValue:yE,useDeferredValue:function(d,p){var _=ua();return _E(_,d,p)},useTransition:function(){var d=xE(!1);return d=GI.bind(null,Qt,d.queue,!0,!1),ua().memoizedState=d,[!1,d]},useSyncExternalStore:function(d,p,_){var S=Qt,P=ua();if(yn){if(_===void 0)throw Error(i(407));_=_()}else{if(_=p(),Xn===null)throw Error(i(349));(xn&127)!==0||yI(S,p,_)}P.memoizedState=_;var D={value:_,getSnapshot:p};return P.queue=D,II(SI.bind(null,S,D,d),[d]),S.flags|=2048,gh(9,{destroy:void 0},_I.bind(null,S,D,_,p),null),_},useId:function(){var d=ua(),p=Xn.identifierPrefix;if(yn){var _=Po,S=Ro;_=(S&~(1<<32-it(S)-1)).toString(32)+_,p="_"+p+"R_"+_,_=$v++,0<_&&(p+="H"+_.toString(32)),p+="_"}else _=qee++,p="_"+p+"r_"+_.toString(32)+"_";return d.memoizedState=p},useHostTransitionStatus:wE,useFormState:PI,useActionState:PI,useOptimistic:function(d){var p=ua();p.memoizedState=p.baseState=d;var _={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return p.queue=_,p=ME.bind(null,Qt,!0,_),_.dispatch=p,[d,p]},useMemoCache:pE,useCacheRefresh:function(){return ua().memoizedState=Jee.bind(null,Qt)},useEffectEvent:function(d){var p=ua(),_={impl:d};return p.memoizedState=_,function(){if((Cn&2)!==0)throw Error(i(440));return _.impl.apply(void 0,arguments)}}},EE={readContext:Or,use:Gv,useCallback:HI,useContext:Or,useEffect:bE,useImperativeHandle:BI,useInsertionEffect:UI,useLayoutEffect:FI,useMemo:$I,useReducer:Wv,useRef:LI,useState:function(){return Wv(yl)},useDebugValue:yE,useDeferredValue:function(d,p){var _=Ni();return VI(_,jn.memoizedState,d,p)},useTransition:function(){var d=Wv(yl)[0],p=Ni().memoizedState;return[typeof d=="boolean"?d:og(d),p]},useSyncExternalStore:bI,useId:XI,useHostTransitionStatus:wE,useFormState:kI,useActionState:kI,useOptimistic:function(d,p){var _=Ni();return EI(_,jn,d,p)},useMemoCache:pE,useCacheRefresh:KI};EE.useEffectEvent=jI;var ej={readContext:Or,use:Gv,useCallback:HI,useContext:Or,useEffect:bE,useImperativeHandle:BI,useInsertionEffect:UI,useLayoutEffect:FI,useMemo:$I,useReducer:gE,useRef:LI,useState:function(){return gE(yl)},useDebugValue:yE,useDeferredValue:function(d,p){var _=Ni();return jn===null?_E(_,d,p):VI(_,jn.memoizedState,d,p)},useTransition:function(){var d=gE(yl)[0],p=Ni().memoizedState;return[typeof d=="boolean"?d:og(d),p]},useSyncExternalStore:bI,useId:XI,useHostTransitionStatus:wE,useFormState:OI,useActionState:OI,useOptimistic:function(d,p){var _=Ni();return jn!==null?EI(_,jn,d,p):(_.baseState=d,[d,_.queue.dispatch])},useMemoCache:pE,useCacheRefresh:KI};ej.useEffectEvent=jI;function AE(d,p,_,S){p=d.memoizedState,_=_(S,p),_=_==null?p:f({},p,_),d.memoizedState=_,d.lanes===0&&(d.updateQueue.baseState=_)}var TE={enqueueSetState:function(d,p,_){d=d._reactInternals;var S=es(),P=Bc(S);P.payload=p,_!=null&&(P.callback=_),p=Hc(d,P,S),p!==null&&(ka(p,d,S),ig(p,d,S))},enqueueReplaceState:function(d,p,_){d=d._reactInternals;var S=es(),P=Bc(S);P.tag=1,P.payload=p,_!=null&&(P.callback=_),p=Hc(d,P,S),p!==null&&(ka(p,d,S),ig(p,d,S))},enqueueForceUpdate:function(d,p){d=d._reactInternals;var _=es(),S=Bc(_);S.tag=2,p!=null&&(S.callback=p),p=Hc(d,S,_),p!==null&&(ka(p,d,_),ig(p,d,_))}};function tj(d,p,_,S,P,D,W){return d=d.stateNode,typeof d.shouldComponentUpdate=="function"?d.shouldComponentUpdate(S,D,W):p.prototype&&p.prototype.isPureReactComponent?!Km(_,S)||!Km(P,D):!0}function nj(d,p,_,S){d=p.state,typeof p.componentWillReceiveProps=="function"&&p.componentWillReceiveProps(_,S),typeof p.UNSAFE_componentWillReceiveProps=="function"&&p.UNSAFE_componentWillReceiveProps(_,S),p.state!==d&&TE.enqueueReplaceState(p,p.state,null)}function Cd(d,p){var _=p;if("ref"in p){_={};for(var S in p)S!=="ref"&&(_[S]=p[S])}if(d=d.defaultProps){_===p&&(_=f({},_));for(var P in d)_[P]===void 0&&(_[P]=d[P])}return _}function ij(d){Tv(d)}function rj(d){console.error(d)}function aj(d){Tv(d)}function Yv(d,p){try{var _=d.onUncaughtError;_(p.value,{componentStack:p.stack})}catch(S){setTimeout(function(){throw S})}}function sj(d,p,_){try{var S=d.onCaughtError;S(_.value,{componentStack:_.stack,errorBoundary:p.tag===1?p.stateNode:null})}catch(P){setTimeout(function(){throw P})}}function CE(d,p,_){return _=Bc(_),_.tag=3,_.payload={element:null},_.callback=function(){Yv(d,p)},_}function oj(d){return d=Bc(d),d.tag=3,d}function lj(d,p,_,S){var P=_.type.getDerivedStateFromError;if(typeof P=="function"){var D=S.value;d.payload=function(){return P(D)},d.callback=function(){sj(p,_,S)}}var W=_.stateNode;W!==null&&typeof W.componentDidCatch=="function"&&(d.callback=function(){sj(p,_,S),typeof P!="function"&&(Xc===null?Xc=new Set([this]):Xc.add(this));var ie=S.stack;this.componentDidCatch(S.value,{componentStack:ie!==null?ie:""})})}function tte(d,p,_,S,P){if(_.flags|=32768,S!==null&&typeof S=="object"&&typeof S.then=="function"){if(p=_.alternate,p!==null&&lh(p,_,P,!0),_=Ya.current,_!==null){switch(_.tag){case 31:case 13:return ws===null?lb():_.alternate===null&&_i===0&&(_i=3),_.flags&=-257,_.flags|=65536,_.lanes=P,S===jv?_.flags|=16384:(p=_.updateQueue,p===null?_.updateQueue=new Set([S]):p.add(S),JE(d,S,P)),!1;case 22:return _.flags|=65536,S===jv?_.flags|=16384:(p=_.updateQueue,p===null?(p={transitions:null,markerInstances:null,retryQueue:new Set([S])},_.updateQueue=p):(_=p.retryQueue,_===null?p.retryQueue=new Set([S]):_.add(S)),JE(d,S,P)),!1}throw Error(i(435,_.tag))}return JE(d,S,P),lb(),!1}if(yn)return p=Ya.current,p!==null?((p.flags&65536)===0&&(p.flags|=256),p.flags|=65536,p.lanes=P,S!==qM&&(d=Error(i(422),{cause:S}),Qm(bs(d,_)))):(S!==qM&&(p=Error(i(423),{cause:S}),Qm(bs(p,_))),d=d.current.alternate,d.flags|=65536,P&=-P,d.lanes|=P,S=bs(S,_),P=CE(d.stateNode,S,P),rE(d,P),_i!==4&&(_i=2)),!1;var D=Error(i(520),{cause:S});if(D=bs(D,_),xg===null?xg=[D]:xg.push(D),_i!==4&&(_i=2),p===null)return!0;S=bs(S,_),_=p;do{switch(_.tag){case 3:return _.flags|=65536,d=P&-P,_.lanes|=d,d=CE(_.stateNode,S,d),rE(_,d),!1;case 1:if(p=_.type,D=_.stateNode,(_.flags&128)===0&&(typeof p.getDerivedStateFromError=="function"||D!==null&&typeof D.componentDidCatch=="function"&&(Xc===null||!Xc.has(D))))return _.flags|=65536,P&=-P,_.lanes|=P,P=oj(P),lj(P,d,_,S),rE(_,P),!1}_=_.return}while(_!==null);return!1}var NE=Error(i(461)),Ui=!1;function Lr(d,p,_,S){p.child=d===null?fI(p,null,_,S):Ad(p,d.child,_,S)}function cj(d,p,_,S,P){_=_.render;var D=p.ref;if("ref"in S){var W={};for(var ie in S)ie!=="ref"&&(W[ie]=S[ie])}else W=S;return Sd(p),S=uE(d,p,_,W,D,P),ie=dE(),d!==null&&!Ui?(fE(d,p,P),_l(d,p,P)):(yn&&ie&&GM(p),p.flags|=1,Lr(d,p,S,P),p.child)}function uj(d,p,_,S,P){if(d===null){var D=_.type;return typeof D=="function"&&!HM(D)&&D.defaultProps===void 0&&_.compare===null?(p.tag=15,p.type=D,dj(d,p,D,S,P)):(d=Pv(_.type,null,S,p,p.mode,P),d.ref=p.ref,d.return=p,p.child=d)}if(D=d.child,!jE(d,P)){var W=D.memoizedProps;if(_=_.compare,_=_!==null?_:Km,_(W,S)&&d.ref===p.ref)return _l(d,p,P)}return p.flags|=1,d=ml(D,S),d.ref=p.ref,d.return=p,p.child=d}function dj(d,p,_,S,P){if(d!==null){var D=d.memoizedProps;if(Km(D,S)&&d.ref===p.ref)if(Ui=!1,p.pendingProps=S=D,jE(d,P))(d.flags&131072)!==0&&(Ui=!0);else return p.lanes=d.lanes,_l(d,p,P)}return RE(d,p,_,S,P)}function fj(d,p,_,S){var P=S.children,D=d!==null?d.memoizedState:null;if(d===null&&p.stateNode===null&&(p.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),S.mode==="hidden"){if((p.flags&128)!==0){if(D=D!==null?D.baseLanes|_:_,d!==null){for(S=p.child=d.child,P=0;S!==null;)P=P|S.lanes|S.childLanes,S=S.sibling;S=P&~D}else S=0,p.child=null;return hj(d,p,D,_,S)}if((_&536870912)!==0)p.memoizedState={baseLanes:0,cachePool:null},d!==null&&Lv(p,D!==null?D.cachePool:null),D!==null?mI(p,D):sE(),gI(p);else return S=p.lanes=536870912,hj(d,p,D!==null?D.baseLanes|_:_,_,S)}else D!==null?(Lv(p,D.cachePool),mI(p,D),Vc(),p.memoizedState=null):(d!==null&&Lv(p,null),sE(),Vc());return Lr(d,p,P,_),p.child}function ug(d,p){return d!==null&&d.tag===22||p.stateNode!==null||(p.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),p.sibling}function hj(d,p,_,S,P){var D=eE();return D=D===null?null:{parent:Ii._currentValue,pool:D},p.memoizedState={baseLanes:_,cachePool:D},d!==null&&Lv(p,null),sE(),gI(p),d!==null&&lh(d,p,S,!0),p.childLanes=P,null}function Zv(d,p){return p=Jv({mode:p.mode,children:p.children},d.mode),p.ref=d.ref,d.child=p,p.return=d,p}function pj(d,p,_){return Ad(p,d.child,null,_),d=Zv(p,p.pendingProps),d.flags|=2,Za(p),p.memoizedState=null,d}function nte(d,p,_){var S=p.pendingProps,P=(p.flags&128)!==0;if(p.flags&=-129,d===null){if(yn){if(S.mode==="hidden")return d=Zv(p,S),p.lanes=536870912,ug(null,d);if(lE(p),(d=ti)?(d=A4(d,Ss),d=d!==null&&d.data==="&"?d:null,d!==null&&(p.memoizedState={dehydrated:d,treeContext:Ic!==null?{id:Ro,overflow:Po}:null,retryLane:536870912,hydrationErrors:null},_=ZL(d),_.return=p,p.child=_,Dr=p,ti=null)):d=null,d===null)throw Uc(p);return p.lanes=536870912,null}return Zv(p,S)}var D=d.memoizedState;if(D!==null){var W=D.dehydrated;if(lE(p),P)if(p.flags&256)p.flags&=-257,p=pj(d,p,_);else if(p.memoizedState!==null)p.child=d.child,p.flags|=128,p=null;else throw Error(i(558));else if(Ui||lh(d,p,_,!1),P=(_&d.childLanes)!==0,Ui||P){if(S=Xn,S!==null&&(W=pr(S,_),W!==0&&W!==D.retryLane))throw D.retryLane=W,vd(d,W),ka(S,d,W),NE;lb(),p=pj(d,p,_)}else d=D.treeContext,ti=Ms(W.nextSibling),Dr=p,yn=!0,jc=null,Ss=!1,d!==null&&eI(p,d),p=Zv(p,S),p.flags|=4096;return p}return d=ml(d.child,{mode:S.mode,children:S.children}),d.ref=p.ref,p.child=d,d.return=p,d}function Qv(d,p){var _=p.ref;if(_===null)d!==null&&d.ref!==null&&(p.flags|=4194816);else{if(typeof _!="function"&&typeof _!="object")throw Error(i(284));(d===null||d.ref!==_)&&(p.flags|=4194816)}}function RE(d,p,_,S,P){return Sd(p),_=uE(d,p,_,S,void 0,P),S=dE(),d!==null&&!Ui?(fE(d,p,P),_l(d,p,P)):(yn&&S&&GM(p),p.flags|=1,Lr(d,p,_,P),p.child)}function mj(d,p,_,S,P,D){return Sd(p),p.updateQueue=null,_=vI(p,S,_,P),xI(d),S=dE(),d!==null&&!Ui?(fE(d,p,D),_l(d,p,D)):(yn&&S&&GM(p),p.flags|=1,Lr(d,p,_,D),p.child)}function gj(d,p,_,S,P){if(Sd(p),p.stateNode===null){var D=rh,W=_.contextType;typeof W=="object"&&W!==null&&(D=Or(W)),D=new _(S,D),p.memoizedState=D.state!==null&&D.state!==void 0?D.state:null,D.updater=TE,p.stateNode=D,D._reactInternals=p,D=p.stateNode,D.props=S,D.state=p.memoizedState,D.refs={},nE(p),W=_.contextType,D.context=typeof W=="object"&&W!==null?Or(W):rh,D.state=p.memoizedState,W=_.getDerivedStateFromProps,typeof W=="function"&&(AE(p,_,W,S),D.state=p.memoizedState),typeof _.getDerivedStateFromProps=="function"||typeof D.getSnapshotBeforeUpdate=="function"||typeof D.UNSAFE_componentWillMount!="function"&&typeof D.componentWillMount!="function"||(W=D.state,typeof D.componentWillMount=="function"&&D.componentWillMount(),typeof D.UNSAFE_componentWillMount=="function"&&D.UNSAFE_componentWillMount(),W!==D.state&&TE.enqueueReplaceState(D,D.state,null),ag(p,S,D,P),rg(),D.state=p.memoizedState),typeof D.componentDidMount=="function"&&(p.flags|=4194308),S=!0}else if(d===null){D=p.stateNode;var ie=p.memoizedProps,Se=Cd(_,ie);D.props=Se;var Be=D.context,et=_.contextType;W=rh,typeof et=="object"&&et!==null&&(W=Or(et));var ot=_.getDerivedStateFromProps;et=typeof ot=="function"||typeof D.getSnapshotBeforeUpdate=="function",ie=p.pendingProps!==ie,et||typeof D.UNSAFE_componentWillReceiveProps!="function"&&typeof D.componentWillReceiveProps!="function"||(ie||Be!==W)&&nj(p,D,S,W),zc=!1;var Ve=p.memoizedState;D.state=Ve,ag(p,S,D,P),rg(),Be=p.memoizedState,ie||Ve!==Be||zc?(typeof ot=="function"&&(AE(p,_,ot,S),Be=p.memoizedState),(Se=zc||tj(p,_,Se,S,Ve,Be,W))?(et||typeof D.UNSAFE_componentWillMount!="function"&&typeof D.componentWillMount!="function"||(typeof D.componentWillMount=="function"&&D.componentWillMount(),typeof D.UNSAFE_componentWillMount=="function"&&D.UNSAFE_componentWillMount()),typeof D.componentDidMount=="function"&&(p.flags|=4194308)):(typeof D.componentDidMount=="function"&&(p.flags|=4194308),p.memoizedProps=S,p.memoizedState=Be),D.props=S,D.state=Be,D.context=W,S=Se):(typeof D.componentDidMount=="function"&&(p.flags|=4194308),S=!1)}else{D=p.stateNode,iE(d,p),W=p.memoizedProps,et=Cd(_,W),D.props=et,ot=p.pendingProps,Ve=D.context,Be=_.contextType,Se=rh,typeof Be=="object"&&Be!==null&&(Se=Or(Be)),ie=_.getDerivedStateFromProps,(Be=typeof ie=="function"||typeof D.getSnapshotBeforeUpdate=="function")||typeof D.UNSAFE_componentWillReceiveProps!="function"&&typeof D.componentWillReceiveProps!="function"||(W!==ot||Ve!==Se)&&nj(p,D,S,Se),zc=!1,Ve=p.memoizedState,D.state=Ve,ag(p,S,D,P),rg();var Ze=p.memoizedState;W!==ot||Ve!==Ze||zc||d!==null&&d.dependencies!==null&&Dv(d.dependencies)?(typeof ie=="function"&&(AE(p,_,ie,S),Ze=p.memoizedState),(et=zc||tj(p,_,et,S,Ve,Ze,Se)||d!==null&&d.dependencies!==null&&Dv(d.dependencies))?(Be||typeof D.UNSAFE_componentWillUpdate!="function"&&typeof D.componentWillUpdate!="function"||(typeof D.componentWillUpdate=="function"&&D.componentWillUpdate(S,Ze,Se),typeof D.UNSAFE_componentWillUpdate=="function"&&D.UNSAFE_componentWillUpdate(S,Ze,Se)),typeof D.componentDidUpdate=="function"&&(p.flags|=4),typeof D.getSnapshotBeforeUpdate=="function"&&(p.flags|=1024)):(typeof D.componentDidUpdate!="function"||W===d.memoizedProps&&Ve===d.memoizedState||(p.flags|=4),typeof D.getSnapshotBeforeUpdate!="function"||W===d.memoizedProps&&Ve===d.memoizedState||(p.flags|=1024),p.memoizedProps=S,p.memoizedState=Ze),D.props=S,D.state=Ze,D.context=Se,S=et):(typeof D.componentDidUpdate!="function"||W===d.memoizedProps&&Ve===d.memoizedState||(p.flags|=4),typeof D.getSnapshotBeforeUpdate!="function"||W===d.memoizedProps&&Ve===d.memoizedState||(p.flags|=1024),S=!1)}return D=S,Qv(d,p),S=(p.flags&128)!==0,D||S?(D=p.stateNode,_=S&&typeof _.getDerivedStateFromError!="function"?null:D.render(),p.flags|=1,d!==null&&S?(p.child=Ad(p,d.child,null,P),p.child=Ad(p,null,_,P)):Lr(d,p,_,P),p.memoizedState=D.state,d=p.child):d=_l(d,p,P),d}function xj(d,p,_,S){return yd(),p.flags|=256,Lr(d,p,_,S),p.child}var PE={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function kE(d){return{baseLanes:d,cachePool:sI()}}function DE(d,p,_){return d=d!==null?d.childLanes&~_:0,p&&(d|=Ja),d}function vj(d,p,_){var S=p.pendingProps,P=!1,D=(p.flags&128)!==0,W;if((W=D)||(W=d!==null&&d.memoizedState===null?!1:(Ci.current&2)!==0),W&&(P=!0,p.flags&=-129),W=(p.flags&32)!==0,p.flags&=-33,d===null){if(yn){if(P?$c(p):Vc(),(d=ti)?(d=A4(d,Ss),d=d!==null&&d.data!=="&"?d:null,d!==null&&(p.memoizedState={dehydrated:d,treeContext:Ic!==null?{id:Ro,overflow:Po}:null,retryLane:536870912,hydrationErrors:null},_=ZL(d),_.return=p,p.child=_,Dr=p,ti=null)):d=null,d===null)throw Uc(p);return mA(d)?p.lanes=32:p.lanes=536870912,null}var ie=S.children;return S=S.fallback,P?(Vc(),P=p.mode,ie=Jv({mode:"hidden",children:ie},P),S=bd(S,P,_,null),ie.return=p,S.return=p,ie.sibling=S,p.child=ie,S=p.child,S.memoizedState=kE(_),S.childLanes=DE(d,W,_),p.memoizedState=PE,ug(null,S)):($c(p),OE(p,ie))}var Se=d.memoizedState;if(Se!==null&&(ie=Se.dehydrated,ie!==null)){if(D)p.flags&256?($c(p),p.flags&=-257,p=LE(d,p,_)):p.memoizedState!==null?(Vc(),p.child=d.child,p.flags|=128,p=null):(Vc(),ie=S.fallback,P=p.mode,S=Jv({mode:"visible",children:S.children},P),ie=bd(ie,P,_,null),ie.flags|=2,S.return=p,ie.return=p,S.sibling=ie,p.child=S,Ad(p,d.child,null,_),S=p.child,S.memoizedState=kE(_),S.childLanes=DE(d,W,_),p.memoizedState=PE,p=ug(null,S));else if($c(p),mA(ie)){if(W=ie.nextSibling&&ie.nextSibling.dataset,W)var Be=W.dgst;W=Be,S=Error(i(419)),S.stack="",S.digest=W,Qm({value:S,source:null,stack:null}),p=LE(d,p,_)}else if(Ui||lh(d,p,_,!1),W=(_&d.childLanes)!==0,Ui||W){if(W=Xn,W!==null&&(S=pr(W,_),S!==0&&S!==Se.retryLane))throw Se.retryLane=S,vd(d,S),ka(W,d,S),NE;pA(ie)||lb(),p=LE(d,p,_)}else pA(ie)?(p.flags|=192,p.child=d.child,p=null):(d=Se.treeContext,ti=Ms(ie.nextSibling),Dr=p,yn=!0,jc=null,Ss=!1,d!==null&&eI(p,d),p=OE(p,S.children),p.flags|=4096);return p}return P?(Vc(),ie=S.fallback,P=p.mode,Se=d.child,Be=Se.sibling,S=ml(Se,{mode:"hidden",children:S.children}),S.subtreeFlags=Se.subtreeFlags&65011712,Be!==null?ie=ml(Be,ie):(ie=bd(ie,P,_,null),ie.flags|=2),ie.return=p,S.return=p,S.sibling=ie,p.child=S,ug(null,S),S=p.child,ie=d.child.memoizedState,ie===null?ie=kE(_):(P=ie.cachePool,P!==null?(Se=Ii._currentValue,P=P.parent!==Se?{parent:Se,pool:Se}:P):P=sI(),ie={baseLanes:ie.baseLanes|_,cachePool:P}),S.memoizedState=ie,S.childLanes=DE(d,W,_),p.memoizedState=PE,ug(d.child,S)):($c(p),_=d.child,d=_.sibling,_=ml(_,{mode:"visible",children:S.children}),_.return=p,_.sibling=null,d!==null&&(W=p.deletions,W===null?(p.deletions=[d],p.flags|=16):W.push(d)),p.child=_,p.memoizedState=null,_)}function OE(d,p){return p=Jv({mode:"visible",children:p},d.mode),p.return=d,d.child=p}function Jv(d,p){return d=Ka(22,d,null,p),d.lanes=0,d}function LE(d,p,_){return Ad(p,d.child,null,_),d=OE(p,p.pendingProps.children),d.flags|=2,p.memoizedState=null,d}function bj(d,p,_){d.lanes|=p;var S=d.alternate;S!==null&&(S.lanes|=p),YM(d.return,p,_)}function IE(d,p,_,S,P,D){var W=d.memoizedState;W===null?d.memoizedState={isBackwards:p,rendering:null,renderingStartTime:0,last:S,tail:_,tailMode:P,treeForkCount:D}:(W.isBackwards=p,W.rendering=null,W.renderingStartTime=0,W.last=S,W.tail=_,W.tailMode=P,W.treeForkCount=D)}function yj(d,p,_){var S=p.pendingProps,P=S.revealOrder,D=S.tail;S=S.children;var W=Ci.current,ie=(W&2)!==0;if(ie?(W=W&1|2,p.flags|=128):W&=1,ae(Ci,W),Lr(d,p,S,_),S=yn?Zm:0,!ie&&d!==null&&(d.flags&128)!==0)e:for(d=p.child;d!==null;){if(d.tag===13)d.memoizedState!==null&&bj(d,_,p);else if(d.tag===19)bj(d,_,p);else if(d.child!==null){d.child.return=d,d=d.child;continue}if(d===p)break e;for(;d.sibling===null;){if(d.return===null||d.return===p)break e;d=d.return}d.sibling.return=d.return,d=d.sibling}switch(P){case"forwards":for(_=p.child,P=null;_!==null;)d=_.alternate,d!==null&&Bv(d)===null&&(P=_),_=_.sibling;_=P,_===null?(P=p.child,p.child=null):(P=_.sibling,_.sibling=null),IE(p,!1,P,_,D,S);break;case"backwards":case"unstable_legacy-backwards":for(_=null,P=p.child,p.child=null;P!==null;){if(d=P.alternate,d!==null&&Bv(d)===null){p.child=P;break}d=P.sibling,P.sibling=_,_=P,P=d}IE(p,!0,_,null,D,S);break;case"together":IE(p,!1,null,null,void 0,S);break;default:p.memoizedState=null}return p.child}function _l(d,p,_){if(d!==null&&(p.dependencies=d.dependencies),qc|=p.lanes,(_&p.childLanes)===0)if(d!==null){if(lh(d,p,_,!1),(_&p.childLanes)===0)return null}else return null;if(d!==null&&p.child!==d.child)throw Error(i(153));if(p.child!==null){for(d=p.child,_=ml(d,d.pendingProps),p.child=_,_.return=p;d.sibling!==null;)d=d.sibling,_=_.sibling=ml(d,d.pendingProps),_.return=p;_.sibling=null}return p.child}function jE(d,p){return(d.lanes&p)!==0?!0:(d=d.dependencies,!!(d!==null&&Dv(d)))}function ite(d,p,_){switch(p.tag){case 3:Pe(p,p.stateNode.containerInfo),Fc(p,Ii,d.memoizedState.cache),yd();break;case 27:case 5:ge(p);break;case 4:Pe(p,p.stateNode.containerInfo);break;case 10:Fc(p,p.type,p.memoizedProps.value);break;case 31:if(p.memoizedState!==null)return p.flags|=128,lE(p),null;break;case 13:var S=p.memoizedState;if(S!==null)return S.dehydrated!==null?($c(p),p.flags|=128,null):(_&p.child.childLanes)!==0?vj(d,p,_):($c(p),d=_l(d,p,_),d!==null?d.sibling:null);$c(p);break;case 19:var P=(d.flags&128)!==0;if(S=(_&p.childLanes)!==0,S||(lh(d,p,_,!1),S=(_&p.childLanes)!==0),P){if(S)return yj(d,p,_);p.flags|=128}if(P=p.memoizedState,P!==null&&(P.rendering=null,P.tail=null,P.lastEffect=null),ae(Ci,Ci.current),S)break;return null;case 22:return p.lanes=0,fj(d,p,_,p.pendingProps);case 24:Fc(p,Ii,d.memoizedState.cache)}return _l(d,p,_)}function _j(d,p,_){if(d!==null)if(d.memoizedProps!==p.pendingProps)Ui=!0;else{if(!jE(d,_)&&(p.flags&128)===0)return Ui=!1,ite(d,p,_);Ui=(d.flags&131072)!==0}else Ui=!1,yn&&(p.flags&1048576)!==0&&JL(p,Zm,p.index);switch(p.lanes=0,p.tag){case 16:e:{var S=p.pendingProps;if(d=Md(p.elementType),p.type=d,typeof d=="function")HM(d)?(S=Cd(d,S),p.tag=1,p=gj(null,p,d,S,_)):(p.tag=0,p=RE(null,p,d,S,_));else{if(d!=null){var P=d.$$typeof;if(P===A){p.tag=11,p=cj(null,p,d,S,_);break e}else if(P===N){p.tag=14,p=uj(null,p,d,S,_);break e}}throw p=L(d)||d,Error(i(306,p,""))}}return p;case 0:return RE(d,p,p.type,p.pendingProps,_);case 1:return S=p.type,P=Cd(S,p.pendingProps),gj(d,p,S,P,_);case 3:e:{if(Pe(p,p.stateNode.containerInfo),d===null)throw Error(i(387));S=p.pendingProps;var D=p.memoizedState;P=D.element,iE(d,p),ag(p,S,null,_);var W=p.memoizedState;if(S=W.cache,Fc(p,Ii,S),S!==D.cache&&ZM(p,[Ii],_,!0),rg(),S=W.element,D.isDehydrated)if(D={element:S,isDehydrated:!1,cache:W.cache},p.updateQueue.baseState=D,p.memoizedState=D,p.flags&256){p=xj(d,p,S,_);break e}else if(S!==P){P=bs(Error(i(424)),p),Qm(P),p=xj(d,p,S,_);break e}else{switch(d=p.stateNode.containerInfo,d.nodeType){case 9:d=d.body;break;default:d=d.nodeName==="HTML"?d.ownerDocument.body:d}for(ti=Ms(d.firstChild),Dr=p,yn=!0,jc=null,Ss=!0,_=fI(p,null,S,_),p.child=_;_;)_.flags=_.flags&-3|4096,_=_.sibling}else{if(yd(),S===P){p=_l(d,p,_);break e}Lr(d,p,S,_)}p=p.child}return p;case 26:return Qv(d,p),d===null?(_=k4(p.type,null,p.pendingProps,null))?p.memoizedState=_:yn||(_=p.type,d=p.pendingProps,S=mb(te.current).createElement(_),S[hi]=p,S[Ai]=d,Ir(S,_,d),Te(S),p.stateNode=S):p.memoizedState=k4(p.type,d.memoizedProps,p.pendingProps,d.memoizedState),null;case 27:return ge(p),d===null&&yn&&(S=p.stateNode=N4(p.type,p.pendingProps,te.current),Dr=p,Ss=!0,P=ti,Qc(p.type)?(gA=P,ti=Ms(S.firstChild)):ti=P),Lr(d,p,p.pendingProps.children,_),Qv(d,p),d===null&&(p.flags|=4194304),p.child;case 5:return d===null&&yn&&((P=S=ti)&&(S=Dte(S,p.type,p.pendingProps,Ss),S!==null?(p.stateNode=S,Dr=p,ti=Ms(S.firstChild),Ss=!1,P=!0):P=!1),P||Uc(p)),ge(p),P=p.type,D=p.pendingProps,W=d!==null?d.memoizedProps:null,S=D.children,dA(P,D)?S=null:W!==null&&dA(P,W)&&(p.flags|=32),p.memoizedState!==null&&(P=uE(d,p,Xee,null,null,_),Eg._currentValue=P),Qv(d,p),Lr(d,p,S,_),p.child;case 6:return d===null&&yn&&((d=_=ti)&&(_=Ote(_,p.pendingProps,Ss),_!==null?(p.stateNode=_,Dr=p,ti=null,d=!0):d=!1),d||Uc(p)),null;case 13:return vj(d,p,_);case 4:return Pe(p,p.stateNode.containerInfo),S=p.pendingProps,d===null?p.child=Ad(p,null,S,_):Lr(d,p,S,_),p.child;case 11:return cj(d,p,p.type,p.pendingProps,_);case 7:return Lr(d,p,p.pendingProps,_),p.child;case 8:return Lr(d,p,p.pendingProps.children,_),p.child;case 12:return Lr(d,p,p.pendingProps.children,_),p.child;case 10:return S=p.pendingProps,Fc(p,p.type,S.value),Lr(d,p,S.children,_),p.child;case 9:return P=p.type._context,S=p.pendingProps.children,Sd(p),P=Or(P),S=S(P),p.flags|=1,Lr(d,p,S,_),p.child;case 14:return uj(d,p,p.type,p.pendingProps,_);case 15:return dj(d,p,p.type,p.pendingProps,_);case 19:return yj(d,p,_);case 31:return nte(d,p,_);case 22:return fj(d,p,_,p.pendingProps);case 24:return Sd(p),S=Or(Ii),d===null?(P=eE(),P===null&&(P=Xn,D=QM(),P.pooledCache=D,D.refCount++,D!==null&&(P.pooledCacheLanes|=_),P=D),p.memoizedState={parent:S,cache:P},nE(p),Fc(p,Ii,P)):((d.lanes&_)!==0&&(iE(d,p),ag(p,null,null,_),rg()),P=d.memoizedState,D=p.memoizedState,P.parent!==S?(P={parent:S,cache:S},p.memoizedState=P,p.lanes===0&&(p.memoizedState=p.updateQueue.baseState=P),Fc(p,Ii,S)):(S=D.cache,Fc(p,Ii,S),S!==P.cache&&ZM(p,[Ii],_,!0))),Lr(d,p,p.pendingProps.children,_),p.child;case 29:throw p.pendingProps}throw Error(i(156,p.tag))}function Sl(d){d.flags|=4}function UE(d,p,_,S,P){if((p=(d.mode&32)!==0)&&(p=!1),p){if(d.flags|=16777216,(P&335544128)===P)if(d.stateNode.complete)d.flags|=8192;else if(Xj())d.flags|=8192;else throw Ed=jv,tE}else d.flags&=-16777217}function Sj(d,p){if(p.type!=="stylesheet"||(p.state.loading&4)!==0)d.flags&=-16777217;else if(d.flags|=16777216,!j4(p))if(Xj())d.flags|=8192;else throw Ed=jv,tE}function eb(d,p){p!==null&&(d.flags|=4),d.flags&16384&&(p=d.tag!==22?_t():536870912,d.lanes|=p,yh|=p)}function dg(d,p){if(!yn)switch(d.tailMode){case"hidden":p=d.tail;for(var _=null;p!==null;)p.alternate!==null&&(_=p),p=p.sibling;_===null?d.tail=null:_.sibling=null;break;case"collapsed":_=d.tail;for(var S=null;_!==null;)_.alternate!==null&&(S=_),_=_.sibling;S===null?p||d.tail===null?d.tail=null:d.tail.sibling=null:S.sibling=null}}function ni(d){var p=d.alternate!==null&&d.alternate.child===d.child,_=0,S=0;if(p)for(var P=d.child;P!==null;)_|=P.lanes|P.childLanes,S|=P.subtreeFlags&65011712,S|=P.flags&65011712,P.return=d,P=P.sibling;else for(P=d.child;P!==null;)_|=P.lanes|P.childLanes,S|=P.subtreeFlags,S|=P.flags,P.return=d,P=P.sibling;return d.subtreeFlags|=S,d.childLanes=_,p}function rte(d,p,_){var S=p.pendingProps;switch(WM(p),p.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return ni(p),null;case 1:return ni(p),null;case 3:return _=p.stateNode,S=null,d!==null&&(S=d.memoizedState.cache),p.memoizedState.cache!==S&&(p.flags|=2048),vl(Ii),he(),_.pendingContext&&(_.context=_.pendingContext,_.pendingContext=null),(d===null||d.child===null)&&(oh(p)?Sl(p):d===null||d.memoizedState.isDehydrated&&(p.flags&256)===0||(p.flags|=1024,XM())),ni(p),null;case 26:var P=p.type,D=p.memoizedState;return d===null?(Sl(p),D!==null?(ni(p),Sj(p,D)):(ni(p),UE(p,P,null,S,_))):D?D!==d.memoizedState?(Sl(p),ni(p),Sj(p,D)):(ni(p),p.flags&=-16777217):(d=d.memoizedProps,d!==S&&Sl(p),ni(p),UE(p,P,d,S,_)),null;case 27:if(De(p),_=te.current,P=p.type,d!==null&&p.stateNode!=null)d.memoizedProps!==S&&Sl(p);else{if(!S){if(p.stateNode===null)throw Error(i(166));return ni(p),null}d=ce.current,oh(p)?tI(p):(d=N4(P,S,_),p.stateNode=d,Sl(p))}return ni(p),null;case 5:if(De(p),P=p.type,d!==null&&p.stateNode!=null)d.memoizedProps!==S&&Sl(p);else{if(!S){if(p.stateNode===null)throw Error(i(166));return ni(p),null}if(D=ce.current,oh(p))tI(p);else{var W=mb(te.current);switch(D){case 1:D=W.createElementNS("http://www.w3.org/2000/svg",P);break;case 2:D=W.createElementNS("http://www.w3.org/1998/Math/MathML",P);break;default:switch(P){case"svg":D=W.createElementNS("http://www.w3.org/2000/svg",P);break;case"math":D=W.createElementNS("http://www.w3.org/1998/Math/MathML",P);break;case"script":D=W.createElement("div"),D.innerHTML=" +