diff --git a/dist/roverd b/dist/roverd index e32ba893..20d6d7cb 100755 Binary files a/dist/roverd and b/dist/roverd differ diff --git a/dist/servoverifier b/dist/servoverifier index 5a6e9de8..c73e2442 100755 Binary files a/dist/servoverifier and b/dist/servoverifier differ diff --git a/pi/roverd/cmd/roverd/main.go b/pi/roverd/cmd/roverd/main.go index fc6ca4d0..e6b33e87 100644 --- a/pi/roverd/cmd/roverd/main.go +++ b/pi/roverd/cmd/roverd/main.go @@ -78,10 +78,19 @@ func main() { defer nightVision.Close() } + var irTx *roverd.IRTransmitter + if cfg.IR.Enabled { + irTx, err = roverd.NewIRTransmitter(cfg.IR, logger) + if err != nil { + logger.Fatalf("init ir tx: %v", err) + } + defer irTx.Close() + } + autoCharge := roverd.NewAutoChargeController(adapter, eventStream, logger) go autoCharge.Run(ctx, sensorSamples) - client := roverd.NewWSClient(cfg, adapter, sensorFrames, eventStream, mediaSupervisor, cameraServo, nightVision, logger) + client := roverd.NewWSClient(cfg, adapter, sensorFrames, eventStream, mediaSupervisor, cameraServo, nightVision, irTx, logger) retryDelay := time.Second for ctx.Err() == nil { diff --git a/pi/roverd/command.go b/pi/roverd/command.go index d5c07062..dbbdb235 100644 --- a/pi/roverd/command.go +++ b/pi/roverd/command.go @@ -29,6 +29,7 @@ type inboundMessage struct { TTS *ttsPayload `json:"tts,omitempty"` NightVision *nightVisionPayload `json:"nightVision,omitempty"` Song *songPayload `json:"song,omitempty"` + IR *irPayload `json:"ir,omitempty"` } type driveDirectPayload struct { @@ -79,6 +80,11 @@ type songNote struct { Duration int `json:"duration"` } +type irPayload struct { + Code int `json:"code"` + Repeat int `json:"repeat,omitempty"` +} + type ackMessage struct { Type string `json:"type"` ID string `json:"id"` diff --git a/pi/roverd/config.go b/pi/roverd/config.go index 0bfbe20f..912af359 100644 --- a/pi/roverd/config.go +++ b/pi/roverd/config.go @@ -103,6 +103,20 @@ type NightVisionConfig struct { InitialOn bool `yaml:"initialOn" json:"initialOn"` } +type IRConfig struct { + Enabled bool `yaml:"enabled" json:"enabled"` + Pin int `yaml:"pin" json:"pin"` + CarrierHz int `yaml:"carrierHz" json:"carrierHz"` + CycleLen int `yaml:"cycleLen" json:"cycleLen"` + DutyPercent int `yaml:"dutyPercent" json:"dutyPercent"` + Bit0OnMs int `yaml:"bit0OnMs" json:"bit0OnMs"` + Bit1OnMs int `yaml:"bit1OnMs" json:"bit1OnMs"` + BitTotalMs int `yaml:"bitTotalMs" json:"bitTotalMs"` + Repeat int `yaml:"repeat" json:"repeat"` + GapMs int `yaml:"gapMs" json:"gapMs"` + ActiveLow bool `yaml:"activeLow" json:"activeLow"` +} + type Config struct { Name string `yaml:"name"` ServerURL string `yaml:"serverUrl"` @@ -114,6 +128,7 @@ type Config struct { CameraServo CameraServoConfig `yaml:"cameraServo"` Audio AudioConfig `yaml:"audio"` NightVision NightVisionConfig `yaml:"nightVision" json:"nightVision"` + IR IRConfig `yaml:"ir" json:"ir"` } func LoadConfig(path string) (*Config, error) { @@ -169,6 +184,19 @@ func LoadConfig(path string) (*Config, error) { GPIOChip: "gpiochip0", InitialOn: true, }, + IR: IRConfig{ + Enabled: false, + Pin: 17, + CarrierHz: 38000, + CycleLen: 100, + DutyPercent: 50, + Bit0OnMs: 1, + Bit1OnMs: 3, + BitTotalMs: 4, + Repeat: 3, + GapMs: 100, + ActiveLow: true, + }, } if err := yaml.Unmarshal(data, &cfg); err != nil { return nil, err @@ -232,6 +260,9 @@ func LoadConfig(path string) (*Config, error) { if err := validateNightVisionConfig(&cfg.NightVision); err != nil { return nil, fmt.Errorf("nightVision: %w", err) } + if err := validateIRConfig(&cfg.IR); err != nil { + return nil, fmt.Errorf("ir: %w", err) + } validateAudioConfig(&cfg.Audio) return &cfg, nil } @@ -316,6 +347,37 @@ func validateNightVisionConfig(cfg *NightVisionConfig) error { return nil } +func validateIRConfig(cfg *IRConfig) error { + if !cfg.Enabled { + return nil + } + if cfg.Pin <= 0 { + return errors.New("pin must be > 0") + } + if cfg.CarrierHz <= 0 { + return errors.New("carrierHz must be > 0") + } + if cfg.CycleLen <= 0 { + return errors.New("cycleLen must be > 0") + } + if cfg.DutyPercent <= 0 || cfg.DutyPercent >= 100 { + return errors.New("dutyPercent must be 1-99") + } + if cfg.Bit0OnMs <= 0 || cfg.Bit1OnMs <= 0 { + return errors.New("bit0OnMs/bit1OnMs must be > 0") + } + if cfg.BitTotalMs < cfg.Bit0OnMs || cfg.BitTotalMs < cfg.Bit1OnMs { + return errors.New("bitTotalMs must be >= bit on durations") + } + if cfg.Repeat <= 0 { + cfg.Repeat = 1 + } + if cfg.GapMs < 0 { + cfg.GapMs = 0 + } + return nil +} + func derivePublishURL(serverURL, streamName string, port int) (string, error) { if streamName == "" { return "", errors.New("missing stream name for publishUrl") diff --git a/pi/roverd/ir_tx.go b/pi/roverd/ir_tx.go new file mode 100644 index 00000000..5e5f157a --- /dev/null +++ b/pi/roverd/ir_tx.go @@ -0,0 +1,327 @@ +//go:build !dummy + +package roverd + +import ( + "bytes" + "encoding/binary" + "fmt" + "io" + "log" + "net" + "sync" + "time" +) + +const ( + pigpioAddr = "127.0.0.1:8888" + piCmdSetMode = 0 + piCmdWrite = 4 + piCmdWaveClear = 27 + piCmdWaveAddGeneric = 28 + piCmdWaveTxBusy = 32 + piCmdWaveCreate = 49 + piCmdWaveDelete = 50 + piCmdWaveTxSend = 51 + piOutput = 1 +) + +type pigpioCmd struct { + Cmd uint32 + P1 uint32 + P2 uint32 + P3 uint32 +} + +type gpioPulse struct { + GpioOn uint32 + GpioOff uint32 + DelayUs uint32 +} + +type pigpioClient struct { + conn net.Conn + mu sync.Mutex +} + +func newPigpioClient(addr string) (*pigpioClient, error) { + conn, err := net.Dial("tcp", addr) + if err != nil { + return nil, err + } + if tcpConn, ok := conn.(*net.TCPConn); ok { + _ = tcpConn.SetNoDelay(true) + } + return &pigpioClient{conn: conn}, nil +} + +func (c *pigpioClient) Close() error { + if c.conn == nil { + return nil + } + return c.conn.Close() +} + +func (c *pigpioClient) command(cmd, p1, p2, p3 uint32, ext []byte) (int32, error) { + c.mu.Lock() + defer c.mu.Unlock() + + var buf [16]byte + binary.LittleEndian.PutUint32(buf[0:], cmd) + binary.LittleEndian.PutUint32(buf[4:], p1) + binary.LittleEndian.PutUint32(buf[8:], p2) + binary.LittleEndian.PutUint32(buf[12:], p3) + + if _, err := c.conn.Write(buf[:]); err != nil { + return -1, err + } + if len(ext) > 0 { + if _, err := c.conn.Write(ext); err != nil { + return -1, err + } + } + if _, err := io.ReadFull(c.conn, buf[:]); err != nil { + return -1, err + } + res := int32(binary.LittleEndian.Uint32(buf[12:])) + return res, nil +} + +type IRTransmitter struct { + cfg IRConfig + logger *log.Logger + gpioMask uint32 + pigpio *pigpioClient + mu sync.Mutex + closed bool + activeLow bool +} + +func NewIRTransmitter(cfg IRConfig, logger *log.Logger) (*IRTransmitter, error) { + if !cfg.Enabled { + return nil, fmt.Errorf("ir disabled") + } + + client, err := newPigpioClient(pigpioAddr) + if err != nil { + return nil, fmt.Errorf("connect pigpio: %w", err) + } + mask := uint32(1) << cfg.Pin + tx := &IRTransmitter{ + cfg: cfg, + logger: logger, + gpioMask: mask, + pigpio: client, + activeLow: cfg.ActiveLow, + } + + if err := tx.configureLine(); err != nil { + _ = client.Close() + return nil, err + } + + logger.Printf("ir tx initialized on GPIO %d (%d Hz carrier, activeLow=%v)", cfg.Pin, cfg.CarrierHz, tx.activeLow) + return tx, nil +} + +func (t *IRTransmitter) Close() { + t.mu.Lock() + defer t.mu.Unlock() + if t.closed { + return + } + _ = t.setInactive() + _ = t.pigpio.Close() + t.closed = true +} + +func (t *IRTransmitter) Send(code byte, repeat int) error { + t.mu.Lock() + defer t.mu.Unlock() + if t.closed { + return fmt.Errorf("ir transmitter closed") + } + if repeat <= 0 { + repeat = t.cfg.Repeat + } + pulses, totalUs := t.buildWaveform(code, repeat) + if len(pulses) == 0 { + return nil + } + if err := t.writeWave(pulses, time.Duration(totalUs)*time.Microsecond); err != nil { + return err + } + return nil +} + +func (t *IRTransmitter) configureLine() error { + if res, err := t.pigpio.command(piCmdSetMode, uint32(t.cfg.Pin), piOutput, 0, nil); err != nil { + return fmt.Errorf("pigpio set mode: %w", err) + } else if res < 0 { + return fmt.Errorf("pigpio set mode: %d", res) + } + return t.setInactive() +} + +func (t *IRTransmitter) setInactive() error { + level := uint32(0) + if t.activeLow { + level = 1 + } + res, err := t.pigpio.command(piCmdWrite, uint32(t.cfg.Pin), level, 0, nil) + if err != nil { + return fmt.Errorf("pigpio write: %w", err) + } + if res < 0 { + return fmt.Errorf("pigpio write: %d", res) + } + return nil +} + +func (t *IRTransmitter) buildWaveform(code byte, repeat int) ([]gpioPulse, int) { + if repeat <= 0 { + return nil, 0 + } + periodUs := int(1_000_000 / t.cfg.CarrierHz) + if periodUs <= 0 { + periodUs = 1 + } + onDuty := int(float64(periodUs) * (float64(t.cfg.DutyPercent) / 100.0)) + if onDuty <= 0 { + onDuty = 1 + } + if onDuty >= periodUs { + onDuty = periodUs - 1 + } + offDuty := periodUs - onDuty + if offDuty <= 0 { + offDuty = 1 + } + + var pulses []gpioPulse + totalUs := 0 + onPulse := func(duration int) { + if duration <= 0 { + return + } + pulses = append(pulses, t.pulseOn(duration)) + totalUs += duration + } + offPulse := func(duration int) { + if duration <= 0 { + return + } + pulses = append(pulses, t.pulseOff(duration)) + totalUs += duration + } + addCarrier := func(onUs int) { + if onUs <= 0 { + return + } + cycles := onUs / periodUs + if onUs%periodUs != 0 { + cycles++ + } + for i := 0; i < cycles; i++ { + onPulse(onDuty) + offPulse(offDuty) + } + } + + for i := 0; i < repeat; i++ { + for mask := byte(0x80); mask > 0; mask >>= 1 { + onMs := t.cfg.Bit0OnMs + if code&mask != 0 { + onMs = t.cfg.Bit1OnMs + } + onUs := onMs * 1000 + offUs := (t.cfg.BitTotalMs - onMs) * 1000 + addCarrier(onUs) + offPulse(offUs) + } + if i < repeat-1 && t.cfg.GapMs > 0 { + offPulse(t.cfg.GapMs * 1000) + } + } + if totalUs > 0 { + pulses = append(pulses, t.pulseOff(1)) + totalUs++ + } + return pulses, totalUs +} + +func (t *IRTransmitter) pulseOn(durationUs int) gpioPulse { + if t.activeLow { + return gpioPulse{GpioOn: 0, GpioOff: t.gpioMask, DelayUs: uint32(durationUs)} + } + return gpioPulse{GpioOn: t.gpioMask, GpioOff: 0, DelayUs: uint32(durationUs)} +} + +func (t *IRTransmitter) pulseOff(durationUs int) gpioPulse { + if t.activeLow { + return gpioPulse{GpioOn: t.gpioMask, GpioOff: 0, DelayUs: uint32(durationUs)} + } + return gpioPulse{GpioOn: 0, GpioOff: t.gpioMask, DelayUs: uint32(durationUs)} +} + +func (t *IRTransmitter) writeWave(pulses []gpioPulse, duration time.Duration) error { + if len(pulses) == 0 { + return nil + } + if res, err := t.pigpio.command(piCmdWaveClear, 0, 0, 0, nil); err != nil { + return fmt.Errorf("pigpio wave clear: %w", err) + } else if res < 0 { + return fmt.Errorf("pigpio wave clear: %d", res) + } + + payload := make([]byte, 0, len(pulses)*12) + buf := bytes.NewBuffer(payload) + for _, pulse := range pulses { + _ = binary.Write(buf, binary.LittleEndian, pulse.GpioOn) + _ = binary.Write(buf, binary.LittleEndian, pulse.GpioOff) + _ = binary.Write(buf, binary.LittleEndian, pulse.DelayUs) + } + data := buf.Bytes() + if res, err := t.pigpio.command(piCmdWaveAddGeneric, 0, 0, uint32(len(data)), data); err != nil { + return fmt.Errorf("pigpio wave add: %w", err) + } else if res < 0 { + return fmt.Errorf("pigpio wave add: %d", res) + } + + waveID, err := t.pigpio.command(piCmdWaveCreate, 0, 0, 0, nil) + if err != nil { + return fmt.Errorf("pigpio wave create: %w", err) + } + if waveID < 0 { + return fmt.Errorf("pigpio wave create: %d", waveID) + } + defer func() { + _, _ = t.pigpio.command(piCmdWaveDelete, uint32(waveID), 0, 0, nil) + }() + + if res, err := t.pigpio.command(piCmdWaveTxSend, uint32(waveID), 0, 0, nil); err != nil { + return fmt.Errorf("pigpio wave tx: %w", err) + } else if res < 0 { + return fmt.Errorf("pigpio wave tx: %d", res) + } + + if duration <= 0 { + return nil + } + timeout := duration + 250*time.Millisecond + deadline := time.Now().Add(timeout) + for time.Now().Before(deadline) { + busy, err := t.pigpio.command(piCmdWaveTxBusy, 0, 0, 0, nil) + if err != nil { + return fmt.Errorf("pigpio wave busy: %w", err) + } + if busy < 0 { + return fmt.Errorf("pigpio wave busy: %d", busy) + } + if busy == 0 { + return nil + } + time.Sleep(2 * time.Millisecond) + } + return fmt.Errorf("pigpio wave timeout after %s", timeout) +} diff --git a/pi/roverd/ir_tx_dummy.go b/pi/roverd/ir_tx_dummy.go new file mode 100644 index 00000000..6432b828 --- /dev/null +++ b/pi/roverd/ir_tx_dummy.go @@ -0,0 +1,20 @@ +//go:build dummy + +package roverd + +import "log" + +type IRTransmitter struct{} + +func NewIRTransmitter(cfg IRConfig, logger *log.Logger) (*IRTransmitter, error) { + if cfg.Enabled { + logger.Printf("[dummy] IR TX enabled on pin %d", cfg.Pin) + } + return &IRTransmitter{}, nil +} + +func (t *IRTransmitter) Close() {} + +func (t *IRTransmitter) Send(code byte, repeat int) error { + return nil +} diff --git a/pi/roverd/roverd.sample.yaml b/pi/roverd/roverd.sample.yaml index fec07f0e..f712046a 100644 --- a/pi/roverd/roverd.sample.yaml +++ b/pi/roverd/roverd.sample.yaml @@ -53,3 +53,15 @@ nightVision: gpioPin: 22 gpioChip: gpiochip0 initialOn: true +ir: + enabled: false + pin: 17 + carrierHz: 38000 + cycleLen: 100 + dutyPercent: 50 + bit0OnMs: 1 + bit1OnMs: 3 + bitTotalMs: 4 + repeat: 3 + gapMs: 100 + activeLow: true diff --git a/pi/roverd/roverd.yaml b/pi/roverd/roverd.yaml index df8367cf..f09fb311 100644 --- a/pi/roverd/roverd.yaml +++ b/pi/roverd/roverd.yaml @@ -31,3 +31,15 @@ cameraServo: homeAngle: 0 nudgeDegrees: 2 allowRawPulse: false +ir: + enabled: false + pin: 17 + carrierHz: 38000 + cycleLen: 100 + dutyPercent: 50 + bit0OnMs: 1 + bit1OnMs: 3 + bitTotalMs: 4 + repeat: 3 + gapMs: 100 + activeLow: true diff --git a/pi/roverd/wsclient.go b/pi/roverd/wsclient.go index a98a5d10..150752a3 100644 --- a/pi/roverd/wsclient.go +++ b/pi/roverd/wsclient.go @@ -20,6 +20,7 @@ type WSClient struct { media *MediaSupervisor servo *CameraServo nightVision *NightVisionLight + ir *IRTransmitter log *log.Logger recoverMu sync.Mutex recovering bool @@ -30,7 +31,7 @@ type WSClient struct { seekIssued bool } -func NewWSClient(cfg *Config, adapter *SerialAdapter, frames <-chan []byte, events chan RoverEvent, media *MediaSupervisor, servo *CameraServo, nightVision *NightVisionLight, logger *log.Logger) *WSClient { +func NewWSClient(cfg *Config, adapter *SerialAdapter, frames <-chan []byte, events chan RoverEvent, media *MediaSupervisor, servo *CameraServo, nightVision *NightVisionLight, ir *IRTransmitter, logger *log.Logger) *WSClient { var ttsQueue chan *ttsPayload if cfg.Audio.TTSEnabled { ttsQueue = make(chan *ttsPayload, 2) @@ -43,6 +44,7 @@ func NewWSClient(cfg *Config, adapter *SerialAdapter, frames <-chan []byte, even media: media, servo: servo, nightVision: nightVision, + ir: ir, log: logger, ttsQueue: ttsQueue, } @@ -181,6 +183,13 @@ func (c *WSClient) dispatch(ctx context.Context, msg *inboundMessage) error { slot = clampInt(*msg.Song.Slot, 0, 4) } return c.adapter.PlaySong(slot, msg.Song.Notes) + case msg.IR != nil: + if c.ir == nil { + return fmt.Errorf("ir disabled") + } + code := clampInt(msg.IR.Code, 0, 255) + repeat := clampInt(msg.IR.Repeat, 0, 10) + return c.ir.Send(byte(code), repeat) default: return fmt.Errorf("unsupported command type: %s", msg.Type) } diff --git a/server/public/assets/index-CvfJ6hKE.js b/server/public/assets/index-UA5S-yPp.js similarity index 58% rename from server/public/assets/index-CvfJ6hKE.js rename to server/public/assets/index-UA5S-yPp.js index 3dbb4c7e..57bd57ac 100644 --- a/server/public/assets/index-CvfJ6hKE.js +++ b/server/public/assets/index-UA5S-yPp.js @@ -1,12 +1,12 @@ -(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const f of document.querySelectorAll('link[rel="modulepreload"]'))r(f);new MutationObserver(f=>{for(const d of f)if(d.type==="childList")for(const p of d.addedNodes)p.tagName==="LINK"&&p.rel==="modulepreload"&&r(p)}).observe(document,{childList:!0,subtree:!0});function i(f){const d={};return f.integrity&&(d.integrity=f.integrity),f.referrerPolicy&&(d.referrerPolicy=f.referrerPolicy),f.crossOrigin==="use-credentials"?d.credentials="include":f.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function r(f){if(f.ep)return;f.ep=!0;const d=i(f);fetch(f.href,d)}})();function Bv(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}var zc={exports:{}},hs={};var Im;function Lv(){if(Im)return hs;Im=1;var a=Symbol.for("react.transitional.element"),s=Symbol.for("react.fragment");function i(r,f,d){var p=null;if(d!==void 0&&(p=""+d),f.key!==void 0&&(p=""+f.key),"key"in f){d={};for(var m in f)m!=="key"&&(d[m]=f[m])}else d=f;return f=d.ref,{$$typeof:a,type:r,key:p,ref:f!==void 0?f:null,props:d}}return hs.Fragment=s,hs.jsx=i,hs.jsxs=i,hs}var Pm;function Uv(){return Pm||(Pm=1,zc.exports=Lv()),zc.exports}var c=Uv(),Bc={exports:{}},he={};var ep;function Hv(){if(ep)return he;ep=1;var a=Symbol.for("react.transitional.element"),s=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),d=Symbol.for("react.consumer"),p=Symbol.for("react.context"),m=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),v=Symbol.for("react.memo"),b=Symbol.for("react.lazy"),S=Symbol.for("react.activity"),R=Symbol.iterator;function N(w){return w===null||typeof w!="object"?null:(w=R&&w[R]||w["@@iterator"],typeof w=="function"?w:null)}var E={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,A={};function j(w,B,G){this.props=w,this.context=B,this.refs=A,this.updater=G||E}j.prototype.isReactComponent={},j.prototype.setState=function(w,B){if(typeof w!="object"&&typeof w!="function"&&w!=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,w,B,"setState")},j.prototype.forceUpdate=function(w){this.updater.enqueueForceUpdate(this,w,"forceUpdate")};function M(){}M.prototype=j.prototype;function V(w,B,G){this.props=w,this.context=B,this.refs=A,this.updater=G||E}var F=V.prototype=new M;F.constructor=V,C(F,j.prototype),F.isPureReactComponent=!0;var P=Array.isArray;function Z(){}var H={H:null,A:null,T:null,S:null},$=Object.prototype.hasOwnProperty;function ee(w,B,G){var Q=G.ref;return{$$typeof:a,type:w,key:B,ref:Q!==void 0?Q:null,props:G}}function ue(w,B){return ee(w.type,B,w.props)}function oe(w){return typeof w=="object"&&w!==null&&w.$$typeof===a}function se(w){var B={"=":"=0",":":"=2"};return"$"+w.replace(/[=:]/g,function(G){return B[G]})}var J=/\/+/g;function te(w,B){return typeof w=="object"&&w!==null&&w.key!=null?se(""+w.key):B.toString(36)}function ne(w){switch(w.status){case"fulfilled":return w.value;case"rejected":throw w.reason;default:switch(typeof w.status=="string"?w.then(Z,Z):(w.status="pending",w.then(function(B){w.status==="pending"&&(w.status="fulfilled",w.value=B)},function(B){w.status==="pending"&&(w.status="rejected",w.reason=B)})),w.status){case"fulfilled":return w.value;case"rejected":throw w.reason}}throw w}function k(w,B,G,Q,I){var ae=typeof w;(ae==="undefined"||ae==="boolean")&&(w=null);var de=!1;if(w===null)de=!0;else switch(ae){case"bigint":case"string":case"number":de=!0;break;case"object":switch(w.$$typeof){case a:case s:de=!0;break;case b:return de=w._init,k(de(w._payload),B,G,Q,I)}}if(de)return I=I(w),de=Q===""?"."+te(w,0):Q,P(I)?(G="",de!=null&&(G=de.replace(J,"$&/")+"/"),k(I,B,G,"",function(St){return St})):I!=null&&(oe(I)&&(I=ue(I,G+(I.key==null||w&&w.key===I.key?"":(""+I.key).replace(J,"$&/")+"/")+de)),B.push(I)),1;de=0;var Re=Q===""?".":Q+":";if(P(w))for(var pe=0;pe>>1,me=k[re];if(0>>1;ref(G,W))Qf(I,G)?(k[re]=I,k[Q]=W,re=Q):(k[re]=G,k[B]=W,re=B);else if(Qf(I,W))k[re]=I,k[Q]=W,re=Q;else break e}}return L}function f(k,L){var W=k.sortIndex-L.sortIndex;return W!==0?W:k.id-L.id}if(a.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var d=performance;a.unstable_now=function(){return d.now()}}else{var p=Date,m=p.now();a.unstable_now=function(){return p.now()-m}}var g=[],v=[],b=1,S=null,R=3,N=!1,E=!1,C=!1,A=!1,j=typeof setTimeout=="function"?setTimeout:null,M=typeof clearTimeout=="function"?clearTimeout:null,V=typeof setImmediate<"u"?setImmediate:null;function F(k){for(var L=i(v);L!==null;){if(L.callback===null)r(v);else if(L.startTime<=k)r(v),L.sortIndex=L.expirationTime,s(g,L);else break;L=i(v)}}function P(k){if(C=!1,F(k),!E)if(i(g)!==null)E=!0,Z||(Z=!0,se());else{var L=i(v);L!==null&&ne(P,L.startTime-k)}}var Z=!1,H=-1,$=5,ee=-1;function ue(){return A?!0:!(a.unstable_now()-ee<$)}function oe(){if(A=!1,Z){var k=a.unstable_now();ee=k;var L=!0;try{e:{E=!1,C&&(C=!1,M(H),H=-1),N=!0;var W=R;try{t:{for(F(k),S=i(g);S!==null&&!(S.expirationTime>k&&ue());){var re=S.callback;if(typeof re=="function"){S.callback=null,R=S.priorityLevel;var me=re(S.expirationTime<=k);if(k=a.unstable_now(),typeof me=="function"){S.callback=me,F(k),L=!0;break t}S===i(g)&&r(g),F(k)}else r(g);S=i(g)}if(S!==null)L=!0;else{var w=i(v);w!==null&&ne(P,w.startTime-k),L=!1}}break e}finally{S=null,R=W,N=!1}L=void 0}}finally{L?se():Z=!1}}}var se;if(typeof V=="function")se=function(){V(oe)};else if(typeof MessageChannel<"u"){var J=new MessageChannel,te=J.port2;J.port1.onmessage=oe,se=function(){te.postMessage(null)}}else se=function(){j(oe,0)};function ne(k,L){H=j(function(){k(a.unstable_now())},L)}a.unstable_IdlePriority=5,a.unstable_ImmediatePriority=1,a.unstable_LowPriority=4,a.unstable_NormalPriority=3,a.unstable_Profiling=null,a.unstable_UserBlockingPriority=2,a.unstable_cancelCallback=function(k){k.callback=null},a.unstable_forceFrameRate=function(k){0>k||125re?(k.sortIndex=W,s(v,k),i(g)===null&&k===i(v)&&(C?(M(H),H=-1):C=!0,ne(P,W-re))):(k.sortIndex=me,s(g,k),E||N||(E=!0,Z||(Z=!0,se()))),k},a.unstable_shouldYield=ue,a.unstable_wrapCallback=function(k){var L=R;return function(){var W=R;R=L;try{return k.apply(this,arguments)}finally{R=W}}}})(Hc)),Hc}var ap;function Yv(){return ap||(ap=1,Uc.exports=Vv()),Uc.exports}var Vc={exports:{}},ot={};var lp;function Gv(){if(lp)return ot;lp=1;var a=xo();function s(g){var v="https://react.dev/errors/"+g;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(a)}catch(s){console.error(s)}}return a(),Vc.exports=Gv(),Vc.exports}var ip;function Xv(){if(ip)return ms;ip=1;var a=Yv(),s=xo(),i=Qv();function r(e){var t="https://react.dev/errors/"+e;if(1me||(e.current=re[me],re[me]=null,me--)}function G(e,t){me++,re[me]=e.current,e.current=t}var Q=w(null),I=w(null),ae=w(null),de=w(null);function Re(e,t){switch(G(ae,t),G(I,e),G(Q,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Sm(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Sm(t),e=Am(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}B(Q),G(Q,e)}function pe(){B(Q),B(I),B(ae)}function St(e){e.memoizedState!==null&&G(de,e);var t=Q.current,n=Am(t,e.type);t!==n&&(G(I,e),G(Q,n))}function It(e){I.current===e&&(B(Q),B(I)),de.current===e&&(B(de),cs._currentValue=W)}var Gt,ua;function Qt(e){if(Gt===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);Gt=t&&t[1]||"",ua=-1{for(const d of f)if(d.type==="childList")for(const p of d.addedNodes)p.tagName==="LINK"&&p.rel==="modulepreload"&&r(p)}).observe(document,{childList:!0,subtree:!0});function i(f){const d={};return f.integrity&&(d.integrity=f.integrity),f.referrerPolicy&&(d.referrerPolicy=f.referrerPolicy),f.crossOrigin==="use-credentials"?d.credentials="include":f.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function r(f){if(f.ep)return;f.ep=!0;const d=i(f);fetch(f.href,d)}})();function Lv(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}var zc={exports:{}},hs={};var Im;function Uv(){if(Im)return hs;Im=1;var a=Symbol.for("react.transitional.element"),s=Symbol.for("react.fragment");function i(r,f,d){var p=null;if(d!==void 0&&(p=""+d),f.key!==void 0&&(p=""+f.key),"key"in f){d={};for(var m in f)m!=="key"&&(d[m]=f[m])}else d=f;return f=d.ref,{$$typeof:a,type:r,key:p,ref:f!==void 0?f:null,props:d}}return hs.Fragment=s,hs.jsx=i,hs.jsxs=i,hs}var Pm;function Hv(){return Pm||(Pm=1,zc.exports=Uv()),zc.exports}var c=Hv(),Bc={exports:{}},he={};var ep;function Vv(){if(ep)return he;ep=1;var a=Symbol.for("react.transitional.element"),s=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),d=Symbol.for("react.consumer"),p=Symbol.for("react.context"),m=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),v=Symbol.for("react.memo"),b=Symbol.for("react.lazy"),A=Symbol.for("react.activity"),M=Symbol.iterator;function N(E){return E===null||typeof E!="object"?null:(E=M&&E[M]||E["@@iterator"],typeof E=="function"?E:null)}var T={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,S={};function j(E,B,G){this.props=E,this.context=B,this.refs=S,this.updater=G||T}j.prototype.isReactComponent={},j.prototype.setState=function(E,B){if(typeof E!="object"&&typeof E!="function"&&E!=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,E,B,"setState")},j.prototype.forceUpdate=function(E){this.updater.enqueueForceUpdate(this,E,"forceUpdate")};function R(){}R.prototype=j.prototype;function V(E,B,G){this.props=E,this.context=B,this.refs=S,this.updater=G||T}var F=V.prototype=new R;F.constructor=V,C(F,j.prototype),F.isPureReactComponent=!0;var I=Array.isArray;function Z(){}var H={H:null,A:null,T:null,S:null},$=Object.prototype.hasOwnProperty;function ee(E,B,G){var Q=G.ref;return{$$typeof:a,type:E,key:B,ref:Q!==void 0?Q:null,props:G}}function ue(E,B){return ee(E.type,B,E.props)}function oe(E){return typeof E=="object"&&E!==null&&E.$$typeof===a}function se(E){var B={"=":"=0",":":"=2"};return"$"+E.replace(/[=:]/g,function(G){return B[G]})}var J=/\/+/g;function te(E,B){return typeof E=="object"&&E!==null&&E.key!=null?se(""+E.key):B.toString(36)}function ne(E){switch(E.status){case"fulfilled":return E.value;case"rejected":throw E.reason;default:switch(typeof E.status=="string"?E.then(Z,Z):(E.status="pending",E.then(function(B){E.status==="pending"&&(E.status="fulfilled",E.value=B)},function(B){E.status==="pending"&&(E.status="rejected",E.reason=B)})),E.status){case"fulfilled":return E.value;case"rejected":throw E.reason}}throw E}function k(E,B,G,Q,P){var ae=typeof E;(ae==="undefined"||ae==="boolean")&&(E=null);var de=!1;if(E===null)de=!0;else switch(ae){case"bigint":case"string":case"number":de=!0;break;case"object":switch(E.$$typeof){case a:case s:de=!0;break;case b:return de=E._init,k(de(E._payload),B,G,Q,P)}}if(de)return P=P(E),de=Q===""?"."+te(E,0):Q,I(P)?(G="",de!=null&&(G=de.replace(J,"$&/")+"/"),k(P,B,G,"",function(St){return St})):P!=null&&(oe(P)&&(P=ue(P,G+(P.key==null||E&&E.key===P.key?"":(""+P.key).replace(J,"$&/")+"/")+de)),B.push(P)),1;de=0;var Re=Q===""?".":Q+":";if(I(E))for(var pe=0;pe>>1,me=k[re];if(0>>1;ref(G,W))Qf(P,G)?(k[re]=P,k[Q]=W,re=Q):(k[re]=G,k[B]=W,re=B);else if(Qf(P,W))k[re]=P,k[Q]=W,re=Q;else break e}}return L}function f(k,L){var W=k.sortIndex-L.sortIndex;return W!==0?W:k.id-L.id}if(a.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var d=performance;a.unstable_now=function(){return d.now()}}else{var p=Date,m=p.now();a.unstable_now=function(){return p.now()-m}}var g=[],v=[],b=1,A=null,M=3,N=!1,T=!1,C=!1,S=!1,j=typeof setTimeout=="function"?setTimeout:null,R=typeof clearTimeout=="function"?clearTimeout:null,V=typeof setImmediate<"u"?setImmediate:null;function F(k){for(var L=i(v);L!==null;){if(L.callback===null)r(v);else if(L.startTime<=k)r(v),L.sortIndex=L.expirationTime,s(g,L);else break;L=i(v)}}function I(k){if(C=!1,F(k),!T)if(i(g)!==null)T=!0,Z||(Z=!0,se());else{var L=i(v);L!==null&&ne(I,L.startTime-k)}}var Z=!1,H=-1,$=5,ee=-1;function ue(){return S?!0:!(a.unstable_now()-ee<$)}function oe(){if(S=!1,Z){var k=a.unstable_now();ee=k;var L=!0;try{e:{T=!1,C&&(C=!1,R(H),H=-1),N=!0;var W=M;try{t:{for(F(k),A=i(g);A!==null&&!(A.expirationTime>k&&ue());){var re=A.callback;if(typeof re=="function"){A.callback=null,M=A.priorityLevel;var me=re(A.expirationTime<=k);if(k=a.unstable_now(),typeof me=="function"){A.callback=me,F(k),L=!0;break t}A===i(g)&&r(g),F(k)}else r(g);A=i(g)}if(A!==null)L=!0;else{var E=i(v);E!==null&&ne(I,E.startTime-k),L=!1}}break e}finally{A=null,M=W,N=!1}L=void 0}}finally{L?se():Z=!1}}}var se;if(typeof V=="function")se=function(){V(oe)};else if(typeof MessageChannel<"u"){var J=new MessageChannel,te=J.port2;J.port1.onmessage=oe,se=function(){te.postMessage(null)}}else se=function(){j(oe,0)};function ne(k,L){H=j(function(){k(a.unstable_now())},L)}a.unstable_IdlePriority=5,a.unstable_ImmediatePriority=1,a.unstable_LowPriority=4,a.unstable_NormalPriority=3,a.unstable_Profiling=null,a.unstable_UserBlockingPriority=2,a.unstable_cancelCallback=function(k){k.callback=null},a.unstable_forceFrameRate=function(k){0>k||125re?(k.sortIndex=W,s(v,k),i(g)===null&&k===i(v)&&(C?(R(H),H=-1):C=!0,ne(I,W-re))):(k.sortIndex=me,s(g,k),T||N||(T=!0,Z||(Z=!0,se()))),k},a.unstable_shouldYield=ue,a.unstable_wrapCallback=function(k){var L=M;return function(){var W=M;M=L;try{return k.apply(this,arguments)}finally{M=W}}}})(Hc)),Hc}var ap;function Gv(){return ap||(ap=1,Uc.exports=Yv()),Uc.exports}var Vc={exports:{}},ot={};var lp;function Qv(){if(lp)return ot;lp=1;var a=xo();function s(g){var v="https://react.dev/errors/"+g;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(a)}catch(s){console.error(s)}}return a(),Vc.exports=Qv(),Vc.exports}var ip;function Kv(){if(ip)return ms;ip=1;var a=Gv(),s=xo(),i=Xv();function r(e){var t="https://react.dev/errors/"+e;if(1me||(e.current=re[me],re[me]=null,me--)}function G(e,t){me++,re[me]=e.current,e.current=t}var Q=E(null),P=E(null),ae=E(null),de=E(null);function Re(e,t){switch(G(ae,t),G(P,e),G(Q,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Sm(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Sm(t),e=Am(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}B(Q),G(Q,e)}function pe(){B(Q),B(P),B(ae)}function St(e){e.memoizedState!==null&&G(de,e);var t=Q.current,n=Am(t,e.type);t!==n&&(G(P,e),G(Q,n))}function It(e){P.current===e&&(B(Q),B(P)),de.current===e&&(B(de),cs._currentValue=W)}var Gt,ua;function Qt(e){if(Gt===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);Gt=t&&t[1]||"",ua=-1)":-1u||q[l]!==D[u]){var Y=` `+q[l].replace(" at new "," at ");return e.displayName&&Y.includes("")&&(Y=Y.replace("",e.displayName)),Y}while(1<=l&&0<=u);break}}}finally{Pt=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?Qt(n):""}function ca(e,t){switch(e.tag){case 26:case 27:case 5:return Qt(e.type);case 16:return Qt("Lazy");case 13:return e.child!==t&&t!==null?Qt("Suspense Fallback"):Qt("Suspense");case 19:return Qt("SuspenseList");case 0:case 15:return un(e.type,!1);case 11:return un(e.type.render,!1);case 1:return un(e.type,!0);case 31:return Qt("Activity");default:return""}}function Ne(e){try{var t="",n=null;do t+=ca(e,n),n=e,e=e.return;while(e);return t}catch(l){return` Error generating stack: `+l.message+` -`+l.stack}}var nt=Object.prototype.hasOwnProperty,ct=a.unstable_scheduleCallback,De=a.unstable_cancelCallback,Ke=a.unstable_shouldYield,ze=a.unstable_requestPaint,ft=a.unstable_now,yg=a.unstable_getCurrentPriorityLevel,Io=a.unstable_ImmediatePriority,Po=a.unstable_UserBlockingPriority,Os=a.unstable_NormalPriority,vg=a.unstable_LowPriority,ef=a.unstable_IdlePriority,xg=a.log,bg=a.unstable_setDisableYieldValue,Sl=null,At=null;function Dn(e){if(typeof xg=="function"&&bg(e),At&&typeof At.setStrictMode=="function")try{At.setStrictMode(Sl,e)}catch{}}var jt=Math.clz32?Math.clz32:jg,Sg=Math.log,Ag=Math.LN2;function jg(e){return e>>>=0,e===0?32:31-(Sg(e)/Ag|0)|0}var Ds=256,ks=262144,zs=4194304;function oa(e){var t=e&42;if(t!==0)return t;switch(e&-e){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 e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Bs(e,t,n){var l=e.pendingLanes;if(l===0)return 0;var u=0,o=e.suspendedLanes,h=e.pingedLanes;e=e.warmLanes;var x=l&134217727;return x!==0?(l=x&~o,l!==0?u=oa(l):(h&=x,h!==0?u=oa(h):n||(n=x&~e,n!==0&&(u=oa(n))))):(x=l&~o,x!==0?u=oa(x):h!==0?u=oa(h):n||(n=l&~e,n!==0&&(u=oa(n)))),u===0?0:t!==0&&t!==u&&(t&o)===0&&(o=u&-u,n=t&-t,o>=n||o===32&&(n&4194048)!==0)?t:u}function Al(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Ng(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+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 t+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 tf(){var e=zs;return zs<<=1,(zs&62914560)===0&&(zs=4194304),e}function Nr(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function jl(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function qg(e,t,n,l,u,o){var h=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var x=e.entanglements,q=e.expirationTimes,D=e.hiddenUpdates;for(n=h&~n;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var Mg=/[\n"\\]/g;function Ot(e){return e.replace(Mg,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Rr(e,t,n,l,u,o,h,x){e.name="",h!=null&&typeof h!="function"&&typeof h!="symbol"&&typeof h!="boolean"?e.type=h:e.removeAttribute("type"),t!=null?h==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+_t(t)):e.value!==""+_t(t)&&(e.value=""+_t(t)):h!=="submit"&&h!=="reset"||e.removeAttribute("value"),t!=null?Mr(e,h,_t(t)):n!=null?Mr(e,h,_t(n)):l!=null&&e.removeAttribute("value"),u==null&&o!=null&&(e.defaultChecked=!!o),u!=null&&(e.checked=u&&typeof u!="function"&&typeof u!="symbol"),x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"?e.name=""+_t(x):e.removeAttribute("name")}function pf(e,t,n,l,u,o,h,x){if(o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"&&(e.type=o),t!=null||n!=null){if(!(o!=="submit"&&o!=="reset"||t!=null)){Tr(e);return}n=n!=null?""+_t(n):"",t=t!=null?""+_t(t):n,x||t===e.value||(e.value=t),e.defaultValue=t}l=l??u,l=typeof l!="function"&&typeof l!="symbol"&&!!l,e.checked=x?e.checked:!!l,e.defaultChecked=!!l,h!=null&&typeof h!="function"&&typeof h!="symbol"&&typeof h!="boolean"&&(e.name=h),Tr(e)}function Mr(e,t,n){t==="number"&&Hs(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function za(e,t,n,l){if(e=e.options,t){t={};for(var u=0;u"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),zr=!1;if(fn)try{var wl={};Object.defineProperty(wl,"passive",{get:function(){zr=!0}}),window.addEventListener("test",wl,wl),window.removeEventListener("test",wl,wl)}catch{zr=!1}var zn=null,Br=null,Ys=null;function Af(){if(Ys)return Ys;var e,t=Br,n=t.length,l,u="value"in zn?zn.value:zn.textContent,o=u.length;for(e=0;e=Rl),Cf=" ",Tf=!1;function Rf(e,t){switch(e){case"keyup":return sy.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Mf(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ha=!1;function ry(e,t){switch(e){case"compositionend":return Mf(t);case"keypress":return t.which!==32?null:(Tf=!0,Cf);case"textInput":return e=t.data,e===Cf&&Tf?null:e;default:return null}}function uy(e,t){if(Ha)return e==="compositionend"||!Yr&&Rf(e,t)?(e=Af(),Ys=Br=zn=null,Ha=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=l}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Uf(n)}}function Vf(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Vf(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Yf(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Hs(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Hs(e.document)}return t}function Xr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var gy=fn&&"documentMode"in document&&11>=document.documentMode,Va=null,Kr=null,Dl=null,Zr=!1;function Gf(e,t,n){var l=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Zr||Va==null||Va!==Hs(l)||(l=Va,"selectionStart"in l&&Xr(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),Dl&&Ol(Dl,l)||(Dl=l,l=ki(Kr,"onSelect"),0>=h,u-=h,en=1<<32-jt(t)+u|n<ye?(Se=ie,ie=null):Se=ie.sibling;var Ee=z(_,ie,O[ye],X);if(Ee===null){ie===null&&(ie=Se);break}e&&ie&&Ee.alternate===null&&t(_,ie),T=o(Ee,T,ye),qe===null?ce=Ee:qe.sibling=Ee,qe=Ee,ie=Se}if(ye===O.length)return n(_,ie),Ae&&hn(_,ye),ce;if(ie===null){for(;yeye?(Se=ie,ie=null):Se=ie.sibling;var la=z(_,ie,Ee.value,X);if(la===null){ie===null&&(ie=Se);break}e&&ie&&la.alternate===null&&t(_,ie),T=o(la,T,ye),qe===null?ce=la:qe.sibling=la,qe=la,ie=Se}if(Ee.done)return n(_,ie),Ae&&hn(_,ye),ce;if(ie===null){for(;!Ee.done;ye++,Ee=O.next())Ee=K(_,Ee.value,X),Ee!==null&&(T=o(Ee,T,ye),qe===null?ce=Ee:qe.sibling=Ee,qe=Ee);return Ae&&hn(_,ye),ce}for(ie=l(ie);!Ee.done;ye++,Ee=O.next())Ee=U(ie,_,ye,Ee.value,X),Ee!==null&&(e&&Ee.alternate!==null&&ie.delete(Ee.key===null?ye:Ee.key),T=o(Ee,T,ye),qe===null?ce=Ee:qe.sibling=Ee,qe=Ee);return e&&ie.forEach(function(zv){return t(_,zv)}),Ae&&hn(_,ye),ce}function Oe(_,T,O,X){if(typeof O=="object"&&O!==null&&O.type===C&&O.key===null&&(O=O.props.children),typeof O=="object"&&O!==null){switch(O.$$typeof){case N:e:{for(var ce=O.key;T!==null;){if(T.key===ce){if(ce=O.type,ce===C){if(T.tag===7){n(_,T.sibling),X=u(T,O.props.children),X.return=_,_=X;break e}}else if(T.elementType===ce||typeof ce=="object"&&ce!==null&&ce.$$typeof===$&&Sa(ce)===T.type){n(_,T.sibling),X=u(T,O.props),Hl(X,O),X.return=_,_=X;break e}n(_,T);break}else t(_,T);T=T.sibling}O.type===C?(X=ga(O.props.children,_.mode,X,O.key),X.return=_,_=X):(X=Is(O.type,O.key,O.props,null,_.mode,X),Hl(X,O),X.return=_,_=X)}return h(_);case E:e:{for(ce=O.key;T!==null;){if(T.key===ce)if(T.tag===4&&T.stateNode.containerInfo===O.containerInfo&&T.stateNode.implementation===O.implementation){n(_,T.sibling),X=u(T,O.children||[]),X.return=_,_=X;break e}else{n(_,T);break}else t(_,T);T=T.sibling}X=eu(O,_.mode,X),X.return=_,_=X}return h(_);case $:return O=Sa(O),Oe(_,T,O,X)}if(ne(O))return le(_,T,O,X);if(se(O)){if(ce=se(O),typeof ce!="function")throw Error(r(150));return O=ce.call(O),fe(_,T,O,X)}if(typeof O.then=="function")return Oe(_,T,si(O),X);if(O.$$typeof===V)return Oe(_,T,ti(_,O),X);ii(_,O)}return typeof O=="string"&&O!==""||typeof O=="number"||typeof O=="bigint"?(O=""+O,T!==null&&T.tag===6?(n(_,T.sibling),X=u(T,O),X.return=_,_=X):(n(_,T),X=Pr(O,_.mode,X),X.return=_,_=X),h(_)):n(_,T)}return function(_,T,O,X){try{Ul=0;var ce=Oe(_,T,O,X);return Ia=null,ce}catch(ie){if(ie===Wa||ie===ai)throw ie;var qe=qt(29,ie,null,_.mode);return qe.lanes=X,qe.return=_,qe}finally{}}}var ja=dd(!0),hd=dd(!1),Vn=!1;function du(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function hu(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Yn(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Gn(e,t,n){var l=e.updateQueue;if(l===null)return null;if(l=l.shared,(we&2)!==0){var u=l.pending;return u===null?t.next=t:(t.next=u.next,u.next=t),l.pending=t,t=Ws(e),Ff(e,null,n),t}return Fs(e,l,t,n),Ws(e)}function Vl(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194048)!==0)){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,af(e,n)}}function mu(e,t){var n=e.updateQueue,l=e.alternate;if(l!==null&&(l=l.updateQueue,n===l)){var u=null,o=null;if(n=n.firstBaseUpdate,n!==null){do{var h={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};o===null?u=o=h:o=o.next=h,n=n.next}while(n!==null);o===null?u=o=t:o=o.next=t}else u=o=t;n={baseState:l.baseState,firstBaseUpdate:u,lastBaseUpdate:o,shared:l.shared,callbacks:l.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var pu=!1;function Yl(){if(pu){var e=Fa;if(e!==null)throw e}}function Gl(e,t,n,l){pu=!1;var u=e.updateQueue;Vn=!1;var o=u.firstBaseUpdate,h=u.lastBaseUpdate,x=u.shared.pending;if(x!==null){u.shared.pending=null;var q=x,D=q.next;q.next=null,h===null?o=D:h.next=D,h=q;var Y=e.alternate;Y!==null&&(Y=Y.updateQueue,x=Y.lastBaseUpdate,x!==h&&(x===null?Y.firstBaseUpdate=D:x.next=D,Y.lastBaseUpdate=q))}if(o!==null){var K=u.baseState;h=0,Y=D=q=null,x=o;do{var z=x.lane&-536870913,U=z!==x.lane;if(U?(be&z)===z:(l&z)===z){z!==0&&z===Ja&&(pu=!0),Y!==null&&(Y=Y.next={lane:0,tag:x.tag,payload:x.payload,callback:null,next:null});e:{var le=e,fe=x;z=t;var Oe=n;switch(fe.tag){case 1:if(le=fe.payload,typeof le=="function"){K=le.call(Oe,K,z);break e}K=le;break e;case 3:le.flags=le.flags&-65537|128;case 0:if(le=fe.payload,z=typeof le=="function"?le.call(Oe,K,z):le,z==null)break e;K=S({},K,z);break e;case 2:Vn=!0}}z=x.callback,z!==null&&(e.flags|=64,U&&(e.flags|=8192),U=u.callbacks,U===null?u.callbacks=[z]:U.push(z))}else U={lane:z,tag:x.tag,payload:x.payload,callback:x.callback,next:null},Y===null?(D=Y=U,q=K):Y=Y.next=U,h|=z;if(x=x.next,x===null){if(x=u.shared.pending,x===null)break;U=x,x=U.next,U.next=null,u.lastBaseUpdate=U,u.shared.pending=null}}while(!0);Y===null&&(q=K),u.baseState=q,u.firstBaseUpdate=D,u.lastBaseUpdate=Y,o===null&&(u.shared.lanes=0),$n|=h,e.lanes=h,e.memoizedState=K}}function md(e,t){if(typeof e!="function")throw Error(r(191,e));e.call(t)}function pd(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;eo?o:8;var h=k.T,x={};k.T=x,Du(e,!1,t,n);try{var q=u(),D=k.S;if(D!==null&&D(x,q),q!==null&&typeof q=="object"&&typeof q.then=="function"){var Y=qy(q,l);Kl(e,t,Y,Rt(e))}else Kl(e,t,l,Rt(e))}catch(K){Kl(e,t,{then:function(){},status:"rejected",reason:K},Rt())}finally{L.p=o,h!==null&&x.types!==null&&(h.types=x.types),k.T=h}}function My(){}function _u(e,t,n,l){if(e.tag!==5)throw Error(r(476));var u=Zd(e).queue;Kd(e,u,t,W,n===null?My:function(){return $d(e),n(l)})}function Zd(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:W,baseState:W,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:yn,lastRenderedState:W},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:yn,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function $d(e){var t=Zd(e);t.next===null&&(t=e.alternate.memoizedState),Kl(e,t.next.queue,{},Rt())}function Ou(){return st(cs)}function Jd(){return Xe().memoizedState}function Fd(){return Xe().memoizedState}function _y(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=Rt();e=Yn(n);var l=Gn(t,e,n);l!==null&&(xt(l,t,n),Vl(l,t,n)),t={cache:uu()},e.payload=t;return}t=t.return}}function Oy(e,t,n){var l=Rt();n={lane:l,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},gi(e)?Id(t,n):(n=Wr(e,t,n,l),n!==null&&(xt(n,e,l),Pd(n,t,l)))}function Wd(e,t,n){var l=Rt();Kl(e,t,n,l)}function Kl(e,t,n,l){var u={lane:l,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(gi(e))Id(t,u);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var h=t.lastRenderedState,x=o(h,n);if(u.hasEagerState=!0,u.eagerState=x,Nt(x,h))return Fs(e,t,u,0),ke===null&&Js(),!1}catch{}finally{}if(n=Wr(e,t,u,l),n!==null)return xt(n,e,l),Pd(n,t,l),!0}return!1}function Du(e,t,n,l){if(l={lane:2,revertLane:dc(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},gi(e)){if(t)throw Error(r(479))}else t=Wr(e,n,l,2),t!==null&&xt(t,e,2)}function gi(e){var t=e.alternate;return e===ge||t!==null&&t===ge}function Id(e,t){el=ci=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Pd(e,t,n){if((n&4194048)!==0){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,af(e,n)}}var Zl={readContext:st,use:di,useCallback:Ye,useContext:Ye,useEffect:Ye,useImperativeHandle:Ye,useLayoutEffect:Ye,useInsertionEffect:Ye,useMemo:Ye,useReducer:Ye,useRef:Ye,useState:Ye,useDebugValue:Ye,useDeferredValue:Ye,useTransition:Ye,useSyncExternalStore:Ye,useId:Ye,useHostTransitionStatus:Ye,useFormState:Ye,useActionState:Ye,useOptimistic:Ye,useMemoCache:Ye,useCacheRefresh:Ye};Zl.useEffectEvent=Ye;var eh={readContext:st,use:di,useCallback:function(e,t){return dt().memoizedState=[e,t===void 0?null:t],e},useContext:st,useEffect:Bd,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,mi(4194308,4,Vd.bind(null,t,e),n)},useLayoutEffect:function(e,t){return mi(4194308,4,e,t)},useInsertionEffect:function(e,t){mi(4,2,e,t)},useMemo:function(e,t){var n=dt();t=t===void 0?null:t;var l=e();if(Na){Dn(!0);try{e()}finally{Dn(!1)}}return n.memoizedState=[l,t],l},useReducer:function(e,t,n){var l=dt();if(n!==void 0){var u=n(t);if(Na){Dn(!0);try{n(t)}finally{Dn(!1)}}}else u=t;return l.memoizedState=l.baseState=u,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:u},l.queue=e,e=e.dispatch=Oy.bind(null,ge,e),[l.memoizedState,e]},useRef:function(e){var t=dt();return e={current:e},t.memoizedState=e},useState:function(e){e=wu(e);var t=e.queue,n=Wd.bind(null,ge,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Ru,useDeferredValue:function(e,t){var n=dt();return Mu(n,e,t)},useTransition:function(){var e=wu(!1);return e=Kd.bind(null,ge,e.queue,!0,!1),dt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var l=ge,u=dt();if(Ae){if(n===void 0)throw Error(r(407));n=n()}else{if(n=t(),ke===null)throw Error(r(349));(be&127)!==0||Sd(l,t,n)}u.memoizedState=n;var o={value:n,getSnapshot:t};return u.queue=o,Bd(jd.bind(null,l,o,e),[e]),l.flags|=2048,nl(9,{destroy:void 0},Ad.bind(null,l,o,n,t),null),n},useId:function(){var e=dt(),t=ke.identifierPrefix;if(Ae){var n=tn,l=en;n=(l&~(1<<32-jt(l)-1)).toString(32)+n,t="_"+t+"R_"+n,n=oi++,0<\/script>",o=o.removeChild(o.firstChild);break;case"select":o=typeof l.is=="string"?h.createElement("select",{is:l.is}):h.createElement("select"),l.multiple?o.multiple=!0:l.size&&(o.size=l.size);break;default:o=typeof l.is=="string"?h.createElement(u,{is:l.is}):h.createElement(u)}}o[at]=t,o[ht]=l;e:for(h=t.child;h!==null;){if(h.tag===5||h.tag===6)o.appendChild(h.stateNode);else if(h.tag!==4&&h.tag!==27&&h.child!==null){h.child.return=h,h=h.child;continue}if(h===t)break e;for(;h.sibling===null;){if(h.return===null||h.return===t)break e;h=h.return}h.sibling.return=h.return,h=h.sibling}t.stateNode=o;e:switch(rt(o,u,l),u){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&xn(t)}}return Le(t),$u(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==l&&xn(t);else{if(typeof l!="string"&&t.stateNode===null)throw Error(r(166));if(e=ae.current,Za(t)){if(e=t.stateNode,n=t.memoizedProps,l=null,u=lt,u!==null)switch(u.tag){case 27:case 5:l=u.memoizedProps}e[at]=t,e=!!(e.nodeValue===n||l!==null&&l.suppressHydrationWarning===!0||xm(e.nodeValue,n)),e||Un(t,!0)}else e=zi(e).createTextNode(l),e[at]=t,t.stateNode=e}return Le(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(l=Za(t),n!==null){if(e===null){if(!l)throw Error(r(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(557));e[at]=t}else ya(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Le(t),e=!1}else n=lu(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(wt(t),t):(wt(t),null);if((t.flags&128)!==0)throw Error(r(558))}return Le(t),null;case 13:if(l=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(u=Za(t),l!==null&&l.dehydrated!==null){if(e===null){if(!u)throw Error(r(318));if(u=t.memoizedState,u=u!==null?u.dehydrated:null,!u)throw Error(r(317));u[at]=t}else ya(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Le(t),u=!1}else u=lu(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=u),u=!0;if(!u)return t.flags&256?(wt(t),t):(wt(t),null)}return wt(t),(t.flags&128)!==0?(t.lanes=n,t):(n=l!==null,e=e!==null&&e.memoizedState!==null,n&&(l=t.child,u=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(u=l.alternate.memoizedState.cachePool.pool),o=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(o=l.memoizedState.cachePool.pool),o!==u&&(l.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Si(t,t.updateQueue),Le(t),null);case 4:return pe(),e===null&&gc(t.stateNode.containerInfo),Le(t),null;case 10:return pn(t.type),Le(t),null;case 19:if(B(Qe),l=t.memoizedState,l===null)return Le(t),null;if(u=(t.flags&128)!==0,o=l.rendering,o===null)if(u)Jl(l,!1);else{if(Ge!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(o=ui(e),o!==null){for(t.flags|=128,Jl(l,!1),e=o.updateQueue,t.updateQueue=e,Si(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Wf(n,e),n=n.sibling;return G(Qe,Qe.current&1|2),Ae&&hn(t,l.treeForkCount),t.child}e=e.sibling}l.tail!==null&&ft()>Ei&&(t.flags|=128,u=!0,Jl(l,!1),t.lanes=4194304)}else{if(!u)if(e=ui(o),e!==null){if(t.flags|=128,u=!0,e=e.updateQueue,t.updateQueue=e,Si(t,e),Jl(l,!0),l.tail===null&&l.tailMode==="hidden"&&!o.alternate&&!Ae)return Le(t),null}else 2*ft()-l.renderingStartTime>Ei&&n!==536870912&&(t.flags|=128,u=!0,Jl(l,!1),t.lanes=4194304);l.isBackwards?(o.sibling=t.child,t.child=o):(e=l.last,e!==null?e.sibling=o:t.child=o,l.last=o)}return l.tail!==null?(e=l.tail,l.rendering=e,l.tail=e.sibling,l.renderingStartTime=ft(),e.sibling=null,n=Qe.current,G(Qe,u?n&1|2:n&1),Ae&&hn(t,l.treeForkCount),e):(Le(t),null);case 22:case 23:return wt(t),yu(),l=t.memoizedState!==null,e!==null?e.memoizedState!==null!==l&&(t.flags|=8192):l&&(t.flags|=8192),l?(n&536870912)!==0&&(t.flags&128)===0&&(Le(t),t.subtreeFlags&6&&(t.flags|=8192)):Le(t),n=t.updateQueue,n!==null&&Si(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),l=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),l!==n&&(t.flags|=2048),e!==null&&B(ba),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),pn(Ze),Le(t),null;case 25:return null;case 30:return null}throw Error(r(156,t.tag))}function Ly(e,t){switch(nu(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return pn(Ze),pe(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return It(t),null;case 31:if(t.memoizedState!==null){if(wt(t),t.alternate===null)throw Error(r(340));ya()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(wt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(r(340));ya()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return B(Qe),null;case 4:return pe(),null;case 10:return pn(t.type),null;case 22:case 23:return wt(t),yu(),e!==null&&B(ba),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return pn(Ze),null;case 25:return null;default:return null}}function Nh(e,t){switch(nu(t),t.tag){case 3:pn(Ze),pe();break;case 26:case 27:case 5:It(t);break;case 4:pe();break;case 31:t.memoizedState!==null&&wt(t);break;case 13:wt(t);break;case 19:B(Qe);break;case 10:pn(t.type);break;case 22:case 23:wt(t),yu(),e!==null&&B(ba);break;case 24:pn(Ze)}}function Fl(e,t){try{var n=t.updateQueue,l=n!==null?n.lastEffect:null;if(l!==null){var u=l.next;n=u;do{if((n.tag&e)===e){l=void 0;var o=n.create,h=n.inst;l=o(),h.destroy=l}n=n.next}while(n!==u)}}catch(x){Te(t,t.return,x)}}function Kn(e,t,n){try{var l=t.updateQueue,u=l!==null?l.lastEffect:null;if(u!==null){var o=u.next;l=o;do{if((l.tag&e)===e){var h=l.inst,x=h.destroy;if(x!==void 0){h.destroy=void 0,u=t;var q=n,D=x;try{D()}catch(Y){Te(u,q,Y)}}}l=l.next}while(l!==o)}}catch(Y){Te(t,t.return,Y)}}function qh(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{pd(t,n)}catch(l){Te(e,e.return,l)}}}function Eh(e,t,n){n.props=qa(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(l){Te(e,t,l)}}function Wl(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var l=e.stateNode;break;case 30:l=e.stateNode;break;default:l=e.stateNode}typeof n=="function"?e.refCleanup=n(l):n.current=l}}catch(u){Te(e,t,u)}}function nn(e,t){var n=e.ref,l=e.refCleanup;if(n!==null)if(typeof l=="function")try{l()}catch(u){Te(e,t,u)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(u){Te(e,t,u)}else n.current=null}function wh(e){var t=e.type,n=e.memoizedProps,l=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&l.focus();break e;case"img":n.src?l.src=n.src:n.srcSet&&(l.srcset=n.srcSet)}}catch(u){Te(e,e.return,u)}}function Ju(e,t,n){try{var l=e.stateNode;iv(l,e.type,n,t),l[ht]=t}catch(u){Te(e,e.return,u)}}function Ch(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Pn(e.type)||e.tag===4}function Fu(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Ch(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Pn(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Wu(e,t,n){var l=e.tag;if(l===5||l===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=on));else if(l!==4&&(l===27&&Pn(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Wu(e,t,n),e=e.sibling;e!==null;)Wu(e,t,n),e=e.sibling}function Ai(e,t,n){var l=e.tag;if(l===5||l===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(l!==4&&(l===27&&Pn(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Ai(e,t,n),e=e.sibling;e!==null;)Ai(e,t,n),e=e.sibling}function Th(e){var t=e.stateNode,n=e.memoizedProps;try{for(var l=e.type,u=t.attributes;u.length;)t.removeAttributeNode(u[0]);rt(t,l,n),t[at]=e,t[ht]=n}catch(o){Te(e,e.return,o)}}var bn=!1,Fe=!1,Iu=!1,Rh=typeof WeakSet=="function"?WeakSet:Set,tt=null;function Uy(e,t){if(e=e.containerInfo,xc=Gi,e=Yf(e),Xr(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var l=n.getSelection&&n.getSelection();if(l&&l.rangeCount!==0){n=l.anchorNode;var u=l.anchorOffset,o=l.focusNode;l=l.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var h=0,x=-1,q=-1,D=0,Y=0,K=e,z=null;t:for(;;){for(var U;K!==n||u!==0&&K.nodeType!==3||(x=h+u),K!==o||l!==0&&K.nodeType!==3||(q=h+l),K.nodeType===3&&(h+=K.nodeValue.length),(U=K.firstChild)!==null;)z=K,K=U;for(;;){if(K===e)break t;if(z===n&&++D===u&&(x=h),z===o&&++Y===l&&(q=h),(U=K.nextSibling)!==null)break;K=z,z=K.parentNode}K=U}n=x===-1||q===-1?null:{start:x,end:q}}else n=null}n=n||{start:0,end:0}}else n=null;for(bc={focusedElem:e,selectionRange:n},Gi=!1,tt=t;tt!==null;)if(t=tt,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,tt=e;else for(;tt!==null;){switch(t=tt,o=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n title"))),rt(o,l,n),o[at]=e,et(o),l=o;break e;case"link":var h=zm("link","href",u).get(l+(n.href||""));if(h){for(var x=0;xOe&&(h=Oe,Oe=fe,fe=h);var _=Hf(x,fe),T=Hf(x,Oe);if(_&&T&&(U.rangeCount!==1||U.anchorNode!==_.node||U.anchorOffset!==_.offset||U.focusNode!==T.node||U.focusOffset!==T.offset)){var O=K.createRange();O.setStart(_.node,_.offset),U.removeAllRanges(),fe>Oe?(U.addRange(O),U.extend(T.node,T.offset)):(O.setEnd(T.node,T.offset),U.addRange(O))}}}}for(K=[],U=x;U=U.parentNode;)U.nodeType===1&&K.push({element:U,left:U.scrollLeft,top:U.scrollTop});for(typeof x.focus=="function"&&x.focus(),x=0;xn?32:n,k.T=null,n=sc,sc=null;var o=Fn,h=qn;if(Pe=0,rl=Fn=null,qn=0,(we&6)!==0)throw Error(r(331));var x=we;if(we|=4,Vh(o.current),Lh(o,o.current,h,n),we=x,as(0,!1),At&&typeof At.onPostCommitFiberRoot=="function")try{At.onPostCommitFiberRoot(Sl,o)}catch{}return!0}finally{L.p=u,k.T=l,sm(e,t)}}function rm(e,t,n){t=kt(n,t),t=Lu(e.stateNode,t,2),e=Gn(e,t,2),e!==null&&(jl(e,2),an(e))}function Te(e,t,n){if(e.tag===3)rm(e,e,n);else for(;t!==null;){if(t.tag===3){rm(t,e,n);break}else if(t.tag===1){var l=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(Jn===null||!Jn.has(l))){e=kt(n,e),n=uh(2),l=Gn(t,n,2),l!==null&&(ch(n,l,t,e),jl(l,2),an(l));break}}t=t.return}}function cc(e,t,n){var l=e.pingCache;if(l===null){l=e.pingCache=new Yy;var u=new Set;l.set(t,u)}else u=l.get(t),u===void 0&&(u=new Set,l.set(t,u));u.has(n)||(tc=!0,u.add(n),e=Zy.bind(null,e,t,n),t.then(e,e))}function Zy(e,t,n){var l=e.pingCache;l!==null&&l.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,ke===e&&(be&n)===n&&(Ge===4||Ge===3&&(be&62914560)===be&&300>ft()-qi?(we&2)===0&&ul(e,0):nc|=n,il===be&&(il=0)),an(e)}function um(e,t){t===0&&(t=tf()),e=pa(e,t),e!==null&&(jl(e,t),an(e))}function $y(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),um(e,n)}function Jy(e,t){var n=0;switch(e.tag){case 31:case 13:var l=e.stateNode,u=e.memoizedState;u!==null&&(n=u.retryLane);break;case 19:l=e.stateNode;break;case 22:l=e.stateNode._retryCache;break;default:throw Error(r(314))}l!==null&&l.delete(t),um(e,n)}function Fy(e,t){return ct(e,t)}var _i=null,ol=null,oc=!1,Oi=!1,fc=!1,In=0;function an(e){e!==ol&&e.next===null&&(ol===null?_i=ol=e:ol=ol.next=e),Oi=!0,oc||(oc=!0,Iy())}function as(e,t){if(!fc&&Oi){fc=!0;do for(var n=!1,l=_i;l!==null;){if(e!==0){var u=l.pendingLanes;if(u===0)var o=0;else{var h=l.suspendedLanes,x=l.pingedLanes;o=(1<<31-jt(42|e)+1)-1,o&=u&~(h&~x),o=o&201326741?o&201326741|1:o?o|2:0}o!==0&&(n=!0,dm(l,o))}else o=be,o=Bs(l,l===ke?o:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(o&3)===0||Al(l,o)||(n=!0,dm(l,o));l=l.next}while(n);fc=!1}}function Wy(){cm()}function cm(){Oi=oc=!1;var e=0;In!==0&&uv()&&(e=In);for(var t=ft(),n=null,l=_i;l!==null;){var u=l.next,o=om(l,t);o===0?(l.next=null,n===null?_i=u:n.next=u,u===null&&(ol=n)):(n=l,(e!==0||(o&3)!==0)&&(Oi=!0)),l=u}Pe!==0&&Pe!==5||as(e),In!==0&&(In=0)}function om(e,t){for(var n=e.suspendedLanes,l=e.pingedLanes,u=e.expirationTimes,o=e.pendingLanes&-62914561;0x)break;var Y=q.transferSize,K=q.initiatorType;Y&&bm(K)&&(q=q.responseEnd,h+=Y*(q"u"?null:document;function _m(e,t,n){var l=fl;if(l&&typeof t=="string"&&t){var u=Ot(t);u='link[rel="'+e+'"][href="'+u+'"]',typeof n=="string"&&(u+='[crossorigin="'+n+'"]'),Mm.has(u)||(Mm.add(u),e={rel:e,crossOrigin:n,href:t},l.querySelector(u)===null&&(t=l.createElement("link"),rt(t,"link",e),et(t),l.head.appendChild(t)))}}function yv(e){En.D(e),_m("dns-prefetch",e,null)}function vv(e,t){En.C(e,t),_m("preconnect",e,t)}function xv(e,t,n){En.L(e,t,n);var l=fl;if(l&&e&&t){var u='link[rel="preload"][as="'+Ot(t)+'"]';t==="image"&&n&&n.imageSrcSet?(u+='[imagesrcset="'+Ot(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(u+='[imagesizes="'+Ot(n.imageSizes)+'"]')):u+='[href="'+Ot(e)+'"]';var o=u;switch(t){case"style":o=dl(e);break;case"script":o=hl(e)}Vt.has(o)||(e=S({rel:"preload",href:t==="image"&&n&&n.imageSrcSet?void 0:e,as:t},n),Vt.set(o,e),l.querySelector(u)!==null||t==="style"&&l.querySelector(rs(o))||t==="script"&&l.querySelector(us(o))||(t=l.createElement("link"),rt(t,"link",e),et(t),l.head.appendChild(t)))}}function bv(e,t){En.m(e,t);var n=fl;if(n&&e){var l=t&&typeof t.as=="string"?t.as:"script",u='link[rel="modulepreload"][as="'+Ot(l)+'"][href="'+Ot(e)+'"]',o=u;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":o=hl(e)}if(!Vt.has(o)&&(e=S({rel:"modulepreload",href:e},t),Vt.set(o,e),n.querySelector(u)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(us(o)))return}l=n.createElement("link"),rt(l,"link",e),et(l),n.head.appendChild(l)}}}function Sv(e,t,n){En.S(e,t,n);var l=fl;if(l&&e){var u=Da(l).hoistableStyles,o=dl(e);t=t||"default";var h=u.get(o);if(!h){var x={loading:0,preload:null};if(h=l.querySelector(rs(o)))x.loading=5;else{e=S({rel:"stylesheet",href:e,"data-precedence":t},n),(n=Vt.get(o))&&wc(e,n);var q=h=l.createElement("link");et(q),rt(q,"link",e),q._p=new Promise(function(D,Y){q.onload=D,q.onerror=Y}),q.addEventListener("load",function(){x.loading|=1}),q.addEventListener("error",function(){x.loading|=2}),x.loading|=4,Li(h,t,l)}h={type:"stylesheet",instance:h,count:1,state:x},u.set(o,h)}}}function Av(e,t){En.X(e,t);var n=fl;if(n&&e){var l=Da(n).hoistableScripts,u=hl(e),o=l.get(u);o||(o=n.querySelector(us(u)),o||(e=S({src:e,async:!0},t),(t=Vt.get(u))&&Cc(e,t),o=n.createElement("script"),et(o),rt(o,"link",e),n.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(u,o))}}function jv(e,t){En.M(e,t);var n=fl;if(n&&e){var l=Da(n).hoistableScripts,u=hl(e),o=l.get(u);o||(o=n.querySelector(us(u)),o||(e=S({src:e,async:!0,type:"module"},t),(t=Vt.get(u))&&Cc(e,t),o=n.createElement("script"),et(o),rt(o,"link",e),n.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(u,o))}}function Om(e,t,n,l){var u=(u=ae.current)?Bi(u):null;if(!u)throw Error(r(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(t=dl(n.href),n=Da(u).hoistableStyles,l=n.get(t),l||(l={type:"style",instance:null,count:0,state:null},n.set(t,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=dl(n.href);var o=Da(u).hoistableStyles,h=o.get(e);if(h||(u=u.ownerDocument||u,h={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},o.set(e,h),(o=u.querySelector(rs(e)))&&!o._p&&(h.instance=o,h.state.loading=5),Vt.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},Vt.set(e,n),o||Nv(u,e,n,h.state))),t&&l===null)throw Error(r(528,""));return h}if(t&&l!==null)throw Error(r(529,""));return null;case"script":return t=n.async,n=n.src,typeof n=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=hl(n),n=Da(u).hoistableScripts,l=n.get(t),l||(l={type:"script",instance:null,count:0,state:null},n.set(t,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,e))}}function dl(e){return'href="'+Ot(e)+'"'}function rs(e){return'link[rel="stylesheet"]['+e+"]"}function Dm(e){return S({},e,{"data-precedence":e.precedence,precedence:null})}function Nv(e,t,n,l){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?l.loading=1:(t=e.createElement("link"),l.preload=t,t.addEventListener("load",function(){return l.loading|=1}),t.addEventListener("error",function(){return l.loading|=2}),rt(t,"link",n),et(t),e.head.appendChild(t))}function hl(e){return'[src="'+Ot(e)+'"]'}function us(e){return"script[async]"+e}function km(e,t,n){if(t.count++,t.instance===null)switch(t.type){case"style":var l=e.querySelector('style[data-href~="'+Ot(n.href)+'"]');if(l)return t.instance=l,et(l),l;var u=S({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return l=(e.ownerDocument||e).createElement("style"),et(l),rt(l,"style",u),Li(l,n.precedence,e),t.instance=l;case"stylesheet":u=dl(n.href);var o=e.querySelector(rs(u));if(o)return t.state.loading|=4,t.instance=o,et(o),o;l=Dm(n),(u=Vt.get(u))&&wc(l,u),o=(e.ownerDocument||e).createElement("link"),et(o);var h=o;return h._p=new Promise(function(x,q){h.onload=x,h.onerror=q}),rt(o,"link",l),t.state.loading|=4,Li(o,n.precedence,e),t.instance=o;case"script":return o=hl(n.src),(u=e.querySelector(us(o)))?(t.instance=u,et(u),u):(l=n,(u=Vt.get(o))&&(l=S({},n),Cc(l,u)),e=e.ownerDocument||e,u=e.createElement("script"),et(u),rt(u,"link",l),e.head.appendChild(u),t.instance=u);case"void":return null;default:throw Error(r(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(l=t.instance,t.state.loading|=4,Li(l,n.precedence,e));return t.instance}function Li(e,t,n){for(var l=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),u=l.length?l[l.length-1]:null,o=u,h=0;h title"):null)}function qv(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Lm(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function Ev(e,t,n,l){if(n.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var u=dl(l.href),o=t.querySelector(rs(u));if(o){t=o._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Hi.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=o,et(o);return}o=t.ownerDocument||t,l=Dm(l),(u=Vt.get(u))&&wc(l,u),o=o.createElement("link"),et(o);var h=o;h._p=new Promise(function(x,q){h.onload=x,h.onerror=q}),rt(o,"link",l),n.instance=o}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&(n.state.loading&3)===0&&(e.count++,n=Hi.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}var Tc=0;function wv(e,t){return e.stylesheets&&e.count===0&&Yi(e,e.stylesheets),0Tc?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(l),clearTimeout(u)}}:null}function Hi(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Yi(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Vi=null;function Yi(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Vi=new Map,t.forEach(Cv,e),Vi=null,Hi.call(e))}function Cv(e,t){if(!(t.state.loading&4)){var n=Vi.get(e);if(n)var l=n.get(null);else{n=new Map,Vi.set(e,n);for(var u=e.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;o"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(a)}catch(s){console.error(s)}}return a(),Lc.exports=Xv(),Lc.exports}var Zv=Kv();var up="popstate";function $v(a={}){function s(r,f){let{pathname:d,search:p,hash:m}=r.location;return lo("",{pathname:d,search:p,hash:m},f.state&&f.state.usr||null,f.state&&f.state.key||"default")}function i(r,f){return typeof f=="string"?f:As(f)}return Fv(s,i,null,a)}function Ve(a,s){if(a===!1||a===null||typeof a>"u")throw new Error(s)}function Wt(a,s){if(!a){typeof console<"u"&&console.warn(s);try{throw new Error(s)}catch{}}}function Jv(){return Math.random().toString(36).substring(2,10)}function cp(a,s){return{usr:a.state,key:a.key,idx:s}}function lo(a,s,i=null,r){return{pathname:typeof a=="string"?a:a.pathname,search:"",hash:"",...typeof s=="string"?vl(s):s,state:i,key:s&&s.key||r||Jv()}}function As({pathname:a="/",search:s="",hash:i=""}){return s&&s!=="?"&&(a+=s.charAt(0)==="?"?s:"?"+s),i&&i!=="#"&&(a+=i.charAt(0)==="#"?i:"#"+i),a}function vl(a){let s={};if(a){let i=a.indexOf("#");i>=0&&(s.hash=a.substring(i),a=a.substring(0,i));let r=a.indexOf("?");r>=0&&(s.search=a.substring(r),a=a.substring(0,r)),a&&(s.pathname=a)}return s}function Fv(a,s,i,r={}){let{window:f=document.defaultView,v5Compat:d=!1}=r,p=f.history,m="POP",g=null,v=b();v==null&&(v=0,p.replaceState({...p.state,idx:v},""));function b(){return(p.state||{idx:null}).idx}function S(){m="POP";let A=b(),j=A==null?null:A-v;v=A,g&&g({action:m,location:C.location,delta:j})}function R(A,j){m="PUSH";let M=lo(C.location,A,j);v=b()+1;let V=cp(M,v),F=C.createHref(M);try{p.pushState(V,"",F)}catch(P){if(P instanceof DOMException&&P.name==="DataCloneError")throw P;f.location.assign(F)}d&&g&&g({action:m,location:C.location,delta:1})}function N(A,j){m="REPLACE";let M=lo(C.location,A,j);v=b();let V=cp(M,v),F=C.createHref(M);p.replaceState(V,"",F),d&&g&&g({action:m,location:C.location,delta:0})}function E(A){return Wv(A)}let C={get action(){return m},get location(){return a(f,p)},listen(A){if(g)throw new Error("A history only accepts one active listener");return f.addEventListener(up,S),g=A,()=>{f.removeEventListener(up,S),g=null}},createHref(A){return s(f,A)},createURL:E,encodeLocation(A){let j=E(A);return{pathname:j.pathname,search:j.search,hash:j.hash}},push:R,replace:N,go(A){return p.go(A)}};return C}function Wv(a,s=!1){let i="http://localhost";typeof window<"u"&&(i=window.location.origin!=="null"?window.location.origin:window.location.href),Ve(i,"No window.location.(origin|href) available to create URL");let r=typeof a=="string"?a:As(a);return r=r.replace(/ $/,"%20"),!s&&r.startsWith("//")&&(r=i+r),new URL(r,i)}function Pp(a,s,i="/"){return Iv(a,s,i,!1)}function Iv(a,s,i,r){let f=typeof s=="string"?vl(s):s,d=Mn(f.pathname||"/",i);if(d==null)return null;let p=e0(a);Pv(p);let m=null;for(let g=0;m==null&&g{let b={relativePath:v===void 0?p.path||"":v,caseSensitive:p.caseSensitive===!0,childrenIndex:m,route:p};if(b.relativePath.startsWith("/")){if(!b.relativePath.startsWith(r)&&g)return;Ve(b.relativePath.startsWith(r),`Absolute route path "${b.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),b.relativePath=b.relativePath.slice(r.length)}let S=Tn([r,b.relativePath]),R=i.concat(b);p.children&&p.children.length>0&&(Ve(p.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${S}".`),e0(p.children,s,R,S,g)),!(p.path==null&&!p.index)&&s.push({path:S,score:ix(S,p.index),routesMeta:R})};return a.forEach((p,m)=>{if(p.path===""||!p.path?.includes("?"))d(p,m);else for(let g of t0(p.path))d(p,m,!0,g)}),s}function t0(a){let s=a.split("/");if(s.length===0)return[];let[i,...r]=s,f=i.endsWith("?"),d=i.replace(/\?$/,"");if(r.length===0)return f?[d,""]:[d];let p=t0(r.join("/")),m=[];return m.push(...p.map(g=>g===""?d:[d,g].join("/"))),f&&m.push(...p),m.map(g=>a.startsWith("/")&&g===""?"/":g)}function Pv(a){a.sort((s,i)=>s.score!==i.score?i.score-s.score:rx(s.routesMeta.map(r=>r.childrenIndex),i.routesMeta.map(r=>r.childrenIndex)))}var ex=/^:[\w-]+$/,tx=3,nx=2,ax=1,lx=10,sx=-2,op=a=>a==="*";function ix(a,s){let i=a.split("/"),r=i.length;return i.some(op)&&(r+=sx),s&&(r+=nx),i.filter(f=>!op(f)).reduce((f,d)=>f+(ex.test(d)?tx:d===""?ax:lx),r)}function rx(a,s){return a.length===s.length&&a.slice(0,-1).every((r,f)=>r===s[f])?a[a.length-1]-s[s.length-1]:0}function ux(a,s,i=!1){let{routesMeta:r}=a,f={},d="/",p=[];for(let m=0;m{if(b==="*"){let E=m[R]||"";p=d.slice(0,d.length-E.length).replace(/(.)\/+$/,"$1")}const N=m[R];return S&&!N?v[b]=void 0:v[b]=(N||"").replace(/%2F/g,"/"),v},{}),pathname:d,pathnameBase:p,pattern:a}}function cx(a,s=!1,i=!0){Wt(a==="*"||!a.endsWith("*")||a.endsWith("/*"),`Route path "${a}" will be treated as if it were "${a.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${a.replace(/\*$/,"/*")}".`);let r=[],f="^"+a.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(p,m,g)=>(r.push({paramName:m,isOptional:g!=null}),g?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return a.endsWith("*")?(r.push({paramName:"*"}),f+=a==="*"||a==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):i?f+="\\/*$":a!==""&&a!=="/"&&(f+="(?:(?=\\/|$))"),[new RegExp(f,s?void 0:"i"),r]}function ox(a){try{return a.split("/").map(s=>decodeURIComponent(s).replace(/\//g,"%2F")).join("/")}catch(s){return Wt(!1,`The URL path "${a}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${s}).`),a}}function Mn(a,s){if(s==="/")return a;if(!a.toLowerCase().startsWith(s.toLowerCase()))return null;let i=s.endsWith("/")?s.length-1:s.length,r=a.charAt(i);return r&&r!=="/"?null:a.slice(i)||"/"}var fx=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,dx=a=>fx.test(a);function hx(a,s="/"){let{pathname:i,search:r="",hash:f=""}=typeof a=="string"?vl(a):a,d;if(i)if(dx(i))d=i;else{if(i.includes("//")){let p=i;i=i.replace(/\/\/+/g,"/"),Wt(!1,`Pathnames cannot have embedded double slashes - normalizing ${p} -> ${i}`)}i.startsWith("/")?d=fp(i.substring(1),"/"):d=fp(i,s)}else d=s;return{pathname:d,search:gx(r),hash:yx(f)}}function fp(a,s){let i=s.replace(/\/+$/,"").split("/");return a.split("/").forEach(f=>{f===".."?i.length>1&&i.pop():f!=="."&&i.push(f)}),i.length>1?i.join("/"):"/"}function Yc(a,s,i,r){return`Cannot include a '${a}' character in a manually specified \`to.${s}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${i}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function mx(a){return a.filter((s,i)=>i===0||s.route.path&&s.route.path.length>0)}function n0(a){let s=mx(a);return s.map((i,r)=>r===s.length-1?i.pathname:i.pathnameBase)}function a0(a,s,i,r=!1){let f;typeof a=="string"?f=vl(a):(f={...a},Ve(!f.pathname||!f.pathname.includes("?"),Yc("?","pathname","search",f)),Ve(!f.pathname||!f.pathname.includes("#"),Yc("#","pathname","hash",f)),Ve(!f.search||!f.search.includes("#"),Yc("#","search","hash",f)));let d=a===""||f.pathname==="",p=d?"/":f.pathname,m;if(p==null)m=i;else{let S=s.length-1;if(!r&&p.startsWith("..")){let R=p.split("/");for(;R[0]==="..";)R.shift(),S-=1;f.pathname=R.join("/")}m=S>=0?s[S]:"/"}let g=hx(f,m),v=p&&p!=="/"&&p.endsWith("/"),b=(d||p===".")&&i.endsWith("/");return!g.pathname.endsWith("/")&&(v||b)&&(g.pathname+="/"),g}var Tn=a=>a.join("/").replace(/\/\/+/g,"/"),px=a=>a.replace(/\/+$/,"").replace(/^\/*/,"/"),gx=a=>!a||a==="?"?"":a.startsWith("?")?a:"?"+a,yx=a=>!a||a==="#"?"":a.startsWith("#")?a:"#"+a;function vx(a){return a!=null&&typeof a.status=="number"&&typeof a.statusText=="string"&&typeof a.internal=="boolean"&&"data"in a}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var l0=["POST","PUT","PATCH","DELETE"];new Set(l0);var xx=["GET",...l0];new Set(xx);var xl=y.createContext(null);xl.displayName="DataRouter";var vr=y.createContext(null);vr.displayName="DataRouterState";y.createContext(!1);var s0=y.createContext({isTransitioning:!1});s0.displayName="ViewTransition";var bx=y.createContext(new Map);bx.displayName="Fetchers";var Sx=y.createContext(null);Sx.displayName="Await";var rn=y.createContext(null);rn.displayName="Navigation";var ws=y.createContext(null);ws.displayName="Location";var _n=y.createContext({outlet:null,matches:[],isDataRoute:!1});_n.displayName="Route";var bo=y.createContext(null);bo.displayName="RouteError";function Ax(a,{relative:s}={}){Ve(Cs(),"useHref() may be used only in the context of a component.");let{basename:i,navigator:r}=y.useContext(rn),{hash:f,pathname:d,search:p}=Ts(a,{relative:s}),m=d;return i!=="/"&&(m=d==="/"?i:Tn([i,d])),r.createHref({pathname:m,search:p,hash:f})}function Cs(){return y.useContext(ws)!=null}function Ra(){return Ve(Cs(),"useLocation() may be used only in the context of a component."),y.useContext(ws).location}var i0="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function r0(a){y.useContext(rn).static||y.useLayoutEffect(a)}function jx(){let{isDataRoute:a}=y.useContext(_n);return a?zx():Nx()}function Nx(){Ve(Cs(),"useNavigate() may be used only in the context of a component.");let a=y.useContext(xl),{basename:s,navigator:i}=y.useContext(rn),{matches:r}=y.useContext(_n),{pathname:f}=Ra(),d=JSON.stringify(n0(r)),p=y.useRef(!1);return r0(()=>{p.current=!0}),y.useCallback((g,v={})=>{if(Wt(p.current,i0),!p.current)return;if(typeof g=="number"){i.go(g);return}let b=a0(g,JSON.parse(d),f,v.relative==="path");a==null&&s!=="/"&&(b.pathname=b.pathname==="/"?s:Tn([s,b.pathname])),(v.replace?i.replace:i.push)(b,v.state,v)},[s,i,d,f,a])}y.createContext(null);function Ts(a,{relative:s}={}){let{matches:i}=y.useContext(_n),{pathname:r}=Ra(),f=JSON.stringify(n0(i));return y.useMemo(()=>a0(a,JSON.parse(f),r,s==="path"),[a,f,r,s])}function qx(a,s){return u0(a,s)}function u0(a,s,i,r,f){Ve(Cs(),"useRoutes() may be used only in the context of a component.");let{navigator:d}=y.useContext(rn),{matches:p}=y.useContext(_n),m=p[p.length-1],g=m?m.params:{},v=m?m.pathname:"/",b=m?m.pathnameBase:"/",S=m&&m.route;{let M=S&&S.path||"";c0(v,!S||M.endsWith("*")||M.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${v}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. +`+l.stack}}var nt=Object.prototype.hasOwnProperty,ct=a.unstable_scheduleCallback,De=a.unstable_cancelCallback,Ke=a.unstable_shouldYield,ze=a.unstable_requestPaint,ft=a.unstable_now,vg=a.unstable_getCurrentPriorityLevel,Io=a.unstable_ImmediatePriority,Po=a.unstable_UserBlockingPriority,Os=a.unstable_NormalPriority,xg=a.unstable_LowPriority,ef=a.unstable_IdlePriority,bg=a.log,Sg=a.unstable_setDisableYieldValue,Sl=null,At=null;function Dn(e){if(typeof bg=="function"&&Sg(e),At&&typeof At.setStrictMode=="function")try{At.setStrictMode(Sl,e)}catch{}}var jt=Math.clz32?Math.clz32:Ng,Ag=Math.log,jg=Math.LN2;function Ng(e){return e>>>=0,e===0?32:31-(Ag(e)/jg|0)|0}var Ds=256,ks=262144,zs=4194304;function oa(e){var t=e&42;if(t!==0)return t;switch(e&-e){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 e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Bs(e,t,n){var l=e.pendingLanes;if(l===0)return 0;var u=0,o=e.suspendedLanes,h=e.pingedLanes;e=e.warmLanes;var x=l&134217727;return x!==0?(l=x&~o,l!==0?u=oa(l):(h&=x,h!==0?u=oa(h):n||(n=x&~e,n!==0&&(u=oa(n))))):(x=l&~o,x!==0?u=oa(x):h!==0?u=oa(h):n||(n=l&~e,n!==0&&(u=oa(n)))),u===0?0:t!==0&&t!==u&&(t&o)===0&&(o=u&-u,n=t&-t,o>=n||o===32&&(n&4194048)!==0)?t:u}function Al(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function qg(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+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 t+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 tf(){var e=zs;return zs<<=1,(zs&62914560)===0&&(zs=4194304),e}function Nr(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function jl(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Eg(e,t,n,l,u,o){var h=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var x=e.entanglements,q=e.expirationTimes,D=e.hiddenUpdates;for(n=h&~n;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var _g=/[\n"\\]/g;function Ot(e){return e.replace(_g,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Rr(e,t,n,l,u,o,h,x){e.name="",h!=null&&typeof h!="function"&&typeof h!="symbol"&&typeof h!="boolean"?e.type=h:e.removeAttribute("type"),t!=null?h==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+_t(t)):e.value!==""+_t(t)&&(e.value=""+_t(t)):h!=="submit"&&h!=="reset"||e.removeAttribute("value"),t!=null?Mr(e,h,_t(t)):n!=null?Mr(e,h,_t(n)):l!=null&&e.removeAttribute("value"),u==null&&o!=null&&(e.defaultChecked=!!o),u!=null&&(e.checked=u&&typeof u!="function"&&typeof u!="symbol"),x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"?e.name=""+_t(x):e.removeAttribute("name")}function pf(e,t,n,l,u,o,h,x){if(o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"&&(e.type=o),t!=null||n!=null){if(!(o!=="submit"&&o!=="reset"||t!=null)){Tr(e);return}n=n!=null?""+_t(n):"",t=t!=null?""+_t(t):n,x||t===e.value||(e.value=t),e.defaultValue=t}l=l??u,l=typeof l!="function"&&typeof l!="symbol"&&!!l,e.checked=x?e.checked:!!l,e.defaultChecked=!!l,h!=null&&typeof h!="function"&&typeof h!="symbol"&&typeof h!="boolean"&&(e.name=h),Tr(e)}function Mr(e,t,n){t==="number"&&Hs(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function za(e,t,n,l){if(e=e.options,t){t={};for(var u=0;u"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),zr=!1;if(fn)try{var wl={};Object.defineProperty(wl,"passive",{get:function(){zr=!0}}),window.addEventListener("test",wl,wl),window.removeEventListener("test",wl,wl)}catch{zr=!1}var zn=null,Br=null,Ys=null;function Af(){if(Ys)return Ys;var e,t=Br,n=t.length,l,u="value"in zn?zn.value:zn.textContent,o=u.length;for(e=0;e=Rl),Cf=" ",Tf=!1;function Rf(e,t){switch(e){case"keyup":return iy.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Mf(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ha=!1;function uy(e,t){switch(e){case"compositionend":return Mf(t);case"keypress":return t.which!==32?null:(Tf=!0,Cf);case"textInput":return e=t.data,e===Cf&&Tf?null:e;default:return null}}function cy(e,t){if(Ha)return e==="compositionend"||!Yr&&Rf(e,t)?(e=Af(),Ys=Br=zn=null,Ha=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=l}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Uf(n)}}function Vf(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Vf(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Yf(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Hs(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Hs(e.document)}return t}function Xr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var yy=fn&&"documentMode"in document&&11>=document.documentMode,Va=null,Kr=null,Dl=null,Zr=!1;function Gf(e,t,n){var l=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Zr||Va==null||Va!==Hs(l)||(l=Va,"selectionStart"in l&&Xr(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),Dl&&Ol(Dl,l)||(Dl=l,l=ki(Kr,"onSelect"),0>=h,u-=h,en=1<<32-jt(t)+u|n<ye?(Se=ie,ie=null):Se=ie.sibling;var Ee=z(_,ie,O[ye],X);if(Ee===null){ie===null&&(ie=Se);break}e&&ie&&Ee.alternate===null&&t(_,ie),w=o(Ee,w,ye),qe===null?ce=Ee:qe.sibling=Ee,qe=Ee,ie=Se}if(ye===O.length)return n(_,ie),Ae&&hn(_,ye),ce;if(ie===null){for(;yeye?(Se=ie,ie=null):Se=ie.sibling;var la=z(_,ie,Ee.value,X);if(la===null){ie===null&&(ie=Se);break}e&&ie&&la.alternate===null&&t(_,ie),w=o(la,w,ye),qe===null?ce=la:qe.sibling=la,qe=la,ie=Se}if(Ee.done)return n(_,ie),Ae&&hn(_,ye),ce;if(ie===null){for(;!Ee.done;ye++,Ee=O.next())Ee=K(_,Ee.value,X),Ee!==null&&(w=o(Ee,w,ye),qe===null?ce=Ee:qe.sibling=Ee,qe=Ee);return Ae&&hn(_,ye),ce}for(ie=l(ie);!Ee.done;ye++,Ee=O.next())Ee=U(ie,_,ye,Ee.value,X),Ee!==null&&(e&&Ee.alternate!==null&&ie.delete(Ee.key===null?ye:Ee.key),w=o(Ee,w,ye),qe===null?ce=Ee:qe.sibling=Ee,qe=Ee);return e&&ie.forEach(function(Bv){return t(_,Bv)}),Ae&&hn(_,ye),ce}function Oe(_,w,O,X){if(typeof O=="object"&&O!==null&&O.type===C&&O.key===null&&(O=O.props.children),typeof O=="object"&&O!==null){switch(O.$$typeof){case N:e:{for(var ce=O.key;w!==null;){if(w.key===ce){if(ce=O.type,ce===C){if(w.tag===7){n(_,w.sibling),X=u(w,O.props.children),X.return=_,_=X;break e}}else if(w.elementType===ce||typeof ce=="object"&&ce!==null&&ce.$$typeof===$&&Sa(ce)===w.type){n(_,w.sibling),X=u(w,O.props),Hl(X,O),X.return=_,_=X;break e}n(_,w);break}else t(_,w);w=w.sibling}O.type===C?(X=ga(O.props.children,_.mode,X,O.key),X.return=_,_=X):(X=Is(O.type,O.key,O.props,null,_.mode,X),Hl(X,O),X.return=_,_=X)}return h(_);case T:e:{for(ce=O.key;w!==null;){if(w.key===ce)if(w.tag===4&&w.stateNode.containerInfo===O.containerInfo&&w.stateNode.implementation===O.implementation){n(_,w.sibling),X=u(w,O.children||[]),X.return=_,_=X;break e}else{n(_,w);break}else t(_,w);w=w.sibling}X=eu(O,_.mode,X),X.return=_,_=X}return h(_);case $:return O=Sa(O),Oe(_,w,O,X)}if(ne(O))return le(_,w,O,X);if(se(O)){if(ce=se(O),typeof ce!="function")throw Error(r(150));return O=ce.call(O),fe(_,w,O,X)}if(typeof O.then=="function")return Oe(_,w,si(O),X);if(O.$$typeof===V)return Oe(_,w,ti(_,O),X);ii(_,O)}return typeof O=="string"&&O!==""||typeof O=="number"||typeof O=="bigint"?(O=""+O,w!==null&&w.tag===6?(n(_,w.sibling),X=u(w,O),X.return=_,_=X):(n(_,w),X=Pr(O,_.mode,X),X.return=_,_=X),h(_)):n(_,w)}return function(_,w,O,X){try{Ul=0;var ce=Oe(_,w,O,X);return Ia=null,ce}catch(ie){if(ie===Wa||ie===ai)throw ie;var qe=qt(29,ie,null,_.mode);return qe.lanes=X,qe.return=_,qe}finally{}}}var ja=dd(!0),hd=dd(!1),Vn=!1;function du(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function hu(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Yn(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Gn(e,t,n){var l=e.updateQueue;if(l===null)return null;if(l=l.shared,(we&2)!==0){var u=l.pending;return u===null?t.next=t:(t.next=u.next,u.next=t),l.pending=t,t=Ws(e),Ff(e,null,n),t}return Fs(e,l,t,n),Ws(e)}function Vl(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194048)!==0)){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,af(e,n)}}function mu(e,t){var n=e.updateQueue,l=e.alternate;if(l!==null&&(l=l.updateQueue,n===l)){var u=null,o=null;if(n=n.firstBaseUpdate,n!==null){do{var h={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};o===null?u=o=h:o=o.next=h,n=n.next}while(n!==null);o===null?u=o=t:o=o.next=t}else u=o=t;n={baseState:l.baseState,firstBaseUpdate:u,lastBaseUpdate:o,shared:l.shared,callbacks:l.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var pu=!1;function Yl(){if(pu){var e=Fa;if(e!==null)throw e}}function Gl(e,t,n,l){pu=!1;var u=e.updateQueue;Vn=!1;var o=u.firstBaseUpdate,h=u.lastBaseUpdate,x=u.shared.pending;if(x!==null){u.shared.pending=null;var q=x,D=q.next;q.next=null,h===null?o=D:h.next=D,h=q;var Y=e.alternate;Y!==null&&(Y=Y.updateQueue,x=Y.lastBaseUpdate,x!==h&&(x===null?Y.firstBaseUpdate=D:x.next=D,Y.lastBaseUpdate=q))}if(o!==null){var K=u.baseState;h=0,Y=D=q=null,x=o;do{var z=x.lane&-536870913,U=z!==x.lane;if(U?(be&z)===z:(l&z)===z){z!==0&&z===Ja&&(pu=!0),Y!==null&&(Y=Y.next={lane:0,tag:x.tag,payload:x.payload,callback:null,next:null});e:{var le=e,fe=x;z=t;var Oe=n;switch(fe.tag){case 1:if(le=fe.payload,typeof le=="function"){K=le.call(Oe,K,z);break e}K=le;break e;case 3:le.flags=le.flags&-65537|128;case 0:if(le=fe.payload,z=typeof le=="function"?le.call(Oe,K,z):le,z==null)break e;K=A({},K,z);break e;case 2:Vn=!0}}z=x.callback,z!==null&&(e.flags|=64,U&&(e.flags|=8192),U=u.callbacks,U===null?u.callbacks=[z]:U.push(z))}else U={lane:z,tag:x.tag,payload:x.payload,callback:x.callback,next:null},Y===null?(D=Y=U,q=K):Y=Y.next=U,h|=z;if(x=x.next,x===null){if(x=u.shared.pending,x===null)break;U=x,x=U.next,U.next=null,u.lastBaseUpdate=U,u.shared.pending=null}}while(!0);Y===null&&(q=K),u.baseState=q,u.firstBaseUpdate=D,u.lastBaseUpdate=Y,o===null&&(u.shared.lanes=0),$n|=h,e.lanes=h,e.memoizedState=K}}function md(e,t){if(typeof e!="function")throw Error(r(191,e));e.call(t)}function pd(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;eo?o:8;var h=k.T,x={};k.T=x,Du(e,!1,t,n);try{var q=u(),D=k.S;if(D!==null&&D(x,q),q!==null&&typeof q=="object"&&typeof q.then=="function"){var Y=Ey(q,l);Kl(e,t,Y,Rt(e))}else Kl(e,t,l,Rt(e))}catch(K){Kl(e,t,{then:function(){},status:"rejected",reason:K},Rt())}finally{L.p=o,h!==null&&x.types!==null&&(h.types=x.types),k.T=h}}function _y(){}function _u(e,t,n,l){if(e.tag!==5)throw Error(r(476));var u=Zd(e).queue;Kd(e,u,t,W,n===null?_y:function(){return $d(e),n(l)})}function Zd(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:W,baseState:W,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:yn,lastRenderedState:W},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:yn,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function $d(e){var t=Zd(e);t.next===null&&(t=e.alternate.memoizedState),Kl(e,t.next.queue,{},Rt())}function Ou(){return st(cs)}function Jd(){return Xe().memoizedState}function Fd(){return Xe().memoizedState}function Oy(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=Rt();e=Yn(n);var l=Gn(t,e,n);l!==null&&(xt(l,t,n),Vl(l,t,n)),t={cache:uu()},e.payload=t;return}t=t.return}}function Dy(e,t,n){var l=Rt();n={lane:l,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},gi(e)?Id(t,n):(n=Wr(e,t,n,l),n!==null&&(xt(n,e,l),Pd(n,t,l)))}function Wd(e,t,n){var l=Rt();Kl(e,t,n,l)}function Kl(e,t,n,l){var u={lane:l,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(gi(e))Id(t,u);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var h=t.lastRenderedState,x=o(h,n);if(u.hasEagerState=!0,u.eagerState=x,Nt(x,h))return Fs(e,t,u,0),ke===null&&Js(),!1}catch{}finally{}if(n=Wr(e,t,u,l),n!==null)return xt(n,e,l),Pd(n,t,l),!0}return!1}function Du(e,t,n,l){if(l={lane:2,revertLane:dc(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},gi(e)){if(t)throw Error(r(479))}else t=Wr(e,n,l,2),t!==null&&xt(t,e,2)}function gi(e){var t=e.alternate;return e===ge||t!==null&&t===ge}function Id(e,t){el=ci=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Pd(e,t,n){if((n&4194048)!==0){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,af(e,n)}}var Zl={readContext:st,use:di,useCallback:Ye,useContext:Ye,useEffect:Ye,useImperativeHandle:Ye,useLayoutEffect:Ye,useInsertionEffect:Ye,useMemo:Ye,useReducer:Ye,useRef:Ye,useState:Ye,useDebugValue:Ye,useDeferredValue:Ye,useTransition:Ye,useSyncExternalStore:Ye,useId:Ye,useHostTransitionStatus:Ye,useFormState:Ye,useActionState:Ye,useOptimistic:Ye,useMemoCache:Ye,useCacheRefresh:Ye};Zl.useEffectEvent=Ye;var eh={readContext:st,use:di,useCallback:function(e,t){return dt().memoizedState=[e,t===void 0?null:t],e},useContext:st,useEffect:Bd,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,mi(4194308,4,Vd.bind(null,t,e),n)},useLayoutEffect:function(e,t){return mi(4194308,4,e,t)},useInsertionEffect:function(e,t){mi(4,2,e,t)},useMemo:function(e,t){var n=dt();t=t===void 0?null:t;var l=e();if(Na){Dn(!0);try{e()}finally{Dn(!1)}}return n.memoizedState=[l,t],l},useReducer:function(e,t,n){var l=dt();if(n!==void 0){var u=n(t);if(Na){Dn(!0);try{n(t)}finally{Dn(!1)}}}else u=t;return l.memoizedState=l.baseState=u,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:u},l.queue=e,e=e.dispatch=Dy.bind(null,ge,e),[l.memoizedState,e]},useRef:function(e){var t=dt();return e={current:e},t.memoizedState=e},useState:function(e){e=wu(e);var t=e.queue,n=Wd.bind(null,ge,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Ru,useDeferredValue:function(e,t){var n=dt();return Mu(n,e,t)},useTransition:function(){var e=wu(!1);return e=Kd.bind(null,ge,e.queue,!0,!1),dt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var l=ge,u=dt();if(Ae){if(n===void 0)throw Error(r(407));n=n()}else{if(n=t(),ke===null)throw Error(r(349));(be&127)!==0||Sd(l,t,n)}u.memoizedState=n;var o={value:n,getSnapshot:t};return u.queue=o,Bd(jd.bind(null,l,o,e),[e]),l.flags|=2048,nl(9,{destroy:void 0},Ad.bind(null,l,o,n,t),null),n},useId:function(){var e=dt(),t=ke.identifierPrefix;if(Ae){var n=tn,l=en;n=(l&~(1<<32-jt(l)-1)).toString(32)+n,t="_"+t+"R_"+n,n=oi++,0<\/script>",o=o.removeChild(o.firstChild);break;case"select":o=typeof l.is=="string"?h.createElement("select",{is:l.is}):h.createElement("select"),l.multiple?o.multiple=!0:l.size&&(o.size=l.size);break;default:o=typeof l.is=="string"?h.createElement(u,{is:l.is}):h.createElement(u)}}o[at]=t,o[ht]=l;e:for(h=t.child;h!==null;){if(h.tag===5||h.tag===6)o.appendChild(h.stateNode);else if(h.tag!==4&&h.tag!==27&&h.child!==null){h.child.return=h,h=h.child;continue}if(h===t)break e;for(;h.sibling===null;){if(h.return===null||h.return===t)break e;h=h.return}h.sibling.return=h.return,h=h.sibling}t.stateNode=o;e:switch(rt(o,u,l),u){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&xn(t)}}return Le(t),$u(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==l&&xn(t);else{if(typeof l!="string"&&t.stateNode===null)throw Error(r(166));if(e=ae.current,Za(t)){if(e=t.stateNode,n=t.memoizedProps,l=null,u=lt,u!==null)switch(u.tag){case 27:case 5:l=u.memoizedProps}e[at]=t,e=!!(e.nodeValue===n||l!==null&&l.suppressHydrationWarning===!0||xm(e.nodeValue,n)),e||Un(t,!0)}else e=zi(e).createTextNode(l),e[at]=t,t.stateNode=e}return Le(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(l=Za(t),n!==null){if(e===null){if(!l)throw Error(r(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(557));e[at]=t}else ya(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Le(t),e=!1}else n=lu(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(wt(t),t):(wt(t),null);if((t.flags&128)!==0)throw Error(r(558))}return Le(t),null;case 13:if(l=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(u=Za(t),l!==null&&l.dehydrated!==null){if(e===null){if(!u)throw Error(r(318));if(u=t.memoizedState,u=u!==null?u.dehydrated:null,!u)throw Error(r(317));u[at]=t}else ya(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Le(t),u=!1}else u=lu(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=u),u=!0;if(!u)return t.flags&256?(wt(t),t):(wt(t),null)}return wt(t),(t.flags&128)!==0?(t.lanes=n,t):(n=l!==null,e=e!==null&&e.memoizedState!==null,n&&(l=t.child,u=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(u=l.alternate.memoizedState.cachePool.pool),o=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(o=l.memoizedState.cachePool.pool),o!==u&&(l.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Si(t,t.updateQueue),Le(t),null);case 4:return pe(),e===null&&gc(t.stateNode.containerInfo),Le(t),null;case 10:return pn(t.type),Le(t),null;case 19:if(B(Qe),l=t.memoizedState,l===null)return Le(t),null;if(u=(t.flags&128)!==0,o=l.rendering,o===null)if(u)Jl(l,!1);else{if(Ge!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(o=ui(e),o!==null){for(t.flags|=128,Jl(l,!1),e=o.updateQueue,t.updateQueue=e,Si(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Wf(n,e),n=n.sibling;return G(Qe,Qe.current&1|2),Ae&&hn(t,l.treeForkCount),t.child}e=e.sibling}l.tail!==null&&ft()>Ei&&(t.flags|=128,u=!0,Jl(l,!1),t.lanes=4194304)}else{if(!u)if(e=ui(o),e!==null){if(t.flags|=128,u=!0,e=e.updateQueue,t.updateQueue=e,Si(t,e),Jl(l,!0),l.tail===null&&l.tailMode==="hidden"&&!o.alternate&&!Ae)return Le(t),null}else 2*ft()-l.renderingStartTime>Ei&&n!==536870912&&(t.flags|=128,u=!0,Jl(l,!1),t.lanes=4194304);l.isBackwards?(o.sibling=t.child,t.child=o):(e=l.last,e!==null?e.sibling=o:t.child=o,l.last=o)}return l.tail!==null?(e=l.tail,l.rendering=e,l.tail=e.sibling,l.renderingStartTime=ft(),e.sibling=null,n=Qe.current,G(Qe,u?n&1|2:n&1),Ae&&hn(t,l.treeForkCount),e):(Le(t),null);case 22:case 23:return wt(t),yu(),l=t.memoizedState!==null,e!==null?e.memoizedState!==null!==l&&(t.flags|=8192):l&&(t.flags|=8192),l?(n&536870912)!==0&&(t.flags&128)===0&&(Le(t),t.subtreeFlags&6&&(t.flags|=8192)):Le(t),n=t.updateQueue,n!==null&&Si(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),l=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),l!==n&&(t.flags|=2048),e!==null&&B(ba),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),pn(Ze),Le(t),null;case 25:return null;case 30:return null}throw Error(r(156,t.tag))}function Uy(e,t){switch(nu(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return pn(Ze),pe(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return It(t),null;case 31:if(t.memoizedState!==null){if(wt(t),t.alternate===null)throw Error(r(340));ya()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(wt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(r(340));ya()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return B(Qe),null;case 4:return pe(),null;case 10:return pn(t.type),null;case 22:case 23:return wt(t),yu(),e!==null&&B(ba),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return pn(Ze),null;case 25:return null;default:return null}}function Nh(e,t){switch(nu(t),t.tag){case 3:pn(Ze),pe();break;case 26:case 27:case 5:It(t);break;case 4:pe();break;case 31:t.memoizedState!==null&&wt(t);break;case 13:wt(t);break;case 19:B(Qe);break;case 10:pn(t.type);break;case 22:case 23:wt(t),yu(),e!==null&&B(ba);break;case 24:pn(Ze)}}function Fl(e,t){try{var n=t.updateQueue,l=n!==null?n.lastEffect:null;if(l!==null){var u=l.next;n=u;do{if((n.tag&e)===e){l=void 0;var o=n.create,h=n.inst;l=o(),h.destroy=l}n=n.next}while(n!==u)}}catch(x){Te(t,t.return,x)}}function Kn(e,t,n){try{var l=t.updateQueue,u=l!==null?l.lastEffect:null;if(u!==null){var o=u.next;l=o;do{if((l.tag&e)===e){var h=l.inst,x=h.destroy;if(x!==void 0){h.destroy=void 0,u=t;var q=n,D=x;try{D()}catch(Y){Te(u,q,Y)}}}l=l.next}while(l!==o)}}catch(Y){Te(t,t.return,Y)}}function qh(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{pd(t,n)}catch(l){Te(e,e.return,l)}}}function Eh(e,t,n){n.props=qa(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(l){Te(e,t,l)}}function Wl(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var l=e.stateNode;break;case 30:l=e.stateNode;break;default:l=e.stateNode}typeof n=="function"?e.refCleanup=n(l):n.current=l}}catch(u){Te(e,t,u)}}function nn(e,t){var n=e.ref,l=e.refCleanup;if(n!==null)if(typeof l=="function")try{l()}catch(u){Te(e,t,u)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(u){Te(e,t,u)}else n.current=null}function wh(e){var t=e.type,n=e.memoizedProps,l=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&l.focus();break e;case"img":n.src?l.src=n.src:n.srcSet&&(l.srcset=n.srcSet)}}catch(u){Te(e,e.return,u)}}function Ju(e,t,n){try{var l=e.stateNode;rv(l,e.type,n,t),l[ht]=t}catch(u){Te(e,e.return,u)}}function Ch(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Pn(e.type)||e.tag===4}function Fu(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Ch(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Pn(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Wu(e,t,n){var l=e.tag;if(l===5||l===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=on));else if(l!==4&&(l===27&&Pn(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Wu(e,t,n),e=e.sibling;e!==null;)Wu(e,t,n),e=e.sibling}function Ai(e,t,n){var l=e.tag;if(l===5||l===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(l!==4&&(l===27&&Pn(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Ai(e,t,n),e=e.sibling;e!==null;)Ai(e,t,n),e=e.sibling}function Th(e){var t=e.stateNode,n=e.memoizedProps;try{for(var l=e.type,u=t.attributes;u.length;)t.removeAttributeNode(u[0]);rt(t,l,n),t[at]=e,t[ht]=n}catch(o){Te(e,e.return,o)}}var bn=!1,Fe=!1,Iu=!1,Rh=typeof WeakSet=="function"?WeakSet:Set,tt=null;function Hy(e,t){if(e=e.containerInfo,xc=Gi,e=Yf(e),Xr(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var l=n.getSelection&&n.getSelection();if(l&&l.rangeCount!==0){n=l.anchorNode;var u=l.anchorOffset,o=l.focusNode;l=l.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var h=0,x=-1,q=-1,D=0,Y=0,K=e,z=null;t:for(;;){for(var U;K!==n||u!==0&&K.nodeType!==3||(x=h+u),K!==o||l!==0&&K.nodeType!==3||(q=h+l),K.nodeType===3&&(h+=K.nodeValue.length),(U=K.firstChild)!==null;)z=K,K=U;for(;;){if(K===e)break t;if(z===n&&++D===u&&(x=h),z===o&&++Y===l&&(q=h),(U=K.nextSibling)!==null)break;K=z,z=K.parentNode}K=U}n=x===-1||q===-1?null:{start:x,end:q}}else n=null}n=n||{start:0,end:0}}else n=null;for(bc={focusedElem:e,selectionRange:n},Gi=!1,tt=t;tt!==null;)if(t=tt,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,tt=e;else for(;tt!==null;){switch(t=tt,o=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n title"))),rt(o,l,n),o[at]=e,et(o),l=o;break e;case"link":var h=zm("link","href",u).get(l+(n.href||""));if(h){for(var x=0;xOe&&(h=Oe,Oe=fe,fe=h);var _=Hf(x,fe),w=Hf(x,Oe);if(_&&w&&(U.rangeCount!==1||U.anchorNode!==_.node||U.anchorOffset!==_.offset||U.focusNode!==w.node||U.focusOffset!==w.offset)){var O=K.createRange();O.setStart(_.node,_.offset),U.removeAllRanges(),fe>Oe?(U.addRange(O),U.extend(w.node,w.offset)):(O.setEnd(w.node,w.offset),U.addRange(O))}}}}for(K=[],U=x;U=U.parentNode;)U.nodeType===1&&K.push({element:U,left:U.scrollLeft,top:U.scrollTop});for(typeof x.focus=="function"&&x.focus(),x=0;xn?32:n,k.T=null,n=sc,sc=null;var o=Fn,h=qn;if(Pe=0,rl=Fn=null,qn=0,(we&6)!==0)throw Error(r(331));var x=we;if(we|=4,Vh(o.current),Lh(o,o.current,h,n),we=x,as(0,!1),At&&typeof At.onPostCommitFiberRoot=="function")try{At.onPostCommitFiberRoot(Sl,o)}catch{}return!0}finally{L.p=u,k.T=l,sm(e,t)}}function rm(e,t,n){t=kt(n,t),t=Lu(e.stateNode,t,2),e=Gn(e,t,2),e!==null&&(jl(e,2),an(e))}function Te(e,t,n){if(e.tag===3)rm(e,e,n);else for(;t!==null;){if(t.tag===3){rm(t,e,n);break}else if(t.tag===1){var l=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(Jn===null||!Jn.has(l))){e=kt(n,e),n=uh(2),l=Gn(t,n,2),l!==null&&(ch(n,l,t,e),jl(l,2),an(l));break}}t=t.return}}function cc(e,t,n){var l=e.pingCache;if(l===null){l=e.pingCache=new Gy;var u=new Set;l.set(t,u)}else u=l.get(t),u===void 0&&(u=new Set,l.set(t,u));u.has(n)||(tc=!0,u.add(n),e=$y.bind(null,e,t,n),t.then(e,e))}function $y(e,t,n){var l=e.pingCache;l!==null&&l.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,ke===e&&(be&n)===n&&(Ge===4||Ge===3&&(be&62914560)===be&&300>ft()-qi?(we&2)===0&&ul(e,0):nc|=n,il===be&&(il=0)),an(e)}function um(e,t){t===0&&(t=tf()),e=pa(e,t),e!==null&&(jl(e,t),an(e))}function Jy(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),um(e,n)}function Fy(e,t){var n=0;switch(e.tag){case 31:case 13:var l=e.stateNode,u=e.memoizedState;u!==null&&(n=u.retryLane);break;case 19:l=e.stateNode;break;case 22:l=e.stateNode._retryCache;break;default:throw Error(r(314))}l!==null&&l.delete(t),um(e,n)}function Wy(e,t){return ct(e,t)}var _i=null,ol=null,oc=!1,Oi=!1,fc=!1,In=0;function an(e){e!==ol&&e.next===null&&(ol===null?_i=ol=e:ol=ol.next=e),Oi=!0,oc||(oc=!0,Py())}function as(e,t){if(!fc&&Oi){fc=!0;do for(var n=!1,l=_i;l!==null;){if(e!==0){var u=l.pendingLanes;if(u===0)var o=0;else{var h=l.suspendedLanes,x=l.pingedLanes;o=(1<<31-jt(42|e)+1)-1,o&=u&~(h&~x),o=o&201326741?o&201326741|1:o?o|2:0}o!==0&&(n=!0,dm(l,o))}else o=be,o=Bs(l,l===ke?o:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(o&3)===0||Al(l,o)||(n=!0,dm(l,o));l=l.next}while(n);fc=!1}}function Iy(){cm()}function cm(){Oi=oc=!1;var e=0;In!==0&&cv()&&(e=In);for(var t=ft(),n=null,l=_i;l!==null;){var u=l.next,o=om(l,t);o===0?(l.next=null,n===null?_i=u:n.next=u,u===null&&(ol=n)):(n=l,(e!==0||(o&3)!==0)&&(Oi=!0)),l=u}Pe!==0&&Pe!==5||as(e),In!==0&&(In=0)}function om(e,t){for(var n=e.suspendedLanes,l=e.pingedLanes,u=e.expirationTimes,o=e.pendingLanes&-62914561;0x)break;var Y=q.transferSize,K=q.initiatorType;Y&&bm(K)&&(q=q.responseEnd,h+=Y*(q"u"?null:document;function _m(e,t,n){var l=fl;if(l&&typeof t=="string"&&t){var u=Ot(t);u='link[rel="'+e+'"][href="'+u+'"]',typeof n=="string"&&(u+='[crossorigin="'+n+'"]'),Mm.has(u)||(Mm.add(u),e={rel:e,crossOrigin:n,href:t},l.querySelector(u)===null&&(t=l.createElement("link"),rt(t,"link",e),et(t),l.head.appendChild(t)))}}function vv(e){En.D(e),_m("dns-prefetch",e,null)}function xv(e,t){En.C(e,t),_m("preconnect",e,t)}function bv(e,t,n){En.L(e,t,n);var l=fl;if(l&&e&&t){var u='link[rel="preload"][as="'+Ot(t)+'"]';t==="image"&&n&&n.imageSrcSet?(u+='[imagesrcset="'+Ot(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(u+='[imagesizes="'+Ot(n.imageSizes)+'"]')):u+='[href="'+Ot(e)+'"]';var o=u;switch(t){case"style":o=dl(e);break;case"script":o=hl(e)}Vt.has(o)||(e=A({rel:"preload",href:t==="image"&&n&&n.imageSrcSet?void 0:e,as:t},n),Vt.set(o,e),l.querySelector(u)!==null||t==="style"&&l.querySelector(rs(o))||t==="script"&&l.querySelector(us(o))||(t=l.createElement("link"),rt(t,"link",e),et(t),l.head.appendChild(t)))}}function Sv(e,t){En.m(e,t);var n=fl;if(n&&e){var l=t&&typeof t.as=="string"?t.as:"script",u='link[rel="modulepreload"][as="'+Ot(l)+'"][href="'+Ot(e)+'"]',o=u;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":o=hl(e)}if(!Vt.has(o)&&(e=A({rel:"modulepreload",href:e},t),Vt.set(o,e),n.querySelector(u)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(us(o)))return}l=n.createElement("link"),rt(l,"link",e),et(l),n.head.appendChild(l)}}}function Av(e,t,n){En.S(e,t,n);var l=fl;if(l&&e){var u=Da(l).hoistableStyles,o=dl(e);t=t||"default";var h=u.get(o);if(!h){var x={loading:0,preload:null};if(h=l.querySelector(rs(o)))x.loading=5;else{e=A({rel:"stylesheet",href:e,"data-precedence":t},n),(n=Vt.get(o))&&wc(e,n);var q=h=l.createElement("link");et(q),rt(q,"link",e),q._p=new Promise(function(D,Y){q.onload=D,q.onerror=Y}),q.addEventListener("load",function(){x.loading|=1}),q.addEventListener("error",function(){x.loading|=2}),x.loading|=4,Li(h,t,l)}h={type:"stylesheet",instance:h,count:1,state:x},u.set(o,h)}}}function jv(e,t){En.X(e,t);var n=fl;if(n&&e){var l=Da(n).hoistableScripts,u=hl(e),o=l.get(u);o||(o=n.querySelector(us(u)),o||(e=A({src:e,async:!0},t),(t=Vt.get(u))&&Cc(e,t),o=n.createElement("script"),et(o),rt(o,"link",e),n.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(u,o))}}function Nv(e,t){En.M(e,t);var n=fl;if(n&&e){var l=Da(n).hoistableScripts,u=hl(e),o=l.get(u);o||(o=n.querySelector(us(u)),o||(e=A({src:e,async:!0,type:"module"},t),(t=Vt.get(u))&&Cc(e,t),o=n.createElement("script"),et(o),rt(o,"link",e),n.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(u,o))}}function Om(e,t,n,l){var u=(u=ae.current)?Bi(u):null;if(!u)throw Error(r(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(t=dl(n.href),n=Da(u).hoistableStyles,l=n.get(t),l||(l={type:"style",instance:null,count:0,state:null},n.set(t,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=dl(n.href);var o=Da(u).hoistableStyles,h=o.get(e);if(h||(u=u.ownerDocument||u,h={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},o.set(e,h),(o=u.querySelector(rs(e)))&&!o._p&&(h.instance=o,h.state.loading=5),Vt.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},Vt.set(e,n),o||qv(u,e,n,h.state))),t&&l===null)throw Error(r(528,""));return h}if(t&&l!==null)throw Error(r(529,""));return null;case"script":return t=n.async,n=n.src,typeof n=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=hl(n),n=Da(u).hoistableScripts,l=n.get(t),l||(l={type:"script",instance:null,count:0,state:null},n.set(t,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,e))}}function dl(e){return'href="'+Ot(e)+'"'}function rs(e){return'link[rel="stylesheet"]['+e+"]"}function Dm(e){return A({},e,{"data-precedence":e.precedence,precedence:null})}function qv(e,t,n,l){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?l.loading=1:(t=e.createElement("link"),l.preload=t,t.addEventListener("load",function(){return l.loading|=1}),t.addEventListener("error",function(){return l.loading|=2}),rt(t,"link",n),et(t),e.head.appendChild(t))}function hl(e){return'[src="'+Ot(e)+'"]'}function us(e){return"script[async]"+e}function km(e,t,n){if(t.count++,t.instance===null)switch(t.type){case"style":var l=e.querySelector('style[data-href~="'+Ot(n.href)+'"]');if(l)return t.instance=l,et(l),l;var u=A({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return l=(e.ownerDocument||e).createElement("style"),et(l),rt(l,"style",u),Li(l,n.precedence,e),t.instance=l;case"stylesheet":u=dl(n.href);var o=e.querySelector(rs(u));if(o)return t.state.loading|=4,t.instance=o,et(o),o;l=Dm(n),(u=Vt.get(u))&&wc(l,u),o=(e.ownerDocument||e).createElement("link"),et(o);var h=o;return h._p=new Promise(function(x,q){h.onload=x,h.onerror=q}),rt(o,"link",l),t.state.loading|=4,Li(o,n.precedence,e),t.instance=o;case"script":return o=hl(n.src),(u=e.querySelector(us(o)))?(t.instance=u,et(u),u):(l=n,(u=Vt.get(o))&&(l=A({},n),Cc(l,u)),e=e.ownerDocument||e,u=e.createElement("script"),et(u),rt(u,"link",l),e.head.appendChild(u),t.instance=u);case"void":return null;default:throw Error(r(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(l=t.instance,t.state.loading|=4,Li(l,n.precedence,e));return t.instance}function Li(e,t,n){for(var l=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),u=l.length?l[l.length-1]:null,o=u,h=0;h title"):null)}function Ev(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Lm(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function wv(e,t,n,l){if(n.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var u=dl(l.href),o=t.querySelector(rs(u));if(o){t=o._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Hi.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=o,et(o);return}o=t.ownerDocument||t,l=Dm(l),(u=Vt.get(u))&&wc(l,u),o=o.createElement("link"),et(o);var h=o;h._p=new Promise(function(x,q){h.onload=x,h.onerror=q}),rt(o,"link",l),n.instance=o}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&(n.state.loading&3)===0&&(e.count++,n=Hi.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}var Tc=0;function Cv(e,t){return e.stylesheets&&e.count===0&&Yi(e,e.stylesheets),0Tc?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(l),clearTimeout(u)}}:null}function Hi(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Yi(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Vi=null;function Yi(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Vi=new Map,t.forEach(Tv,e),Vi=null,Hi.call(e))}function Tv(e,t){if(!(t.state.loading&4)){var n=Vi.get(e);if(n)var l=n.get(null);else{n=new Map,Vi.set(e,n);for(var u=e.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;o"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(a)}catch(s){console.error(s)}}return a(),Lc.exports=Kv(),Lc.exports}var $v=Zv();var up="popstate";function Jv(a={}){function s(r,f){let{pathname:d,search:p,hash:m}=r.location;return lo("",{pathname:d,search:p,hash:m},f.state&&f.state.usr||null,f.state&&f.state.key||"default")}function i(r,f){return typeof f=="string"?f:As(f)}return Wv(s,i,null,a)}function Ve(a,s){if(a===!1||a===null||typeof a>"u")throw new Error(s)}function Wt(a,s){if(!a){typeof console<"u"&&console.warn(s);try{throw new Error(s)}catch{}}}function Fv(){return Math.random().toString(36).substring(2,10)}function cp(a,s){return{usr:a.state,key:a.key,idx:s}}function lo(a,s,i=null,r){return{pathname:typeof a=="string"?a:a.pathname,search:"",hash:"",...typeof s=="string"?vl(s):s,state:i,key:s&&s.key||r||Fv()}}function As({pathname:a="/",search:s="",hash:i=""}){return s&&s!=="?"&&(a+=s.charAt(0)==="?"?s:"?"+s),i&&i!=="#"&&(a+=i.charAt(0)==="#"?i:"#"+i),a}function vl(a){let s={};if(a){let i=a.indexOf("#");i>=0&&(s.hash=a.substring(i),a=a.substring(0,i));let r=a.indexOf("?");r>=0&&(s.search=a.substring(r),a=a.substring(0,r)),a&&(s.pathname=a)}return s}function Wv(a,s,i,r={}){let{window:f=document.defaultView,v5Compat:d=!1}=r,p=f.history,m="POP",g=null,v=b();v==null&&(v=0,p.replaceState({...p.state,idx:v},""));function b(){return(p.state||{idx:null}).idx}function A(){m="POP";let S=b(),j=S==null?null:S-v;v=S,g&&g({action:m,location:C.location,delta:j})}function M(S,j){m="PUSH";let R=lo(C.location,S,j);v=b()+1;let V=cp(R,v),F=C.createHref(R);try{p.pushState(V,"",F)}catch(I){if(I instanceof DOMException&&I.name==="DataCloneError")throw I;f.location.assign(F)}d&&g&&g({action:m,location:C.location,delta:1})}function N(S,j){m="REPLACE";let R=lo(C.location,S,j);v=b();let V=cp(R,v),F=C.createHref(R);p.replaceState(V,"",F),d&&g&&g({action:m,location:C.location,delta:0})}function T(S){return Iv(S)}let C={get action(){return m},get location(){return a(f,p)},listen(S){if(g)throw new Error("A history only accepts one active listener");return f.addEventListener(up,A),g=S,()=>{f.removeEventListener(up,A),g=null}},createHref(S){return s(f,S)},createURL:T,encodeLocation(S){let j=T(S);return{pathname:j.pathname,search:j.search,hash:j.hash}},push:M,replace:N,go(S){return p.go(S)}};return C}function Iv(a,s=!1){let i="http://localhost";typeof window<"u"&&(i=window.location.origin!=="null"?window.location.origin:window.location.href),Ve(i,"No window.location.(origin|href) available to create URL");let r=typeof a=="string"?a:As(a);return r=r.replace(/ $/,"%20"),!s&&r.startsWith("//")&&(r=i+r),new URL(r,i)}function Pp(a,s,i="/"){return Pv(a,s,i,!1)}function Pv(a,s,i,r){let f=typeof s=="string"?vl(s):s,d=Mn(f.pathname||"/",i);if(d==null)return null;let p=e0(a);ex(p);let m=null;for(let g=0;m==null&&g{let b={relativePath:v===void 0?p.path||"":v,caseSensitive:p.caseSensitive===!0,childrenIndex:m,route:p};if(b.relativePath.startsWith("/")){if(!b.relativePath.startsWith(r)&&g)return;Ve(b.relativePath.startsWith(r),`Absolute route path "${b.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),b.relativePath=b.relativePath.slice(r.length)}let A=Tn([r,b.relativePath]),M=i.concat(b);p.children&&p.children.length>0&&(Ve(p.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${A}".`),e0(p.children,s,M,A,g)),!(p.path==null&&!p.index)&&s.push({path:A,score:rx(A,p.index),routesMeta:M})};return a.forEach((p,m)=>{if(p.path===""||!p.path?.includes("?"))d(p,m);else for(let g of t0(p.path))d(p,m,!0,g)}),s}function t0(a){let s=a.split("/");if(s.length===0)return[];let[i,...r]=s,f=i.endsWith("?"),d=i.replace(/\?$/,"");if(r.length===0)return f?[d,""]:[d];let p=t0(r.join("/")),m=[];return m.push(...p.map(g=>g===""?d:[d,g].join("/"))),f&&m.push(...p),m.map(g=>a.startsWith("/")&&g===""?"/":g)}function ex(a){a.sort((s,i)=>s.score!==i.score?i.score-s.score:ux(s.routesMeta.map(r=>r.childrenIndex),i.routesMeta.map(r=>r.childrenIndex)))}var tx=/^:[\w-]+$/,nx=3,ax=2,lx=1,sx=10,ix=-2,op=a=>a==="*";function rx(a,s){let i=a.split("/"),r=i.length;return i.some(op)&&(r+=ix),s&&(r+=ax),i.filter(f=>!op(f)).reduce((f,d)=>f+(tx.test(d)?nx:d===""?lx:sx),r)}function ux(a,s){return a.length===s.length&&a.slice(0,-1).every((r,f)=>r===s[f])?a[a.length-1]-s[s.length-1]:0}function cx(a,s,i=!1){let{routesMeta:r}=a,f={},d="/",p=[];for(let m=0;m{if(b==="*"){let T=m[M]||"";p=d.slice(0,d.length-T.length).replace(/(.)\/+$/,"$1")}const N=m[M];return A&&!N?v[b]=void 0:v[b]=(N||"").replace(/%2F/g,"/"),v},{}),pathname:d,pathnameBase:p,pattern:a}}function ox(a,s=!1,i=!0){Wt(a==="*"||!a.endsWith("*")||a.endsWith("/*"),`Route path "${a}" will be treated as if it were "${a.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${a.replace(/\*$/,"/*")}".`);let r=[],f="^"+a.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(p,m,g)=>(r.push({paramName:m,isOptional:g!=null}),g?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return a.endsWith("*")?(r.push({paramName:"*"}),f+=a==="*"||a==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):i?f+="\\/*$":a!==""&&a!=="/"&&(f+="(?:(?=\\/|$))"),[new RegExp(f,s?void 0:"i"),r]}function fx(a){try{return a.split("/").map(s=>decodeURIComponent(s).replace(/\//g,"%2F")).join("/")}catch(s){return Wt(!1,`The URL path "${a}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${s}).`),a}}function Mn(a,s){if(s==="/")return a;if(!a.toLowerCase().startsWith(s.toLowerCase()))return null;let i=s.endsWith("/")?s.length-1:s.length,r=a.charAt(i);return r&&r!=="/"?null:a.slice(i)||"/"}var dx=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,hx=a=>dx.test(a);function mx(a,s="/"){let{pathname:i,search:r="",hash:f=""}=typeof a=="string"?vl(a):a,d;if(i)if(hx(i))d=i;else{if(i.includes("//")){let p=i;i=i.replace(/\/\/+/g,"/"),Wt(!1,`Pathnames cannot have embedded double slashes - normalizing ${p} -> ${i}`)}i.startsWith("/")?d=fp(i.substring(1),"/"):d=fp(i,s)}else d=s;return{pathname:d,search:yx(r),hash:vx(f)}}function fp(a,s){let i=s.replace(/\/+$/,"").split("/");return a.split("/").forEach(f=>{f===".."?i.length>1&&i.pop():f!=="."&&i.push(f)}),i.length>1?i.join("/"):"/"}function Yc(a,s,i,r){return`Cannot include a '${a}' character in a manually specified \`to.${s}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${i}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function px(a){return a.filter((s,i)=>i===0||s.route.path&&s.route.path.length>0)}function n0(a){let s=px(a);return s.map((i,r)=>r===s.length-1?i.pathname:i.pathnameBase)}function a0(a,s,i,r=!1){let f;typeof a=="string"?f=vl(a):(f={...a},Ve(!f.pathname||!f.pathname.includes("?"),Yc("?","pathname","search",f)),Ve(!f.pathname||!f.pathname.includes("#"),Yc("#","pathname","hash",f)),Ve(!f.search||!f.search.includes("#"),Yc("#","search","hash",f)));let d=a===""||f.pathname==="",p=d?"/":f.pathname,m;if(p==null)m=i;else{let A=s.length-1;if(!r&&p.startsWith("..")){let M=p.split("/");for(;M[0]==="..";)M.shift(),A-=1;f.pathname=M.join("/")}m=A>=0?s[A]:"/"}let g=mx(f,m),v=p&&p!=="/"&&p.endsWith("/"),b=(d||p===".")&&i.endsWith("/");return!g.pathname.endsWith("/")&&(v||b)&&(g.pathname+="/"),g}var Tn=a=>a.join("/").replace(/\/\/+/g,"/"),gx=a=>a.replace(/\/+$/,"").replace(/^\/*/,"/"),yx=a=>!a||a==="?"?"":a.startsWith("?")?a:"?"+a,vx=a=>!a||a==="#"?"":a.startsWith("#")?a:"#"+a;function xx(a){return a!=null&&typeof a.status=="number"&&typeof a.statusText=="string"&&typeof a.internal=="boolean"&&"data"in a}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var l0=["POST","PUT","PATCH","DELETE"];new Set(l0);var bx=["GET",...l0];new Set(bx);var xl=y.createContext(null);xl.displayName="DataRouter";var vr=y.createContext(null);vr.displayName="DataRouterState";y.createContext(!1);var s0=y.createContext({isTransitioning:!1});s0.displayName="ViewTransition";var Sx=y.createContext(new Map);Sx.displayName="Fetchers";var Ax=y.createContext(null);Ax.displayName="Await";var rn=y.createContext(null);rn.displayName="Navigation";var ws=y.createContext(null);ws.displayName="Location";var _n=y.createContext({outlet:null,matches:[],isDataRoute:!1});_n.displayName="Route";var bo=y.createContext(null);bo.displayName="RouteError";function jx(a,{relative:s}={}){Ve(Cs(),"useHref() may be used only in the context of a component.");let{basename:i,navigator:r}=y.useContext(rn),{hash:f,pathname:d,search:p}=Ts(a,{relative:s}),m=d;return i!=="/"&&(m=d==="/"?i:Tn([i,d])),r.createHref({pathname:m,search:p,hash:f})}function Cs(){return y.useContext(ws)!=null}function Ra(){return Ve(Cs(),"useLocation() may be used only in the context of a component."),y.useContext(ws).location}var i0="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function r0(a){y.useContext(rn).static||y.useLayoutEffect(a)}function Nx(){let{isDataRoute:a}=y.useContext(_n);return a?Bx():qx()}function qx(){Ve(Cs(),"useNavigate() may be used only in the context of a component.");let a=y.useContext(xl),{basename:s,navigator:i}=y.useContext(rn),{matches:r}=y.useContext(_n),{pathname:f}=Ra(),d=JSON.stringify(n0(r)),p=y.useRef(!1);return r0(()=>{p.current=!0}),y.useCallback((g,v={})=>{if(Wt(p.current,i0),!p.current)return;if(typeof g=="number"){i.go(g);return}let b=a0(g,JSON.parse(d),f,v.relative==="path");a==null&&s!=="/"&&(b.pathname=b.pathname==="/"?s:Tn([s,b.pathname])),(v.replace?i.replace:i.push)(b,v.state,v)},[s,i,d,f,a])}y.createContext(null);function Ts(a,{relative:s}={}){let{matches:i}=y.useContext(_n),{pathname:r}=Ra(),f=JSON.stringify(n0(i));return y.useMemo(()=>a0(a,JSON.parse(f),r,s==="path"),[a,f,r,s])}function Ex(a,s){return u0(a,s)}function u0(a,s,i,r,f){Ve(Cs(),"useRoutes() may be used only in the context of a component.");let{navigator:d}=y.useContext(rn),{matches:p}=y.useContext(_n),m=p[p.length-1],g=m?m.params:{},v=m?m.pathname:"/",b=m?m.pathnameBase:"/",A=m&&m.route;{let R=A&&A.path||"";c0(v,!A||R.endsWith("*")||R.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${v}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. -Please change the parent to .`)}let R=Ra(),N;if(s){let M=typeof s=="string"?vl(s):s;Ve(b==="/"||M.pathname?.startsWith(b),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${b}" but pathname "${M.pathname}" was given in the \`location\` prop.`),N=M}else N=R;let E=N.pathname||"/",C=E;if(b!=="/"){let M=b.replace(/^\//,"").split("/");C="/"+E.replace(/^\//,"").split("/").slice(M.length).join("/")}let A=Pp(a,{pathname:C});Wt(S||A!=null,`No routes matched location "${N.pathname}${N.search}${N.hash}" `),Wt(A==null||A[A.length-1].route.element!==void 0||A[A.length-1].route.Component!==void 0||A[A.length-1].route.lazy!==void 0,`Matched leaf route at location "${N.pathname}${N.search}${N.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let j=Rx(A&&A.map(M=>Object.assign({},M,{params:Object.assign({},g,M.params),pathname:Tn([b,d.encodeLocation?d.encodeLocation(M.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:M.pathname]),pathnameBase:M.pathnameBase==="/"?b:Tn([b,d.encodeLocation?d.encodeLocation(M.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:M.pathnameBase])})),p,i,r,f);return s&&j?y.createElement(ws.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...N},navigationType:"POP"}},j):j}function Ex(){let a=kx(),s=vx(a)?`${a.status} ${a.statusText}`:a instanceof Error?a.message:JSON.stringify(a),i=a instanceof Error?a.stack:null,r="rgba(200,200,200, 0.5)",f={padding:"0.5rem",backgroundColor:r},d={padding:"2px 4px",backgroundColor:r},p=null;return console.error("Error handled by React Router default ErrorBoundary:",a),p=y.createElement(y.Fragment,null,y.createElement("p",null,"💿 Hey developer 👋"),y.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",y.createElement("code",{style:d},"ErrorBoundary")," or"," ",y.createElement("code",{style:d},"errorElement")," prop on your route.")),y.createElement(y.Fragment,null,y.createElement("h2",null,"Unexpected Application Error!"),y.createElement("h3",{style:{fontStyle:"italic"}},s),i?y.createElement("pre",{style:f},i):null,p)}var wx=y.createElement(Ex,null),Cx=class extends y.Component{constructor(a){super(a),this.state={location:a.location,revalidation:a.revalidation,error:a.error}}static getDerivedStateFromError(a){return{error:a}}static getDerivedStateFromProps(a,s){return s.location!==a.location||s.revalidation!=="idle"&&a.revalidation==="idle"?{error:a.error,location:a.location,revalidation:a.revalidation}:{error:a.error!==void 0?a.error:s.error,location:s.location,revalidation:a.revalidation||s.revalidation}}componentDidCatch(a,s){this.props.onError?this.props.onError(a,s):console.error("React Router caught the following error during render",a)}render(){return this.state.error!==void 0?y.createElement(_n.Provider,{value:this.props.routeContext},y.createElement(bo.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function Tx({routeContext:a,match:s,children:i}){let r=y.useContext(xl);return r&&r.static&&r.staticContext&&(s.route.errorElement||s.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=s.route.id),y.createElement(_n.Provider,{value:a},i)}function Rx(a,s=[],i=null,r=null,f=null){if(a==null){if(!i)return null;if(i.errors)a=i.matches;else if(s.length===0&&!i.initialized&&i.matches.length>0)a=i.matches;else return null}let d=a,p=i?.errors;if(p!=null){let b=d.findIndex(S=>S.route.id&&p?.[S.route.id]!==void 0);Ve(b>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(p).join(",")}`),d=d.slice(0,Math.min(d.length,b+1))}let m=!1,g=-1;if(i)for(let b=0;b=0?d=d.slice(0,g+1):d=[d[0]];break}}}let v=i&&r?(b,S)=>{r(b,{location:i.location,params:i.matches?.[0]?.params??{},errorInfo:S})}:void 0;return d.reduceRight((b,S,R)=>{let N,E=!1,C=null,A=null;i&&(N=p&&S.route.id?p[S.route.id]:void 0,C=S.route.errorElement||wx,m&&(g<0&&R===0?(c0("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),E=!0,A=null):g===R&&(E=!0,A=S.route.hydrateFallbackElement||null)));let j=s.concat(d.slice(0,R+1)),M=()=>{let V;return N?V=C:E?V=A:S.route.Component?V=y.createElement(S.route.Component,null):S.route.element?V=S.route.element:V=b,y.createElement(Tx,{match:S,routeContext:{outlet:b,matches:j,isDataRoute:i!=null},children:V})};return i&&(S.route.ErrorBoundary||S.route.errorElement||R===0)?y.createElement(Cx,{location:i.location,revalidation:i.revalidation,component:C,error:N,children:M(),routeContext:{outlet:null,matches:j,isDataRoute:!0},onError:v}):M()},null)}function So(a){return`${a} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Mx(a){let s=y.useContext(xl);return Ve(s,So(a)),s}function _x(a){let s=y.useContext(vr);return Ve(s,So(a)),s}function Ox(a){let s=y.useContext(_n);return Ve(s,So(a)),s}function Ao(a){let s=Ox(a),i=s.matches[s.matches.length-1];return Ve(i.route.id,`${a} can only be used on routes that contain a unique "id"`),i.route.id}function Dx(){return Ao("useRouteId")}function kx(){let a=y.useContext(bo),s=_x("useRouteError"),i=Ao("useRouteError");return a!==void 0?a:s.errors?.[i]}function zx(){let{router:a}=Mx("useNavigate"),s=Ao("useNavigate"),i=y.useRef(!1);return r0(()=>{i.current=!0}),y.useCallback(async(f,d={})=>{Wt(i.current,i0),i.current&&(typeof f=="number"?a.navigate(f):await a.navigate(f,{fromRouteId:s,...d}))},[a,s])}var dp={};function c0(a,s,i){!s&&!dp[a]&&(dp[a]=!0,Wt(!1,i))}y.memo(Bx);function Bx({routes:a,future:s,state:i,unstable_onError:r}){return u0(a,void 0,i,r,s)}function lr(a){Ve(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function Lx({basename:a="/",children:s=null,location:i,navigationType:r="POP",navigator:f,static:d=!1}){Ve(!Cs(),"You cannot render a inside another . You should never have more than one in your app.");let p=a.replace(/^\/*/,"/"),m=y.useMemo(()=>({basename:p,navigator:f,static:d,future:{}}),[p,f,d]);typeof i=="string"&&(i=vl(i));let{pathname:g="/",search:v="",hash:b="",state:S=null,key:R="default"}=i,N=y.useMemo(()=>{let E=Mn(g,p);return E==null?null:{location:{pathname:E,search:v,hash:b,state:S,key:R},navigationType:r}},[p,g,v,b,S,R,r]);return Wt(N!=null,` is not able to match the URL "${g}${v}${b}" because it does not start with the basename, so the won't render anything.`),N==null?null:y.createElement(rn.Provider,{value:m},y.createElement(ws.Provider,{children:s,value:N}))}function Ux({children:a,location:s}){return qx(so(a),s)}function so(a,s=[]){let i=[];return y.Children.forEach(a,(r,f)=>{if(!y.isValidElement(r))return;let d=[...s,f];if(r.type===y.Fragment){i.push.apply(i,so(r.props.children,d));return}Ve(r.type===lr,`[${typeof r.type=="string"?r.type:r.type.name}] is not a component. All component children of must be a or `),Ve(!r.props.index||!r.props.children,"An index route cannot have child routes.");let p={id:r.props.id||d.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,middleware:r.props.middleware,loader:r.props.loader,action:r.props.action,hydrateFallbackElement:r.props.hydrateFallbackElement,HydrateFallback:r.props.HydrateFallback,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.hasErrorBoundary===!0||r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(p.children=so(r.props.children,d)),i.push(p)}),i}var sr="get",ir="application/x-www-form-urlencoded";function xr(a){return a!=null&&typeof a.tagName=="string"}function Hx(a){return xr(a)&&a.tagName.toLowerCase()==="button"}function Vx(a){return xr(a)&&a.tagName.toLowerCase()==="form"}function Yx(a){return xr(a)&&a.tagName.toLowerCase()==="input"}function Gx(a){return!!(a.metaKey||a.altKey||a.ctrlKey||a.shiftKey)}function Qx(a,s){return a.button===0&&(!s||s==="_self")&&!Gx(a)}var Fi=null;function Xx(){if(Fi===null)try{new FormData(document.createElement("form"),0),Fi=!1}catch{Fi=!0}return Fi}var Kx=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Gc(a){return a!=null&&!Kx.has(a)?(Wt(!1,`"${a}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${ir}"`),null):a}function Zx(a,s){let i,r,f,d,p;if(Vx(a)){let m=a.getAttribute("action");r=m?Mn(m,s):null,i=a.getAttribute("method")||sr,f=Gc(a.getAttribute("enctype"))||ir,d=new FormData(a)}else if(Hx(a)||Yx(a)&&(a.type==="submit"||a.type==="image")){let m=a.form;if(m==null)throw new Error('Cannot submit a - + + + ) : null} + )} /> - + {isAdmin ? : null} ); } diff --git a/webui/src/context/ChatContext.jsx b/webui/src/context/ChatContext.jsx index 0071c326..31143f8d 100644 --- a/webui/src/context/ChatContext.jsx +++ b/webui/src/context/ChatContext.jsx @@ -50,6 +50,24 @@ export function ChatProvider({ children }) { }; }, [playSound, session?.socketId, socket]); + useEffect(() => { + function handleInit(payload = []) { + if (!Array.isArray(payload)) return; + setMessages((prev) => { + if (prev.length === 0) { + return payload.slice(-100); + } + const seen = new Set(payload.map((entry) => entry?.id)); + const merged = [...payload, ...prev.filter((entry) => entry?.id && !seen.has(entry.id))]; + return merged.slice(-100); + }); + } + socket.on('chat:init', handleInit); + return () => { + socket.off('chat:init', handleInit); + }; + }, [socket]); + const sendMessage = useCallback( (text, tts = null) => new Promise((resolve, reject) => { diff --git a/webui/src/controls/commandPipeline.js b/webui/src/controls/commandPipeline.js index 9a45b6f7..968b11b9 100644 --- a/webui/src/controls/commandPipeline.js +++ b/webui/src/controls/commandPipeline.js @@ -32,9 +32,10 @@ export function useCommandPipeline() { }, [rosterEntry]); const emitCommand = useCallback( - (payload, cb) => { - if (!roverId) return; - socket.emit('command', { roverId, ...payload }, cb); + (payload, cb, targetRoverId) => { + const roverTarget = targetRoverId ?? roverId; + if (!roverTarget) return; + socket.emit('command', { roverId: roverTarget, ...payload }, cb); }, [socket, roverId], );